シャドウの詳細については、Maya のシャドウを参照してください。
深度マップ シャドウ アトリビュート(Depth Map Shadow Attributes)は、ライトによって生成される深度マップ シャドウの外観を制御します。
深度マップ シャドウの詳細については、深度マップ シャドウを参照してください。
オフに設定すると、深度マップ内の個々のピクセルごとに、ライトとライトに最も近いシャドウを投影するサーフェス間の距離が計算されます。シャドウを投影する別のサーフェスとライト間の距離が深度マップの距離よりも大きい場合は、そのサーフェスはシャドウの投影を受けます。
深度マップのピクセルは、シーンの大きなエリアに近いものに変換されてしまう場合があります。解像度(Resolution)の値を大きくするとこの現象を緩和できますが、問題はただ小さくなるだけでなくなりません。またこれによりレンダリング時間が長くなります。そのような場合に適切な解決方法は、中間距離の使用(Use Mid Dist)をオンに設定することです。
オンに設定すると、深度マップ内の個々のピクセルごとに、ライトと、ライトに最も近いシャドウを投影するサーフェスとの距離、およびライトと、2 番目にライトに近いサーフェスとの距離が計算されて、この 2 つの距離が平均されます。
シャドウを投影する別のサーフェスとライト間の距離が深度マップの距離よりも大きい場合は、そのサーフェスはシャドウの投影を受けます。中間距離の使用(Use Mid Dist)の既定の設定はオンです。
オンに設定すると、深度マップのサイズが自動的に調整され、ライトで照らされる全領域のうち、シャドウを投影するオブジェクトが存在する領域だけが深度マップの影響を受けるようになります。
たとえば、シャドウを投影するオブジェクトがスポット ライトのビームの中心部分だけに存在する場合は、それらのオブジェクトが占める領域だけが深度マップによって覆われます。解像度(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 です。
スライダ レンジは 0 ~ 1 ですが、もっと大きい値を入力することができます。既定値は 0.001 です。
ディスク ベース深度マップ(Disk Based Dmaps)
ライトの深度マップをディスクに保存し、それ以降のレンダー時に同じ深度マップを再利用できるようにします。深度マップをディスクに保存して後で再利用すれば、シーンのレンダリング時間を短縮することができます(深度マップを再利用するを参照してください)。深度マップは 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 です。
利用できるのは、ディスク ベースの深度マップ(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
#!/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 軸の正の方向(上)には深度マップを生成しません。
ライトによって生成されるレイ トレース シャドウの外観を制御します。
レイ トレース シャドウの詳細については、レイ トレース シャドウを参照してください。
ライトのサイズ(シャドウの半径(Shadow Radius)、ライトの半径(Light Radius))または角度(ライトの角度(Light Angle))を指定して、シャドウのエッジの柔らかさを調整します。たとえば、ライトのサイズを大きくすると、ライトが小さい場合よりもソフトなエッジのシャドウが生成されます。ライト グローで遮断/可視性を定義するときにもライトの半径が使用されます(ポイント ライトとスポット ライトの場合)。
シャドウの半径(Shadow Radius)アトリビュートは、アンビエント ライトでのみ使用できます。
ライトの半径(Light Radius)アトリビュートは、ポイント ライト、ボリューム ライト、スポット ライトでのみ使用できます。スライダ レンジは 0 (ハード シャドウ) ~ 1 (ソフト シャドウ)です。既定値は 0 です。
ライトの角度(Light Angle)アトリビュートはディレクショナル ライトとボリューム ライトでのみ使用できます。 スライダ レンジは 0 (ハード シャドウ) ~ 180 (ソフト シャドウ)です。既定値は 0 です。