UDN
Search public documentation:
DevelopmentKitGemsParallaxOccludedMappingJP
English Translation
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
Unreal Development Kit ホーム > Unreal Development Kit Gems > 視差オクルージョン マッピング
UE3 ホーム > マテリアルとテクスチャ > 視差オクルージョン マッピング
UE3 ホーム > マテリアルとテクスチャ > 視差オクルージョン マッピング
視差オクルージョン マッピング
2011年3月に UDK について最終テスト実施済み
PC 対応
概要
視差オクルージョンマッピングとは、レイトレーシングのコンセプトを用いて仮想変位テクスチャを作成するレンダリング方法です。これによって最終的には、石壁などのテクスチャの外見がデプス (奥行き) をもち、壁やフロアの平坦な感じが減ります。この技術の効果については、ウェブ上に多数情報が掲載されているため、本解説ではこれ以上の説明はしません。
さまざまな仮想デプスの方法を比較する
法線マッピング
法線マッピングは、光源に基づくデプスレベルを実現する標準的な方法です。生来、私たちの目は光と影によって容量を知覚します。最上部が明るく最下部が暗い部分は、通常、画面から飛び出して見えます。その逆の部分は、画面に埋没したように見えます。ただし、法線マップは、実際にテクスチャの座標を変更することが一切ないため、子細に観察すると平坦であることが分かります。また、法線マップを使用しても負荷が非常に小さいため、パフォーマンスに影響を及ぼすことはほとんどありません。
バンプオフセット マッピング
バンプオフセット マッピング (あるいは 視差マッピング) は、カメラの視線方向に基づいてテクスチャの座標を変更することによって、深度を加えるものです。ディフューズおよび法線、スペキュラの UV マップを変位させることによって、人工的なデプスが知覚されるようになります。バンプオフセットはいくつかの命令を加えるだけであり、通常、かなり小さい負荷でしかありません。

視差オクルージョン マッピング
視差オクルージョン マッピングでは、レイトレーシングによってカメラの視線方向に基づく正しいテクスチャ座標を見つけてデプスを追加します。これによって、本物のパースペクティブによる正しいデプスがマテリアルに追加されます。また、オクルージョン部分は、深みを増すのに役立つ他の部分を高さマップの部分がオクルードすることができるということを意味します。最後に、セルフシャドウイングをともなって、さらに人工的なデプスがマテリアルに追加されます。ただし、視差オクルージョン マッピングはとても負荷が大きいため、通常は、限られた部分に使用すべきです。


マテリアルの構成
マテリアルのサイズに基づき、各部分を個別に調べていきましょう。
視差オフセットの計算
視差オフセットは、高さマップをステップ実行して適切なデプスを見つける際に利用されるベクターです。これは、(すでにタンジェント空間にある) カメラベクターの長さの 2 乗を見つけることによって計算されます。さらに、そこからカメラベクターの z 値を 2 乗したものを引きます。さらに、この平方根をとり、これを、カメラベクターの z 値で割ります。さらに、これにカメラベクターの x および y 値を掛けることによって、x および y という 2 つの部分をもつベクターを作ります。最後に、これに高さスケールを掛け、x および y 成分だけを返します。
デプス パスユニット
各デプス パスユニットでは、予め定められているステップサイズを視差オフセットに掛け合わせます。マテリアルには、デフォルトで最大 9 のデプス パスしかないため、ステップサイズは、0.1f (1 / (1 + デプスパス)) となります。ここからデプスが計算され、高さマップから取得される高さと比較します。高さが、計算されたデプスよりも大きい場合は、視差テクスチャ座標が渡されます。そうでない場合は、次のデプス パスに入ります。各デプス パスは、1 つずつステップサイズを増やし、高さマップの中に一層深く投影します。デプス サーチの質を高めるためにデプス パスの数を増やすことが可能です。ただし、マテリアルはパフォーマンスと命令数の上限によって制限されます。すべてのデプス パスの最後に、視差テクスチャ座標が返されます。
ディフューズの計算
ディフューズを計算するには、ディフューズ テクスチャ パラメータをサンプリングします。
エミッシブの計算
エミッシブを計算するには、エミッシブ テクスチャ パラメータをサンプリングし、ベクターパラメータを掛けます。これによってエミッシブの色合いと輝度を調整することができます。
スペキュラの計算
スペキュラを計算する方法は 2 つあります。静的なスイッチ上で値をセットすることによって、そのどちらかの方法を使用するようにできます。- ベクターパラメータをディフューズに掛け合わせることによって計算される。利用できるスペキュラ テクスチャがない場合に役立ちます。
- ベクターパラメータをスペキュラ テクスチャのサンプルに掛け合わせることによって計算される。固有のスペキュラが必要な場合に役立ちます。

スペキュラパワーの計算
スペキュラパワーの計算方法は 2 つあります。静的なスイッチの値をセットすることによって、そのどちらかの方法を使用するようにできます。- ベクターパラメータをスペキュラパワー テクスチャ サンプルに掛け合わせることによって計算される。
- ベクターパラメータを返す。

法線の計算
法線は、ディテール法線を用いても、用いなくても計算することができます。これによって、ディテール法線を適用すべきかどうかを決定することができます。ディテール法線のデプスとスケールを変更することもできます。法線情報が Reflection Vector によって必要とされるため、この法線の結果は、マテリアルのための Normal (法線) の入力に接続されます。
シャドウの計算
シャドウを計算するには、初期のデプスパスで見つかったデプスから始まるレイトレースを逆行させます。レイが上方に向かってインクリメントされながら、高さマップがサンプル化され、シャドウの値が各トレースのセグメントから計算されます。シャドウのセグメントがすべて計算された後に、最終的な値が計算されます。
ディフューズとスペキュラの追加
シャドウは手動で計算されるので、マテリアルは、「Unreal」のデフォルトの計算を利用して、独自のカスタム光源処理ソリューションの行を使用する必要があります。デフォルトでは、マテリアルが Phong シェーディングを使用することによって、インゲームの他のあらゆるマテリアルと同様になるようにします。そのためには、ディフューズ成分を最初に計算し、次にスペキュラ成分を計算して、その結果を加えます。
シャドウ係数の乗算処理
ディフューズとスペキュラが追加された後に、結果として得られたピクセルにシャドウ係数を掛けることによって暗くします。ここでは、コンスタント クランプを調整することによって、シャドウの暗さや、環境光の輝度を定義することが可能です。また、ここには静的なスイッチがあり、シャドウイング経路を有効化 / 無効化するために使用することができます。
エミッシブの追加
エミッシブは光源処理の計算に一切影響を及ぼさないため、一番最後に追加されます。
最終的なマテリアル ツリー ノード
次は、マテリアル ツリー ノードの完全な図です。クリックして拡大することができます。(2.5MB 程度)

注記
マテリアルのサイズのために、マテリアルのインスタンス化に時間がかかる場合があることにご注意ください。
シルエット クリッピングの実験
視差テクスチャ座標が 1.f を超える場合や 0.f に達しない場合を検知することが可能です。そのような場合は、オパシティを 0 にセットすることができます。これによってある種のシルエット クリッピングが作成されますが、完全なものではありません。

例



ダウンロード
- コンテンツとマテリアルは、 ここから ダウンロードすることができます。 (ParallaxOcclusionMapping.zip)