UDN
Search public documentation:

TessellationDX11JP
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

UE3 ホーム > 「Unreal Engine 3」におけるDirectX 11 > DirectX 11 のテセレーション
UE3 ホーム > マテリアルとテクスチャ >DirectX 11 のテセレーション


DirectX 11 のテセレーション


概要

典型的なゲームコンテンツ パイプラインでは、ジオメトリがトライアングルメッシュから作成されます。グラフィックカードによってトライアングルメッシュが非常に効率的にレンダリングされるため、アーティストが作成したメッシュを直接レンダリングするのが普通です。ただし、残念なことに、充分な数のトライアングルが使用されていない場合や、トライアングルの数が多すぎてレンダリングが遅くなる場合は、クオリティの低下を招いてしまいます。最近のグラフィックカードは、ハードウェアによるテセレーション (細分化) がサポートされているため、入力されたメッシュを高度にテセレートされたレンダリングメッシュに分割することによって、トライアングルの数を増やすことができます。つまり、低いトライアングル密度でメッシュを作成しておき、距離や他のプロパティ に応じて (たとえば、ジオメトリの詳細度に応じて) それらを精密化することができるということになります。このプロセスはプログラミングすることができ、ディスプレースメント (変位) マッピングを実装することができます。

notess_head.jpgtessdispl_head.jpg
左 : テセレーションなし
右 : テセレーションおよびディスプレースメントあり

テセレーションは、あらゆる LOD の問題を解決するわけではありませんが、中程度の詳細度をもつ自然物についてはたいへんよく機能します。多数の小さなトライアングルを使用する場合、グラフィックカードのパフォーマンスが急速に低下することがあるため、テセレーションを使用する場合には注意が必要です。パフォーマンスの特性は、グラフィックカードのベンダーによって異なります。

有効にする方法


注意 : この機能には DirectX 11 が必要です。(有効にする方法については、 このページ に掲載されています)。

つぎの画像で表示されているのは、テセレーションが有効になっているマテリアルです。

TessEditor.jpg

テセレーションの係数は、エッジが 6 で、トライアングルの内部が 5 にセットされています。

マテリアルの WorldDisplacement (ワールド ディスプレースメント) 入力が使用されているため、ディスプレースメント マッピングも用いられています。このマテリアルは、テクスチャの blue のチャンネルを使用して、法線方向に変位しています。これは、lerp (線形補間) によって実現されています。lerp は、2 つのベクター (min displacement (最小ディスプレースメント) と max displacement (最大ディスプレースメント)) をブレンドします。両ベクターとも z 成分しか使用しないため、(0,0,x) という形式のベクターになります。このベクターは、!VectorTransform (ベクター変換) ノードを使用して、タンジェント空間からワールド空間に変形されます。この処理が行われる理由は、ワールド空間で入力されることを WorldDisplacement (ワールド ディスプレースメント) が前提としているからです。もし Transform ノードがなければ、ディスプレースメントはメッシュのサーフェスに並ぶことはなく、頂点はワールドの z 軸方向に移動することになります。

テセレーションのモード


notess.jpgflat.jpgpn.jpg
左 : テセレーションなし
中 : フラットなテセレーション (頂点がより多く、大概ディスプレースメントとともに使用すると役立ちます)
右 : ジオメトリをソフトにする PN トライアングル テセレーションを使用 (シルエットがより丸みを帯びています)

テセレーションの係数


マテリアルの入力によって、トライアングルのエッジ (x) および内部 (y) におけるテセレーションを調整することができます。この値は、エッジが何回細分化されるかを指定するものです。値が 1 の場合は、テセレートされません。適切な値は、2 から 6 までの間です。理想的な係数 (パフォーマンス対クオリティに関して) は、入力されたメッシュおよびディスプレースメントの内容、目指しているクオリティに依存します。ジオメトリの異なる部分に応じて、異なる係数にすることもできます。

スムージング グループ


PN トライアングル テセレーション モードでは、ハードエッジもサポートされています (オリジナルの 曲線 PN トライアングル の一部ではありません) 。また、ハードウェアによるテセレーションを使用する際に現れるクラックが回避されます。

UV シーム


ディスプレースメント マッピングを使用すると、一方の側にある頂点が他方の側にある頂点とは異なる地点に移動するために、エッジが開くことがあります。この問題は現在のところコードによって解決されてはいませんが、多くの場合、コンテンツを調整することによって回避できます。つぎの画像は、上記の問題のせいで開いてしまったオブジェクト内部の部分です。(赤で強調表示されている部分です)。

crack.jpg

動的なテセレーション係数


つぎのマテリアルノードは、テセレーション係数をどのようにカメラの距離に接続することができるかを示しています。

DynTess.jpg

150 という値を調整することによって、使用するメッシュでよく機能するようにしています。

動的なディスプレースメント


つぎの一連の画像では、モデルの変化を 3 段階にして表示しています。

DyanmicDisplacement.jpg

ディスプレースメントのデータは、他のマテリアル プロパティと同様に、時間経過にともなって変更することができます。

特色


現在の実装が最終的なものであるとは考えておりません。アート コンテンツの作成を簡易化し、パフォーマンスを向上させるには、よりいっそうの努力が必要と思われます。理想としては、UV シーム (継ぎ目) によってメッシュ内でクラックを引き起こされないようにしなければなりません。