チュートリアル / 宋さんの3ds Max キッチンスタジアム
第5回:拡散反射光 RGBレベルに注意!
- 3ds Max
- コラム
- チュートリアル
- ビジュアライゼーション
- レンダリング
拡散反射光(ディフューズカラー)
拡散反射光はオブジェクト自体が持つ色の要素です。拡散反射光はその名前の通り、光が物体にあたり反射拡散する色のことを指します。白い光が赤い玉に当たれば、赤い光に変化しその周囲に拡散します。その光の一部が、人間の目の網膜に届けば、人間はそれが赤い玉であると認識します。3DCGでもこの原理は同じで、カメラの座標に届くRGBの値を視覚したものになります。つまり、ライトから発せられた光(レイ)がオブジェクトにあたった角度によって、拡散される光の強度が変わっていきます。浅く入った光は暗く、垂直に入った光は明るく認識されます。つまり鏡面反射と違いカメラの位置や角度には影響されません。
A :入射角が浅い>RGB値は低い
B : 入射角が深い>RGB値は高い
光の発散
3D CGの初心者にありがちな間違いとして、拡散反射カラーの設定ミスがあります。前項で説明したとおり、拡散反射光は光が物体にあたって拡散する光の色です。現実世界の物体では照射された光がすべて発散することはほとんどあり得ません。どういう事かというと、必ず光は物体に当たった瞬間に、ある程度物体に吸収・減衰されるという事です。例えば、光を当てた木綿の生地を裏側から見ると、光はある程度透過されるのがわかります。つまり表側に拡散される光の強度は照射された光のせいぜい30%ほどもあればよいでしょう。IORと同様に、様々な素材によって光の反射率は変化します。ここでの反射率とは鏡面反射ではなく、拡散反射のことを意味します。一般的に反射率が100%のものは発光体を指します。
3DCGで設定する場合、この光の吸収はソフトウエアで自動的に計算を行いません。ですので設定される方が、状況に応じてマテリアルをコントロールする必要があります。
試しに白、青、赤の壁だけで構成されたシーンをレンダリングします。グローバルイルミネーションとファイナルギャザリングをともに有効にした例です。各壁色はRGBをそれぞれ最大値にした例です。現実世界ではありえないカラー設定ですが、よく犯しがちなミスです。
赤、青の壁に関しては、彩度が飽和して陰影も判別できなくなっています。白い壁も白とびが激しく正確な描画とは言えません。さらには赤、青の壁からの色にじみ(カラーブリード)が激しく白い壁がピンク系に染まってしまってます。
白の壁は光があたって初めて白になるので、ベースの拡散反射カラーはグレーに設定しなければなりません。
では、各マテリアルの拡散反射光レベルを全て60%ほど落としてみます。
先程のサンプルよりかなり自然なトーンに変化しているのがわかります。マテリアルエディターのサンプルではかなりグレーに見える白もレンダリングすると自然な白に感じられます。
最後に色を持つ壁部分だけの明度をさらに落とし40%ほどにしてみます。各彩度の情報もカラーセレクターから10%ほど落とし、露出制御で全体のトーンを整えてみます。
全体的にかなり自然な状態になり、最初のサンプルと違って色にじみもほとんど気にならなくなっています。
このように拡散反射光の設定時には、実際の物体がそうであるように、光の吸収と減衰を考慮してカラー設定を行う必要があります。
グローバルイルミネーションで問題となる「色にじみ」はこの基本を理解していれば、特に問題にはなりません。
3ds Maxのマテリアルエディターでは、各マテリアルの反射率と透過率を数値で確認することができます。マテリアル設定の際はこの値に留意してカラー設定を行うとミスを避けることができます。
3dsMax Designでは規定値で表示されていますが、3ds Maxをご使用の際は、カスタマイズメニュー>基本設定>Radiosity>マテリアルエディター の項目で設定できます。
テクスチャーマップを設定している場合では単純に輝度を落としただけでは求める質感に達しない場合があります。このようなケースでは[カラー補正]マップを使い彩度の調整を行う事ができます。
拡散反射光レベルが最大値の場合
各マテリアルのカラー情報が飽和しています。
左壁にある木目柄に関してはかなり輝度情報が上がってしまってます。さらに、先程同様に白壁も完全に白とびしています。
先程と同様に拡散反射光レベルを各マテリアルで60%ほど落とし、レンダリング。全体的に落ち着いた状態になりますが、左壁のテクスチャーの彩度が強すぎるようです。
このテクスチャーに対して[カラー補正]マップをオーバーラップさせ、彩度のコントロールを行います。
ここでは[カラー]ロールアウト内の[彩度]を50%ほど思い切って落とします。
再度レンダリングすると、全体のトーンのバランスが整っているのがわかります。
最終的に鏡面反射光の要素を加えてみると上のような画像になります。
ここでの鏡面反射の設定は木目方向に異方性反射をやや強めにかけています。これは先程の金属設定と同じ考え方と手法です。拡散反射光のレベル調整がいかに最終レンダリングの影響を及ぼすのかをご理解いただけると思います。
拡散反射の反射率はIORと同様、その素材によってある程度物理的な値が決まっています。
この値の中で最小値と最大値と分けられているのはそれ自身の色の情報によって反射率が大きく変動するからです。基本的に暗い色は光の吸収が大きくなるので反射率は低くなり、明度の高い色柄の場合は反射率が高くなります。
ですので、全体のシーンの状態を見ながら適時反射レベルや彩度の調整などを行う必要があります。また使用するテクスチャーの作成をどのように行ったか?あるいはそのテクスチャーのガンマ設定やカラープロファイルの状態によっても大きく変化していきます。
あくまでも上記反射率の情報は目安としてお考えください。設定時には最大値を超えないよう注意すれば大きなミスを犯すことはないと思います。(低すぎるかな、と思うぐらいがちょうどよいかもしれません)
最終イメージでは拡散反射光と鏡面反射光の組み合わせによってレンダリングイメージが決定されますので、その結果をある程度予測し、パラメータの調整を行う必要があります。
シーン内のマテリアルの調整をする際にすべてのマテリアル鏡面反射を0にし、まずは拡散反射光の値を決定する方法もあります。特にテクスチャーマップを多く使用しているシーンでは、テストレンダリングの時間を節約することもできますし、鏡面反射光によって起きるマテリアルの変化を受けずにカラー調整が可能になるため、正確なマテリアル設定が可能になります。
拡散反射光の設定が終了した段階で、各素材にあったIORの設定を行い、シーンを仕上げていくのは効率的なワークフローといえます。
では次に最後の光の要素である周囲光(アンビエントライト)について考察しましょう。