【Post】V-Ray – リニアワークフロー&リニアライティング | UnitBus

【Post】V-Ray – リニアワークフロー&リニアライティング

このエントリーを Google ブックマーク に追加
[`evernote` not found]
Pocket

V-Rayのリニアワークフローと、リニアライティングを使用したsRGB出力を混じえて記事にしてみました。

=はじめに=
GI、IBL、V-Ray Sunなど使いたいけど、リニアワークフローってよく分からない。
V-RayのデフォルトのoutputフォーマットがPNGになってるけどどうしたらいいの?
と言う人向けにかいてみました。

リニアワークフローとは、簡単に言うと、
・普段目にしてるモニタに表示されてる画やテクスチャにはガンマ補正がかかってる。
・現実世界をシュミレーションするにはリニア空間で計算しないと間違いが起きる。
・リニア空間でしか正しく計算できないライティング方法がある。
・リニアはフォーマット、色幅、色深度が全然違う。
・リニアで計算したものは、モニタに正しく映すためにガンマ補正が必要。
と言った感じでしょうか?

リニアワークフローについては、詳細な説明をしてくれてるサイトはいっぱいありますのでそちらを参考にしてください。
リニアライティングとは、GI、IBL、V-Ray Sunなど、
リニア空間でしか正しく計算できないライティング方法を指しています。

出力をOpenEXRPNGにしぼって書いてみます。
OpenEXRはリニアなので、プレビューで確認するにはViewerの対応が必要です。
PNGはsRGBなので、そのまま見て問題ありません。

コンポジットも正しくリニアワークフローしたい時は、現状出力はOpenEXR一択です。
一応、TIFF(float)で出来なくもないですが、
フォーマットの仕様が複雑過ぎるので除きます(色々混乱を招くので、使わない方が無難です)。
実写合成で下画がリニアの場合、CGもリニアで出力し、同じラット(LUT)を適用すれば馴染みが格段に良くなります。

でも別にコンポジットって言っても、ちょっとカラコレする程度だし、
openEXRはデータサイズ大きくて嫌だ、AfterEffectsだと扱いにくい、
と言う方は出力にPNG、TGA、RGB、TIFF(float除く)など使うと思います。
こちらはsRGBなので、補正がかかった状態です。
この状態で、正しくリニアライティングして、出力する方法が知りたいと言う事が目的です。
リニアライティングは、GIやIBLを使わない普通のライティングでもちょっとは効果あるのでお試しください。

※ちなみに16bitフォーマットもsRGBです、色深度に幅があるだけで今まで通り扱えて便利です。
openEXRの16bitはリニアで、別物なので注意してください。

=設定=
本来リニア空間で計算する際は、
8bit(sRGB)テクスチャーにガンマ補正する必要があり、
すべてのテクスチャーに適用しないといけません。
VRayMtlの場合、Diffuseカラーにテクスチャを貼っていない場合にもガンマを適用しないといけません。
この手間を省く為に、vray側に便利な設定が用意されてます。
Linear workflow ONにする事で自動で適用できます(VRayFastSSSも対応)。
便利な事に、Diffuseのみに適用され、BumpやDisplacement、Reflectionなどのvalueマップ系は無視されます。

[exr] linear 32 or 16bit

vray_colormapping_linear
※Previewはgamma2.2です。

Dont`t affect colorsにチェックを入れると、
最終出力画にガンマの適用を防ぎます。つまりリニア(float)のまま保存する事が出来ます。

RenderViewで確認する場合、
RenderViewのDisplay > Color Management
でも変更できますが、vrayの設定だけで完結したい場合は、
RenderGlobal > V-Ray > Common > Resolusion > Convert image to sRGB for RenderView
が便利です。

V-Ray VFBを使う場合は、Display colors in sRGB spaceをONにします。

[png] sRGB 8bit or 16bit


※Previewはgamma1.0(そのまま)です。

Dont`t affect colors OFFにすることで、
最終出力画にガンマの適用をします。
これでリニアワークフローで出力した画像にガンマ2.2適用した場合と、見た目がほぼ同じになります。
※Convert image to sRGB for RenderViewと、Display colors in sRGB space
のチェックをOFFにするのを忘れないでください。

=その他=
VRayFastSSSの色が極端に変わってしまう場合は、次の2点を確認してみてください。
Sub-surface colorと、Scatter colorの色で、HSVのS値が1だと挙動がおかしくなります。
ちなみにHSVのS値を0.999にすると正常に戻ります。
あと、Extra Attributeに、Linear WorkflowのチェックがあるのでONにしてください(デフォルトON)。

Photoshopの場合、
見た目合わせで作成するとOpenEXRテクスチャーの色がおかしくなるので注意が必要です。
見た目があってる状態で作成するすべがわかりません。
調整レイヤーでレベル補正0.4555を入れながら作業して、保存の時に外す。
ぐらいしか思いつきません。誰か知ってたら教えて下さい。

※Photoshopで8bitから32bitに変換した場合、見た目補正が入ってリニア色になりません。
そのまま保存してテクスチャーに使うとエライ事になるので注意してください(CS5)。

=修正(2013.01.17)=
PhotoshopはデフォルトのinputプロファイルがsRGBになってるので、
32bitで作成した場合、見た目合わせで書くのが正解みたいです。
なので、32bitプレビューもgamma1.0で正解の模様。
実際にカラーピッカーに目的の色を数値入力しても、補正色で表示されます(数値で目的の色になりません)。

ただ注意が必要なのは、vrayの便利機能、Linear workflowチェックをONにしてしまうと、
リニアなはずのOpenEXR画像にも補正がかかってしまうようです。
なので、OpenEXRを読み込んだfileノードに、
追加アトリビュートでTexture input gammaを0.45555にするか、
Linear workflowのチェックをOFFにして、完全リニア環境にするしかありません。

Linear workflowのチェックをOFFした場合、
マテリアル(VRayMtlやVRayFastSSS)のDiffuseカラーにも補正も入れないといけないので大変です。
現状は8bit、16bitのsRGBでテクスチャーを作成する方が無難だと思います。
今後、OpenEXRのテクスチャーを考慮した設定に変わるのか、バージョンアップ変更点を注意して見る必要がありそうです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です