V-Ray VFB2からのLUTをPhotoShopで使う
V-Ray 5 のVFB2のカラコレ結果をLUTファイルとして出力して、PhotoshopでRAWに割り当てた時「微妙に同じ結果にならない」「明るい場所が潰れる」 と思った事はないでしょうか。
これは、LUTフォーマットの仕様に基づいた制限により引き起こされます。
Chaosフォーラムのこちらのスレッドで開発者が以下の様に説明しています:
PhotoShop等のソフトで、RAW(Beauty 32bit)にLUTを割り当てても完全に再現されない原因は、LUTフォーマットの仕様に基づいた制限です:
1. 最小値と最大値の問題 – LUTが修正できる最小値と最大値
これらの値はフォーマットのデフォルト仕様で省略されており、LUTは基本的に値[0,1]用であると想定されています。すべてのソフトウェアが実際に他の値をサポートしているかどうかは正確にはわかりません。
ここで問題となるのは、実際にどのような値を最小値と最大値に置くかということです。スチル画像の境界を決めるのは簡単ですが、アニメーションの複数のフレームに同じLUTを適用したい場合はどうすればよいでしょうか?
2. 固定サイズの3次元テーブル
LUTファイルにはN×N×N個のサンプルポイントが含まれます。サンプルポイントは等間隔に配置されています。これが重要な制限です。つまり、範囲が[0,1]で32点の場合、0、0.0322、0.0644などの値があるということです。範囲が[0-100]の場合は、0、3.2258、6.4516、範囲が[0,10000]の場合は、0、322.58、645.16などの値が得られます。
したがって、[0,1]外の範囲をカバーする高い精度と十分な範囲が必要な場合は、非常に巨大なLUTファイルをエクスポートする必要があります。このLUTの適用には非常に時間がかかり現実的ではありません。
現在V-RayのVFB2からは、[0,1]の範囲でのみ3次元テーブルをエクスポートし、N = 32を使用しています。
簡単に言うと、VFB2 から出力したLUTには32/16bitのダイナミックレンジ内で、[0,1]範囲のカラーテーブル情報しか格納していない事を意味します。
つまり、VFB2から出力したLUTを使用して、PhotoShopで同じ見た目で適用するには、32/16bit RAWの広大なダイナミックレンジを[0,1]範囲に予める様にトーンマッピングしてからVFBでカラコレを適用し、そのLUTを出力する必要があるという事になります。
ChaosフォーラムのこちらのスレッドでPhotoShopにて単純なラインハルト(Reinhard)トーンマッピングを適用する方法が公開されています。
数式で表すと
y=x/(x+1)
(yはトーンマップ後の値、xがRAW値です)
これにより、32bitのダイナミックレンジが[0,1]範囲に収まります。
VFBではExposureレイヤーを使って、上記と同じ単純なラインハルト(Reinhard)トーンマッピングを適用できます。
ここでは、PhotoShopとVFB2で単純なラインハルトトーンマッピングを使って、[0,1]範囲に収めた状態にする例を示します。
まず、V-Ray からRGBデータをハイダイナミックレンジ(RAW)で出力します。
V-Ray からRAW RGBデータを出力する方法
3dsMaxでは Frame Buffer ロールアウトから OpenEXR もしくは vrimg を選択します。(3dsMax標準のレンダリング出力は使用する必要はありません)
Mayaでは、Image Outputから OpenEXR (Multi Channnel)、もしくは vrimg を選択します。
SketchUp, Rhinoでは、Render Outputから File Typeに exr形式もしくはvrimg形式を選択します。
CINEMA 4Dではレンダリング基本設定で、V-Rayネイティブ出力システムを有効化し、フォーマットにexrもしくはvrimgを選択します。(CINEMA 4Dの”保存”設定は使用しません。)
ここで出力したOpenEXRはマルチチャンネルEXRで、32bitもしくは16bit RAWデータで出力されます。また全てレンダーエレメントがレイヤーとして1つのOpenEXRファイルに格納された状態で出力されます。
PhotoShopでマルチチャンネルOpenEXRを読み込む
このマルチチャンネル OpenEXR を PhotoShopで読み込むには ProEXR プラグイン もしくは EXR I/O プラグインが必要です。どちらも無償ですのでぜひ導入しましょう。なお、ProEXRをインストールすると V-Ray専用の vrimg フォーマットも直接 PhotoShopで読み込める様になります。
Back to Beauty エレメント
ついでに、V-Ray 5の Back to Beauty エレメントも紹介します。
Back to Beauty エレメントは、反射やGI、屈折、自己照明、等の要素を合成して最終的なレンダリングRGBを再構成する為に必要なレンダーエレメントを1発で追加してくれる便利なレンダーエレメントユーティリティです。Back to Beauty エレメントは現在3dsMaxとMayaで利用できます。
(手動でBeauty合成用エレメントを追加する手間が省けるだけで、Back to Beauty エレメントに特別な機能はありません。)
SketchUp、Rhino、Revitでは、以下図の囲まれたエレメントを全て追加するとBack to Beauty エレメントになります。
CINEMA 4Dではレンダーエレメントマネージャーで Beauty を掴んで中央にドラッグ&ドロップするだけです。
PhotoShopでV-Ray RAWを読み込む
PhotoShopで、レンダリングしたマルチチャンネルOpenEXRもしくは vrimg を読み込みます。
以下の様なレイヤー構成になっているので、RGBレイヤーは非表示にするか、削除しても構いません。(Alphaチャンネルも表示には不要です)
他のレイヤーは全て合成モードを「覆い焼き(リニア)- 加算」に変更しまます。すると最終的なレンダリングRGBが再現されるのを確認できるはずです。
上記では合成用のエレメントをフォルダに纏めていますが、最終的な結果をBeautyと呼びます。
Reinhardトーンマップの適用
それでは、Beautyに単純なラインハルト(Reinhard)トーンマッピングを適用します。
Beautyに対してチャンネルミキサーを適用し、R,G,B の各”平行調整”を+200%にセットし、チャンネルミキサーを”除算”にセットします。
平行調整+200%は「(x+1)」を意味し、”除算”する事で「 x/(x+1)」 となり、これで単純ラインハルトトーンマッピングを再現した事になります。)
オリジナルのRGBと比較すると、[0,1]を超えるハイライト部分が[0,1]に抑えられているのを確認できます。
次に VFB2 で単純なラインハルト(Reinhard)トーンマッピングを適用した見た目にする方法です。
VFB2では Expsureレイヤーを追加し、 HighLight Burn を 0 にセットします。これで単純ラインハルトトーンマッピングを再現した状態と同じになります。
これで、PhotoShop と VFB でダイナミックレンジが [0,1] に収まった状態になりました。
カラコレを適用
この状態で、VFBでカラコレを行います。VFB2では一番下からレイヤーが重ねられて行く設計になっているので、HighLight Burn を 0 にセットしたExposureレイヤーをカラコレの一番下に配置する点に注意してください。
目的のカラコレを達成したら、LUTを出力します。
ここでVFB2から LUTを出力する場合に1つ注意です。LUTを出力する直前にHighLight Burn を 0 にセットしたExpsureレイヤーを無効化します。この状態でDisplay Correctionを右クリックしてLUTを出力してください。
PhotoShopにて、一番上にカラールックアップ調整レイヤーを追加します。VFBから出力したLUTファイルを読み込みましょう。
以上で、VFBのカラコレ結果(HighLight Burn を 0 にセットしたExpsureレイヤーを再度有効化)と一致する事を確認してください。
以下は、VFBからPNG (8bit)で保存した画像と、上記RAW+LUT適用画像の比較です。(VFBからJPEGやPNG等の8bitデータで保存するとカラコレが焼き込まれます。)
ついでにBeautyレイヤーを使って PhotoShop上でスペキュラを弱くしたり、反射を弱くしたり、色味を変更(Lightingエレメントをカラー調整)できます。
以上がVFB2からのLUTデータをPhotoShopで一致させる手順です。
最新記事 by Yamauchi (全て見る)
- V-Ray 7 for 3ds Max パブリックベータ - 2024-10-07
- Chaos Unboxed ロードマップをアナウンス - 2024-02-28
- MaterialX と V-Ray: 3Dクリエイティビティの次世代ワークフロー - 2024-02-26