シャドウの詳細については、Maya のシャドウを参照してください。
ライトによって生成されるシャドウのカラー。透明なカラー付きサーフェス(色付きグラスなど)によって生成されるシャドウをシミュレートする場合は、カラー付きのシャドウを使用します。既定の設定は黒です。
テクスチャをシャドウにマップすると、面白いエフェクトを作成できます。次の例では、スポット ライトのシャドウ カラー(Shadow Color)にマップされたチェッカ(Checker)テクスチャを示します。
カラー付きテクスチャをマップする場合は(たとえば、次の例にあるスタッコ(Stucco)テクスチャなど)、必要に応じてテクスチャのカラーを白黒に変更します。
深度マップ シャドウ アトリビュート(Depth Map Shadow Attributes)は、ライトによって生成される深度マップ シャドウの外観を制御します。
深度マップ シャドウの詳細については、深度マップ シャドウを参照してください。
オンに設定すると、ライトによって深度マップ シャドウが生成されます。深度マップ シャドウの使用(Use Depth Map Shadows)の既定はオフです。
ライトの深度マップ シャドウの解像度を指定します。
解像度(Resolution)の値が小さすぎる場合は、シャドウのエッジがギザギザに見えます。解像度(Resolution)の値を大きくするとレンダリング時間が長くなるため、深度マップの解像度は許容範囲の品質のシャドウが生成される最小値に設定してください。
解像度(Resolution)の初期値としては、レンダリングの解像度と同程度の値を使用してください。アニメーションの再生中にライトが移動する場合は、解像度(Resolution)の値を大きくしてシャドウが揺らめく現象(フリッカ)を防ぐ必要があります。スライダ レンジは 16~ 8192 です。既定値は 512 です。
オフに設定すると、深度マップ内の個々のピクセルごとに、ライトとライトに最も近いシャドウを投影するサーフェス間の距離が計算されます。シャドウを投影する別のサーフェスとライト間の距離が深度マップの距離よりも大きい場合は、そのサーフェスはシャドウの投影を受けます。
深度マップのピクセルは、シーンの大きなエリアに近いものに変換されてしまう場合があります。解像度(Resolution)の値を大きくするとこの現象を緩和できますが、問題はただ小さくなるだけでなくなりません。またこれによりレンダリング時間が長くなります。そのような場合に適切な解決方法は、中間距離の使用(Use Mid Dist)をオンに設定することです。
オンに設定すると、深度マップ内の個々のピクセルごとに、ライトと、ライトに最も近いシャドウを投影するサーフェスとの距離、およびライトと、2 番目にライトに近いサーフェスとの距離が計算されて、この 2 つの距離が平均されます。
シャドウを投影する別のサーフェスとライト間の距離が深度マップの距離よりも大きい場合は、そのサーフェスはシャドウの投影を受けます。中間距離の使用(Use Mid Dist)の既定の設定はオンです。
中間距離の使用(Use Mid Dist)がオンに設定されている場合は、シャドウを投影するサーフェス(シャドウの投影(Casts Shadows)アトリビュートがオンに設定されているサーフェス)のみ、そのサーフェスとライトとの距離が計算されます。
オンに設定すると、深度マップのサイズが自動的に調整され、ライトで照らされる全領域のうち、シャドウを投影するオブジェクトが存在する領域だけが深度マップの影響を受けるようになります。
たとえば、シャドウを投影するオブジェクトがスポット ライトのビームの中心部分だけに存在する場合は、それらのオブジェクトが占める領域だけが深度マップによって覆われます。解像度(Resolution)は絶対的な解像度値(1 インチあたりのピクセル数 ではなくピクセルの総数)であるため、深度マップのサイズを小さくすると、レンダリング時間は増加することなく、深度マップの解像度とシャドウの質が向上します。
オフの場合は、焦点(Focus)アトリビュート(ポイント ライトとスポット ライトの場合)または焦点幅(Width Focus)アトリビュート(ディレクショナル ライトの場合)を使用し、ライトで照らされる領域の内部で深度マップのサイズを手作業で調整することができます。自動焦点の使用(Use Auto Focus)の既定の設定はオンです。
ライトで照らされる領域内部で深度マップのサイズを調整するための角度(焦点(Focus))または幅(焦点幅(Width Focus))(自動焦点の使用(Use Auto Focus)をオンに設定すると、深度マップのサイズが自動的に調整されます)。
解像度(Resolution)は絶対的な解像度値(1 インチあたりのピクセル数 ではなくピクセルの総数)であるため、深度マップのサイズを小さくすると、レンダリング時間は増加することなく、深度マップの解像度とシャドウの質が向上します。
焦点(Focus)は、自動焦点の使用(Use Auto Focus)がオフの場合にポイント ライトとスポット ライトだけで利用できるアトリビュートです。スライダ レンジは 0~ 360 です。既定値は 90 です。
焦点幅(Width Focus)は、自動焦点の使用(Use Auto Focus)がオフの場合にディレクショナル ライトだけで利用できるアトリビュートです。有効な範囲は 0 ~無限大です。既定値は 100 です。
ライト位置の使用(Use Light Position)はディレクショナル ライトだけで利用できるアトリビュートです。オンの場合は、ディレクショナル ライトの前にあるオブジェクトだけが照らされてシャドウを投影します。オフの場合は、ディレクショナル ライトの前と後にあるオブジェクトが照らされてシャドウを投影します。
ライト位置の使用(Use Light Position)はディレクショナル ライトだけで利用できるアトリビュートです。ライト位置の使用(Use Light Position)の既定はオフです。
シャドウ エッジの柔らかさを制御します (シャドウのサイズと深度マップの解像度(Resolution)アトリビュートもシャドウ エッジの柔らかさに影響を与えます)。フィルタ サイズ(Filter Size)の値を大きくするとレンダリング時間が長くなるため、深度マップのフィルタ サイズを満足できる結果を実現できる最小の値に設定してください。通常、フィルタ サイズ(Filter Size)の値は 3 以下で十分な結果が得られます。有効な範囲は 0 ~無限大です。スライダ レンジは 0~ 5 です。既定値は 1 です。
非常にソフトなシャドウにする場合は、深度マップの解像度を低くしてからこの設定を調節します。
深度マップを一定の距離だけライトに近づけるかライトから遠ざけます。次のような問題が発生し、他のアトリビュートを調整しても問題を解決できない場合に限り、バイアス(Bias) アトリビュートを調整してください。
スライダ レンジは 0 ~ 1 ですが、もっと大きい値を入力することができます。既定値は 0.001 です。
ライト フォグの内部に現れるシャドウの暗さを調整します。値の範囲は 1 ~ 10 です。既定値は 1 です。
ライト フォグの内部に現れるシャドウの細かさを調整します。フォグ シャドウ サンプル(Fog Shadows Samples)の値を大きくするとレンダリング時間が長くなるため、満足できる結果を実現できる最小の値にフォグ シャドウ サンプルを設定してください。非常に幅の狭いオブジェクトからライト フォグに投影されるシャドウは、アニメーションの再生中にシフトする場合があります。そのような場合は、フォグ シャドウ サンプル(Fog Shadow Samples)アトリビュートの値を大きくしてください。既定値は 20 です。
ライトの深度マップをディスクに保存し、それ以降のレンダー時に同じ深度マップを再利用できるようにします。深度マップをディスクに保存して後で再利用すれば、シーンのレンダリング時間を短縮することができます(深度マップを再利用するを参照してください)。深度マップは renderDate/depth ディレクトリに保存されます。
Maya はレンダリング中に新しい深度マップを作成します。深度マップはディスクからは読み取られず、ディスクに保存もされない。
新しい深度マップが作成され、ディスクに保存されます。深度マップがディスク上にすでに存在する場合は、既存の深度マップが上書きされます。
深度マップをディスクに書き込むと、2 つの深度マップが得られます。1 つは最初にシャドウを投影するサーフェスで、もう 1 つは 2 番目にシャドウを投影するサーフェスです。
Maya は深度マップがすでにディスクに保存されているかどうかを確認します。既存の深度マップが存在する場合は、新しい深度マップは作成されず、既存の深度マップが再利用されます。深度マップが存在しない場合は、新しい深度マップが作成されてディスクに保存されます。
深度マップをディスクに保存するように設定した場合は、renderDate/depth ディレクトリを時々チェックして不要な深度マップ ファイルを除去してください。
ディスクに保存される深度マップ ファイルの名前。このファイル名には、シーン名(シーン名の追加(Add Scene Name)がオンの場合)、ライト名(ライト名の追加(Add Light Name)がオンの場合)、フレーム拡張子(フレーム拡張子の追加(Add Frame Ext)がオンの場合)を含めることができます。シャドウ マップのファイル名(Shadow Map File Name)アトリビュートを使用できるのは、ディスク ベース深度マップ(Disk Based Dmaps)アトリビュートが既存の深度マップの上書き(Overwrite Existing Dmap(s))または既存の深度マップの再使用(Reuse Existing Dmap(s))に設定されている場合に限られます。深度マップは renderDate/depth ディレクトリに保存されます。既定の深度マップ ファイル名は depthmap です。
ディスクに保存される深度マップ ファイルの名前にシーン名を追加します。シーン名の追加(Add Scene Name)の既定はオフです。
ディスクに保存される深度マップ ファイルの名前にライト名を追加します。ライト名の追加(Add Light Name)の既定はオンです。
オンに設定されている場合は、個々のフレーム用の深度マップが保存され、深度マップ ファイルの名前にフレーム拡張子が追加されます。オフの場合は、アニメーション全体の深度マップ ファイルが 1 つだけ保存され、深度マップ ファイルの名前にフレーム拡張子は追加されません。(既定ではオフに設定されています。)
利用できるのは、ディスク ベースの深度マップ(Disk Based Dmaps)が既存の深度マップの再使用(Reuse Existing Dmap(s))に設定されている場合に限られます。ディスクから深度マップを読み取る場合に、その深度マップを更新するために実行されるマクロ スクリプトのパス名。マクロの使用(Add Use Macro)の主な使用目的はトラブルシューティング(デバッグ)です。
マクロ スクリプトには、ディスク上の深度マップの作成または更新に必要な全情報が記述されます。次のサンプルは Perl で書かれています。このマクロによって深度マップの作成または後処理(更新)が行われます。任意の高さまたは幅の深度マップを変更または作成できます。IFF Z- 深度マップ ファイルで指定されたサイズが調べられ、使用されます。深度マップがディスクから読み取られるたびに、マクロがコールされます。たとえば、ポイント ライトの場合はマクロが何回かコールされて、最大 6 個の深度マップが操作されます。
引数の名前は新しい引数を簡単に追加できるように命名されています。スクリプトに渡される引数は次のとおりです。
mapname=FullPathMapName,middistmapname=FullPathMidDistMapName, lightname=LightShapeNameUsed,pathname=ShadowMapPathUsed, readanimextname=RedExtUsed,curranimextname=CurrExt, lastdumpanimextname=lastExtDumped,bias=biasValue
Perl マクロ スクリプトの例を次に示します。
#!/bin/perl # # Example of a callback macro called before reading shadow maps from disk # # # One argument with fields separated by '&' # each field being 'variableName=variableValue # # Creates a vartab hash table out of the ARGV[0] argument # # print "\n------------------\n",$ARGV[0],"\n------------------\n"; if( $#ARGV == 0 ) { @fields = split( /\,/, $ARGV[0] ); $nbfields = $#fields + 1; foreach $field( @fields ) { @varvalue = split( /\=/, $field ); $vartab{$varvalue[0]} = $varvalue[1]; } $mapname = $vartab{"mapname"}; $middistmapname = $vartab{"middistmapname"}; $lightname = $vartab{"lightname"}; $pathname = $vartab{"pathname"}; $readanimextname = $vartab{"readanimextname"}; $curranimextname = $vartab{"curranimextname"}; $lastdumpanimextname = $vartab{"lastdumpanimextname"}; $bias = $vartab{"bias"}; print "\tmapname = ",$mapname,"\n"; print "\tmiddistmapname = ",$middistmapname,"\n"; print "\tlightname = ",$lightname,"\n"; print "\tpathname = ",$pathname,"\n"; print "\treadanimextname = ",$readanimextname,"\n"; print "\tcurranimextname = ",$curranimextname,"\n"; print "\tlastdumpanimextname = ",$lastdumpanimextname,"\n"; print "\tbias = ",$bias,"\n"; # # List the shadow map files to be postprocessed # print "\n"; if ( -e $mapname ) { print "PostProcess shadow depth map file ",$mapname,"\n"; } if ( -e $middistmapname ) { print "PostProcess shadow depth map file ",$middistmapname,"\n"; } # # return 0 to confirm everything is ok # exit 0; }
利用できるのはスポット ライトの場合のみです。
オンに設定すると、スポット ライト用に単一の深度マップが生成されます。通常、円錐角度(Cone Angle)が 90 度未満の場合は単一の深度マップで十分ですが、円錐角度(Cone Angle)が 90 度を越えると、解像度(Resolution)の値が十分に大きくないために質の高いシャドウが作成されない場合があります(シャドウのエッジがギザギザに見えます)。円錐角度(Cone Angle)の値が大きい場合は、単一の深度マップのみを使用(Use Only Single Dmap)をオフにしてください。単一の深度マップのみを使用(Use Only Single Dmap)の既定の設定はオンです。
オフの場合は、各スポット ライト用に最大 5 個の深度マップが生成されます。個々の深度マップは 6 方向(正負の X 軸方向、正負のY軸方向、正負のZ軸方向)のうち 1 つの方向にあるライトを基点として広がります。各深度マップの解像度は、解像度(Resolution)で指定される値になります。
スポット ライトは円錐角度(Cone Angle)が大きい場合でも質の高いシャドウを生成します。ライト用に複数の深度マップが作成されるために、レンダリング時間が長くなる場合があります。ただし、XYZ+- マップの使用(Use XYZ+- Map)アトリビュートのオン/オフを切り替えて、深度マップの方向と数を制御することができます。
これらのアトリビュートは、スポット 単一の深度マップのみを使用(Use Only Single Dmap)がオフの場合)とポイント ライトだけで利用できます。これらのアトリビュートの既定の設定はオンです。
ライト用に生成される深度マップの方向と数を制御します。たとえば、X+ マップの使用(Use X+ Map)をオンに設定すると、正のX軸方向にライト用の深度マップが生成されます。
Maya では、スポット ライト用に最大 5 個の深度マップ、ポイント ライト用に最大 6 個の深度マップを生成することができます。ただし、通常は、いくつかの特定の方向だけにシャドウを投影すれば十分です。特定の方向の深度マップをオフにすると、レンダリング時間が短縮されます。たとえば、シーンの一番上にポイント ライトがあり、影を落とすすべてのオブジェクトがライトの下にある場合、Y+ マップの使用(Use Y+ Map)をオフに設定することができます(シーンでは Y の正の座標系が使用されていると想定)。その場合、Maya は Y 軸の正の方向(上)には深度マップを生成しません。
ライトによって生成されるレイ トレース シャドウの外観を制御します。
レイ トレース シャドウの詳細については、レイ トレース シャドウを参照してください。
オンに設定すると、シーンがレイ トレーシングされる(つまりレンダー設定(Render Settings)ウィンドウでレイトレーシング(Raytracing)がオンに設定されている)場合、ライトによってレイ トレーシング シャドウが生成されます。レイ トレース シャドウの使用のデフォルトはオフです。
ライトのサイズ(シャドウの半径、ライトの半径)または角度(ライトの角度)を指定して、シャドウのエッジの柔らかさを調整します。たとえば、ライトのサイズを大きくすると、ライトが小さい場合よりもソフトなエッジのシャドウが生成されます。ライト グローで遮断/可視性を定義するときにもライトの半径が使用されます(ポイント ライトとスポット ライトの場合)。
シャドウの半径アトリビュートは、アンビエント ライトでのみ使用できます。
Light Radius アトリビュートは、ポイント ライト、ボリューム ライト、スポット ライトでのみ使用できます。スライダ レンジは 0 (ハード シャドウ) ~ 1 (ソフト シャドウ)です。既定値は 0 です。
ライトの角度(Light Angle)アトリビュートはディレクショナル ライトとボリューム ライトでのみ使用できます。 スライダ レンジは 0(ハード シャドウ)~ 180(ソフト シャドウ)です。既定値は 0 です。
シャドウのエッジの粒子度を調整します。シャドウ レイ(Shadow Rays)の値を大きくするとレンダリング時間が長くなるため、シャドウ レイを満足できる結果を実現できる最小の値に設定してください。スライダレンジは 1 ~ 40 です。レンダー パスの既定の設定は 1 です。
レイ深度の最大値はライトからの光線が反射/屈折される最大回数を指定します(この値を超えて光線が反射/屈折されると、オブジェクトからシャドウが投影されなくなります)。光線の方向が変わる点の間にある透明なオブジェクトが、ライトの光線を途切れさせてしまうことはありません。レイ深度の最大値の動作は、レイ トレースされたシャドウが地表プレーンと反射プレーンの両方で表示される例で、最もわかりやすい形で見ることができます。レイ深度の最大値が 1 のとき、シャドウは地表プレーンでのみ可視になります。レイ深度の最大値が 2 のとき、シャドウは地表プレーンと反射プレーンで可視になります。