ふとリニアワークフローを勉強してみようかと思いましたが、思った以上に難しいです。
修正・加筆していくかもしれません。
リニアワークフローとは
ググれば色々解説があります。昔の規格をひきづって色々面倒なことになってます。
mtazmi-Lab: リニアワークフローて何?(専門用語抜き挿絵マシマシ)
物理ベースレンダリング -リニアワークフロー編 (1)- | Cygames Engineers’ Blog
こちらの記事を再現してみました。
環境構築
- オブジェクト SphereとPlaneを作成
- カメラ(Main Camera)の位置調整
- ライト(Directional Light)の色は白に
- マテリアル(New Material)Shader(Legacy Shaders/Diffuse)※床と球にアサイン
- ライト設定 Window>Lightingを開いてAmbient Source(Color)に。念のためReflection Source(Sustom)に
※Mayaで作成したシーンをUnityへ持ってきて調整しています。
リニア設定
Unity
カラースペースの切り替え
Edit>Project Settings>Player Settings>Color SpaceをLinearに
ライトとマテリアルの設定
リニア空間(ガンマ2.2の補正)を考慮して設定する。
入力したい数字に1/2.2(0.454545455)乗してをライトとマテリアル(テクスチャ)に入力する
ライトの強度
Intensity 4にしたいので、
4^(1/2.2)=1.878
Intensityに1.878を入力
マテリアルのカラー
Diffuse 0.1にしたいので、
(0.1^(1/2.2))*255=89.53538922
Main Colorに90を入力
一番明るい所がモニター上では
(強度×ディフューズ)^ 0.4545….
(4*0.1)^ (1/2.2)=0.659353291
0.66 (168/255)になる。
Maya
ライト
DirectionalLightのIntensity 4に
マテリアル
LambertのColorをRGB(0.1,0.1,0.1)にして、Diffuseを1に
カラースペースはRendering Space(デフォルト)のまま
レンダリング
そのままレンダリングして Save Color-Maneged Imageで保存
Unity同様一番明るい所がモニター上は0.66 (168/255)になる。
ガンマ設定
普段の状態です。比較して気がつくことがあるかもしれないので。
Unity
カラースペースの切り替え
Edit>Project Settings>Player Settings>Color SpaceをGammaに(デフォルト)
ライト
DirectionalLightのIntensity 4に
マテリアルのカラー
一番明るい場所を0.66 (168/255)にしたいので、
((168/255)/4)*255=42.03377227
Main Colorに42を入力
Maya
ライト
DirectionalLightのIntensity 4に
マテリアル
一番明るい場所を0.66 (168/255)にしたいので、
((168/255)/4)=0.164838323
LambertのColorをRGB(0.164,0.164,0.164)にして、Diffuseを1に
カラースペースはRendering Spaceのチェックを切る
リニアワークフローについてまとめ
LWFに関して、Mayaはそこまで手間があまりかからないのですが、
Unityはライトもマテリアルのカラーも補正を計算して入力しないといけないので面倒です。