もしUnityが使用しているものと別の焼き込み設定が必要な場合,カスタムの Beast 設定を使用することで指定できます。
BeastはXML形式で定義された焼き込み設定を読み込みます。通常UnityはLightmap Editor ウィンドウのBakeペインおよびその他ふくすの内部設定によりXMLファイルを生成します。それらの設定は自身の設定をBeastのXML形式で指定することでオーバーライドできます。
UnityによりXMLファイルを自動生成するにはLightmap Editor ウィンドウの右上隅にあるタブメニューをクリックして Generate Beast settings file を選択します。BeastSettings.xml ファイルがプロジェクトのライトマップの隣に表示されること,さらにはLightmap EditorがXML設定が次の焼き込みの際にUnity設定をオーバーライドすることに気付きます。カスタム設定を編集するには open ボタンをクリックします。
簡単なBeast コンフィグ ファイルは次の通りです:-
<?xml version="1.0" encoding="ISO-8859-1"?>
<ILConfig>
<AASettings>
<samplingMode>Adaptive</samplingMode>
<clamp>false</clamp>
<contrast>0.1</contrast>
<diagnose>false</diagnose>
<minSampleRate>0</minSampleRate>
<maxSampleRate>2</maxSampleRate>
<filter>Gauss</filter>
<filterSize>
<x>2.2</x>
<y>2.2</y>
</filterSize>
</AASettings>
<RenderSettings>
<bias>0</bias>
<maxShadowRays>10000</maxShadowRays>
<maxRayDepth>6</maxRayDepth>
</RenderSettings>
<EnvironmentSettings>
<giEnvironment>SkyLight</giEnvironment>
<skyLightColor>
<r>0.86</r>
<g>0.93</g>
<b>1</b>
<a>1</a>
</skyLightColor>
<giEnvironmentIntensity>0</giEnvironmentIntensity>
</EnvironmentSettings>
<FrameSettings>
<inputGamma>1</inputGamma>
</FrameSettings>
<GISettings>
<enableGI>true</enableGI>
<fgPreview>false</fgPreview>
<fgRays>1000</fgRays>
<fgContrastThreshold>0.05</fgContrastThreshold>
<fgGradientThreshold>0</fgGradientThreshold>
<fgCheckVisibility>true</fgCheckVisibility>
<fgInterpolationPoints>15</fgInterpolationPoints>
<fgDepth>1</fgDepth>
<primaryIntegrator>FinalGather</primaryIntegrator>
<primaryIntensity>1</primaryIntensity>
<primarySaturation>1</primarySaturation>
<secondaryIntegrator>None</secondaryIntegrator>
<secondaryIntensity>1</secondaryIntensity>
<secondarySaturation>1</secondarySaturation>
<fgAOInfluence>0</fgAOInfluence>
<fgAOMaxDistance>0.223798</fgAOMaxDistance>
<fgAOContrast>1</fgAOContrast>
<fgAOScale>2.0525</fgAOScale>
</GISettings>
<SurfaceTransferSettings>
<frontRange>0.0</frontRange>
<frontBias>0.0</frontBias>
<backRange>2.0</backRange>
<backBias>-1.0</backBias>
<selectionMode>Normal</selectionMode>
</SurfaceTransferSettings>
<TextureBakeSettings>
<bgColor>
<r>1</r>
<g>1</g>
<b>1</b>
<a>1</a>
</bgColor>
<bilinearFilter>true</bilinearFilter>
<conservativeRasterization>true</conservativeRasterization>
<edgeDilation>3</edgeDilation>
</TextureBakeSettings>
</ILConfig>
最上位のXML要素はサブ要素とともに以降のセクションで説明します。
BeastはライトマップをサンプリングするときにAdaptive Samplingスキームを使用します。ユーザー定義したコントラスト閾値よりもライトの差がないとBeastはエリアに追加のサンプルを配置しません。サンプルエリアは最大と最小のサンプルレートにより定義されます。ユーザはサンプルレートを –4 から 4 の範囲で定義し,Beastはピクセル毎に 1/256 サンプルから ピクセル毎に 256 サンプル(計算式は: サンプルレートの4乗です)します。本番リリースの用途では,ピクセル毎に 少なくともひとつのサンプルを使用することを推奨します (最小のサンプルレート = 0 )。アンダー サンプリングはカメラのレンダリングまたは大きなUVパッチのあるテクスチャを焼き込みするときにもっとも便利です。Beastがエリアで必要なサンプリングを全て取得したとき最終ピクセル値はフィルタを使用して重み付き計算をします。フィルタが生成する見た目は使用されるフィルタの種類およびフィルタ カーネルの大きさに依存します。利用可能なフィルタは:
フィルタは他にも利用可能ですが,この三つが最も便利です。カーネル(フィルタ)サイズはピクセル単位で1–3の範囲で定義します。Beastはフィルタリングの際に全てのサブピクセルを使用するため,Photoshopで後から実行するよりも良い結果が得られます。
プロパティ: | 特徴: |
---|---|
AASettings | |
samplingMode | 使用するサンプリング 方式。デフォルト値は Adaptive。Adaptive: アンダー/オーバー サンプリングで使用出来る Adaptive なアンチエイリアス方式(ピクセル毎に 1/256 サンプルから 256 サンプルまで)。SuperSampling: スーパー サンプリングのアンチエイリアス方式(ピクセル毎に 1サンプルから 128 サンプルまで) |
minSampleRate | 最小サンプルレートをセット,デフォルト値は0 (すなわちピクセル毎に1サンプル)。 |
maxSampleRate | 最大サンプルレートをセット,計算式は4maxSampleRate (ピクセル毎に1, 4, 16, 64, 256 サンプル)。 |
contrast | サンプルがより多く必要であるか制御するコントラスト変数。necessary - 低い値とすることでサンプル数が増加 。 |
filter | どのフィルタの種類を使用するか。 焼き込みに便利なのは Box, Triangle および Gauss |
filterSize | フィルタ サイズをピクセル単位で指定,値は 1 から 3。 |
diagnose | サンプリングの診断を有効化。ピクセルが明るいほどその位置でとられるサンプルが増加。 |
これらの設定はライトマップのラスタライズおよびテクスチャからの読み込みに純粋に起因するが画像の乱れを取り除くのに役立ちます。
プロパティ: | 特徴: |
---|---|
TextureBakeSettings | |
edgeDilation | 指定されたピクセル数でレンダリング領域を拡大します。のれはGPUのフィルタによや周囲のレンダリング領域から空のピクセルを取り込んで画像の乱れが発生することを防止する場合に必要です。ただし0にセットすべきであり,より良いアルゴリズムが重要なパイプラインの一部であるためです。 |
bilinearFilter | GPUがbilinear フィルタリングを適用するときにライトマップのデータが “正しい” ことを確認します。これはアトラスが密に詰め込みされているときにに最も顕著です。もし二つの異なるUVパッチの間に1ピクセルしかない場合,Beastのbilinear機能により正しいパッチからのカラーで塗られるようにします。これによりライトのシームが最小化されます。 |
conservativeRasterization | UVチャートがピクセル全体をカバーしない時に使用されます。もしそのようなレイアウトご使用された場合,Beastはテクセルを誤って見逃すことがあります。もし保守的なラスタライゼーションが使用されればBeastはUVレイアウトがあれば見つけることを保証します。Beastがピクセルの任意のUVレイアウトを選択することに留意して下さい。UVアトラスが低解像度で密に詰め込みされてる場合,または,非常に細いオブジェクトが存在する場合,保守的なラスタライゼーションはオフにする必要ごあるかもしれません。 |
bgColor | ライトマップの背景色。白 (1,1,1,1)にセットすべきです。 |
Beastの環境設定は,全ての物体に当たらない場合にどうするかを制御します。環境要素は,一定の色か,Image Based Lighting (IBL) の緯度経度形式のHDR画像を取ることが出来ます。環境要素は,無限に遠いと捉えて問題ない場合のエフェクトでしようすべきであることに留意して下さい。すなわち指向性コンポーネントのみが意味を持ちます。
環境要素を定義することにより美しい外の光の照射を得る良い方法ですが焼き込みの時間を増加させます。
プロパティ: | 特徴: |
---|---|
EnvironmentSettings | |
giEnvironment | 環境の種類: None, Skylight または IBL(Image Based Lighting)。 |
giEnvironmentIntensity | ガンマ補正エラーの回避や,HDR テクスチャのをシーンにあわせて拡大縮小するための強度を示すスケール係数 (Unityでは: Sky Light Intensity) |
skyLightColor | 環境の定数値のカラー。種類が Skylight の場合に使用されます。カラーを 1.0 以下の強度とすることで,ガンマ補正による増幅を回避するのが良い考えです。代わりに強度の増幅はgiEnvironmentIntensity で行います。(Unityでは: Sky Light Color) |
iblImageFile | 高ダイナミックレンジ IBL (Image Based Lighting)背景画像を緯度経度形式,.HDR または .EXR,絶対パスで指定。 |
Ray でトレースしたシャドウの設定
プロパティ: | 特徴: |
---|---|
RenderSettings | |
bias | シャドウ Ray の二重交差を回避するためのエラー閾値。例えば,シャドウ Ray は プライマリ Ray と同じ三角形と交差するべきではありませんが,数値の精度によってはこれが発生します。バイアス値は交差点を移動してこの問題を解消します。もしゼロにセットした場合,この値はシーンサイズによって自動的に計算されます。 |
maxShadowRays | いずれかの光源に対するソフトシャドウを生成する際に使用される点あたりのシャドウ Ray の最大数。これを使用すると,ソフトシャドウの品質低下と引き換えにレンダリング時間を短縮します。これにより,いずれかの光源で shadowSamples 設定より大きい値の場合はに投影される Ray の最大数を減らしますが,shadowSamples が低い値に設定された場合に数字を下げるものではありません。 |
maxRayDepth | Ray が 消滅するまで跳ね返りができる最大回数。跳ね返りは反射または屈折のいずれかがありえます。もし Ray が多くの透明の三角形を通過しても不透明のオブジェクトに当たり,その結果シャドウであるべきところに光がある場合はこの値を増加させて下さい。良くある不具合のケース: 山の陰にある,アルファテスト設定の枝葉がついた樹木。 |
giTransparencyDepth | 大域照明 Ray の最大透明デプス,すなわち Ray の光が完全に吸収されるまでに通過できる透明な表面の数です。低い値に設定することで,例えば 密度の濃い枝葉のシーンで,レンダリング速度があがりますが,重複した透明オブジェクトがシャドウを投影しすぎる不具合が起きることがあります。デフォルトは 2 です。 |
大域照明(Global Illumination) システムにより二つの異なるアルゴリズムを使用して間接ライティングを計算します。例えば複数のレベルの光の跳ね返りを,Path Tracer(パス トレーシング) のような高速なアルゴリズムで計算できて,さらに最終の跳ね返りを Final Gather(ファイナル ギャザリング)により計算して,高速かつ高品質な大域照明レンダラが得られます。両方のサブシステムは個別に Intensity および Saturation を制御して必要に応じて効果を増幅させます。
FinalGather をプライマリ インテグレータとして使用して,None または PathTracer をセカンダリ インテグレータとすることを推奨します。 Unity は最初のオプション(つまり FinalGather のみ)デフォルトにしていて,ほとんどのケースでベストの品質でレンダリングします。PathTracer はもし間接の跳ね返りが必要とされていて,FinalGather のみでのソリューションが品質は高いもののレンダリング時間がかかりすぎる場合に使用すべきです。
プロパティ: | 特徴: |
---|---|
GISettings | |
enableGI | true をセットすることで大域照明を有効化。 |
primaryIntegrator | 間接照明の最終計算に使用されるインテグレータ。デフォルト値はFinalGather。 |
secondaryIntegrator | 間接照明のの初期の跳ね返りに使用されるインテグレータ。デフォルト値は None,任意でPathTracerを指定できます。 |
primaryIntensity | 後処理として,プライマリ インテグレータの結果の色をRGB から HSV に変換し,V 値をスケールします。(Unityでは: Bounce Intensity) |
primarySaturation | 後処理として,プライマリ インテグレータの結果の色をRGB から HSV に変換し,S 値をスケールします。 |
secondaryIntensity | 後処理として,セカンダリ インテグレータの結果の色をRGB から HSV に変換し,V 値をスケールします。 |
secondarySaturation | 後処理として,セカンダリ インテグレータの結果の色をRGB から HSV に変換し,S 値をスケールします。 |
diffuseBoost | この設定を使用して暗いシーンでのライトの跳ね返りを誇張できます。1 より大きい値に設定することで大域照明計算のマテリアルの拡散カラーを1に近づけます。典型的な使用場面は暗いマテリアルが生成されたシーンであり,暗いマテリアルを強い光源で相殺することが良いであるため直接照明のみがあるときに発生しやすくなります。これらのシーンでは,跳ね返ったライトがすぐにフェードアウトするため,間接照明はかすかになります。拡散の増幅を設定することで相殺することが出来ます。0 から 1 の範囲の値は,マテリアルよりもライトの跳ね返りを少なくすることで拡散設定を似た方法で減少させ,0 より小さい値は無効です。実際に行われる計算はコンポーネント毎の pow(colorComponent, (1.0 / diffuseBoost)) です。(Unityでは: Bounce Boost) |
fgPreview | 最終画像でのライティングのクイック プレビューを有効化。 |
以下の設定によりファイナルギャザリング手法の品質や正確さを制御します。通常の使用するシナリオとしては:
ステップ 2 および 3 は多くのシーンで微調整がほとんど必要ないはずです。
プロパティ: | 特徴: |
---|---|
GISettings | |
fgContrastThreshold | 事前計算のときの点の間のコントラスト差分についてのファイナルギャザリングの感度を制御します。もしコントラスト差分が近隣の点について,この閾値より高い場合,より多くの点がその領域に作成されます。アルゴリズムに対して,本当に必要な点にすなわちシャドウの境界または間接照明が素早く変化する点に,配置するように指示します。したがってこの閾値はシーンに作成される点を adaptive に制御します。もしファイナルギャザリングに低い数の Ray が使用される場合,点は大きなバラツキが生じ,結果的に大きなコンストラストの差分が出来る点に留意して下さい。このケースにおいては,Contrast Threshold は以前の点の数に戻して,点をまとめたり Ray の使用をシンプルにして工夫する必要があります。(Unityでは: Contrast Threshold) |
fgRays | 各ファイナルギャザリングのサンプリングでの Ray の最大数。Ray が多いほど良い結果は得られますが,評価に時間がかかります。(Unityでは: Final Gather Rays) |
fgCheckVisibility | 有効化すると,壁を通過するライトの漏れを減らすのに使用できます。補完を行う点が収集されると,それらのうちいくつかの点は物体の逆側に配置されることがあります。結果として物体を通過する形にライトが漏れます。これを防止するためBeastは表示出来ない点をはじくことが出来ます。 |
fgCheckVisibilityDepth | 跳ね返りの回数がどれくらいであると表示チェックを実行するか制御します。もし複数の跳ね返りのファイナルギャザリングでライトの漏れがある場合のみ調整してください。 |
fgLightLeakReduction | この設定は,ファイナルギャザリングをプライマリの大域照明,そしてパストレーシングをセカンダリの大域照明として使用する場合に,壁を通過するライトの漏れを削減するのに使用できます。例えば壁の反対側の値でのパストレーシング フィルタなどで発生する漏れを削減するには,壁または隅に近い位置でサンプリングする場合にファイナルギャザリングをセカンダリの大域照明の fallback として使用します。有効化すると,ファイナルギャザリングのデプスは 3 が自動的に使用されますが,大きいデプスは壁または隅でしか使用されません。これはパストレーシングがセカンダリの大域照明で使用される場合のみ使用できることに留意して下さい。 |
fgLightLeakRadius | 壁からどれぐらい離れるとファイナルギャザリングが,セカンダリの大域照明の代わりにコールされるか制御します。もし 0.0 にすると,Beast は良い値を推定しようとします。これにより漏れがなくならない場合,手動で大きな値に設定できます。 |
fgGradientThreshold | Irradiance Gradient が補間でどう使用されているか制御します。各々の点は補間精度をあげるのにIrradiance Gradientを格納します。状況によっては Gradient を使用することで白い “ハロー” やその他の画像の乱れが生じます。この閾値はそれらの画像の乱れを削減するのに使用できます(低い値または 0 に設定します)。(Unityでは: Interpolation) |
fgInterpolationPoints | 補間すべきファイナルギャザリングの点の数をセットします。より大きい値のほうがスムーズな結果が得られますが,ディテールまでスムージングしてしまうかもしれません。もしこの値を大きくすることでライトの漏れが壁で生じている場合,サンプリングの表示チェックを行うことで問題は解決されます。(Unityでは: Interpolation Points) |
fgNormalThreshold | ファイナルギャザリングの点の法線の差分に対する感度を制御します。低い値にすると,カーブの強いエリアで点が増えます。 |
fgDepth | 間接照明の跳ね返りの数を制御します。高い値により正確な結果が得られますが,コストとしてレンダリング時間が増加します。より安価な複数の跳ね返りの大域照明では,デプスを増加させる代わりにPath Tracer をセカンダリ インテグレータとして使用します。(Unityでは: Bounces) |
fgAttenuationStart | 減衰が開始する距離。この距離より前は減衰が発生しません。ファイナルギャザリングに減少効果を加えるのに使用できます。fgAttenuationStopに 0.0 より大きい値をセットすると有効化されます。 |
fgAttenuationStop | 減衰が停止する距離を設定します(ゼロにフェード)。この距離を超えると強度はゼロになります。減衰を有効化するにはこの値を 0.0 より大きくします。デフォルト値は 0.0 です。 |
fgFalloffExponent | ライティングが距離に応じて減少する割合を調整するのに使用できます。大きな指数 (Exponent) とすることで減少は早くなります。 |
fgAOInfluence | ファイナルギャザリングをアンビエント オクルージョンとブレンドします。0 から 1 の範囲。0 はオクルージョンなし, 1 は完全なオクルージョン。もしファイナルギャザリングが,複数のデプスまたは パストレーシング を セカンダリの大域照明として使用する場合,結果はかなり “均一” になるかもしれません。ライティングにコントラストをよりえる方法は,計算にアンビエント オクルージョンの要素を取り入れることです。Lightmapping ウィンドウに公開されている Ambient Occlusion は別に計算されています - 別のジオメトリ限定のパスです。 |
fgAOMaxDistance | オクルージョン Ray の最大距離。この距離を超えると Ray はオクルージョンされないとみなされます。部屋など閉じたシーンまたは クリース(折り目)に対するアンビエント オクルージョン (AO) の影響力を限定するのに,で完全なオクルージョンを回避します。 |
fgAOContrast | アンビエント オクルージョン (AO) のコントラストを調整するのに使用できます。 |
fgAOScale | オクルージョンの値のスケーリング。シャドウ エフェクトをを増加または減少させるのに使用できます。 |
パス トレーシング を使用して,高速で複数の跳ね返りのある大域照明が得られます。焼き込みのプレイマリ インテグレータとして使用すると,結果がかなりノイズを含みライトマップの見映えが良くないためすべきでありません。設定を調整するためにプライマリ インテグレータとして使用してキャッシュ スペース と正確さが適切か確認が出来ます。本来の使用方法はセカンダリ インテグレータとして使用して,単独の跳ね返りのファイナルギャザリングをプライマリ インテグレータとすることです。Accuracy および Point Sizeを調整してキャッシュを十分にきめ細かく出来ます。
プロパティ: | 特徴: |
---|---|
GISettings | |
ptAccuracy | 各サンプル要素 (ピクセル,テクセル,または頂点) のトレースされるパスの数。プレビュー レンダリングでは0.5 から 0.1 までの低い値を使用します。つまりピクセルの1/2 から 1/10がパスを生成されることになります。本番のレンダリングでは良い品質を得るのに必要であれば 1.0 以上の値を使用します。 |
ptPointSize | Path Tracer キャッシュの点の間の距離の最大値。もし0にセットした場合はシーンのサイズに応じて自動的に計算されます。自動的な値はレンダリングの際に出力されるため,点の大きさの調整が必要な場合は良い初期値として使用します。 |
ptCacheDirectLight | 有効化すると,path tracer はさらに光源からの直接照明をキャッシングします。これにより直接照明の計算が少なく済むためパフォーマンスが高くなります。近似の計算結果が得られ,このためライティングの品質に影響するかもしれません。例えば鏡面ハイライトからの間接照明の跳ね返りは消滅するかもしれません。 |
ptCheckVisibility | 有効化すると,壁を通過するライトの漏れを減らすのに使用できます。補完を行う点が収集されると,それらのうちいくつかの点は物体の逆側に配置されることがあります。結果として物体を通過する形にライトが漏れます。これを防止するためBeastは表示出来ない点をはじくことが出来ます。注意: オンにする場合は,Final Gatherのライト漏れ防止はオフにします。 |
Beast が使用するスレッド量および入出力のガンマ補正を制御できるようにます。
プロパティ: | 特徴: |
---|---|
FrameSettings | |
inputGamma | テクスチャ毎に適切に設定されるため,1 のままとして下さい。 |
SurfaceTransferSettings はライティングを LOD0 (カメラがオブジェクトに近いときに表示されるLOD)からより精度の低いLODへ移動することを許容します。デフォルト設定を維持してください。