Compute Terrain

「Compute Terrain」の編集履歴(バックアップ)一覧に戻る

Compute Terrain - (2019/03/22 (金) 17:09:42) のソース

参照tpic:[[Compute terrain VS Compute normal>https://planetside.co.uk/forums/index.php/topic,1249.15.html]]
#image(Compute_Terrain.jpg)


基本的に『Compute Terrain』は2つの事を行います:
+選択した「パッチサイズ(一回の操作で処理する量)」に従ってサーフェス法線を計算します。
+テクスチャ座標(シェーダ座標)を更新して、サーフェスの現在の形状に合わせます。後述する理由から、選択した「パッチサイズ」に従って、それは地形のやや滑らかなバージョンです。

『Compute Normal』は、『Compute Terrain』と同じ方法でサーフェス法線を計算しますが、テクスチャ座標は更新しません。

**1.Surface normal(サーフェス法線)
サーフェスの「法線」とは、サーフェスに垂直なベクトルです。この法線の一式を、サーフェスから指し示す一群の矢印として視覚化する事が出来ます。平らな平面では、矢印はすべて上方向を指しますが、断崖の側面の場合、サーフェス法線の向きは断崖から横を指し示します。

慣例上、3Dグラフィックスではサーフェス法線がライティング計算に使用されます。しかし、ディスプレースメントシェーダの出現と共に、サーフェスを置き換える方向性が必要になり、通常これはサーフェス法線に沿っていますが、常にそうとは限りません。

ディスプレースメントはTGのどの方向でも起こりますが、ほとんどのシェーダはデフォルトでサーフェス法線に沿って置き換えられます。これは、通常仕様として望むものであり、岩石が断崖の側面を上下に歪ませるのではなく、険しい断崖の側面から突き出る事が出来るようにするためのものです。 『Compute Terrain』または『Compute Normal』が存在しない場合、サーフェス法線は単なる局部的な「上向き」のベクトルになります(これは惑星の中心から離れた地点のベクトルです)。他のオブジェクトの場合は、状況は異なりますが、『Compute Terrain』と『Compute Normal』は惑星上でのみ使用する事をお勧めします。

「パッチサイズ」は、サーフェス上の位置に対してサーフェス法線がどれくらい速く変化するかに影響します。サーフェス法線を計算した後に非常に大きなディスプレースメントが発生した場合は、これを頭い入れておく事が重要です。例えば、 100メートルのスパイク(突出)地形を作成するディスプレースメントシェーダがあり、それを『Compute Terrain』または『Compute Normal』の後に適用するとします。基礎となる地形がかなり凸凹で、『Compute Terrain』の"Gradient patch size"が1メートル足らずの場合、サーフェス法線は非常に急速に方向を変更します。スパイクはいくつかの場所で重複し、他の場所ではるか遠くに広がります。この場合の解決法は、サーフェス法線がより緩やかに変化するように、"Gradient patch size"を目安100メートルに増加させる事でしょう。

サーフェス法線は、『Surface Layer』や『Distribution Shader』の勾配制限など、他の目的にも使用されます。『Surface Layer』を使用してディスプレースメントを適用する時や、『Distribution Shader』を使用してディスプレースメントをコントロールする時に勾配制限を使用する場合はサーフェス法線が重要となります。

***Final normal(最終法線)
ただし、勾配制限を使用してサーフェスの色やその他の非ディスプレースメントの属性のみをコントロールする場合は、特にサーフェス法線を心配する必要はありません。すべてのディスプレースメントが適用された後、マイクロポリゴンから自動的に計算される、これを"Final normal"と呼びます。これにより、最高レベルのディティールが得られます。シェーダによっては、勾配などに基づいて効果を適用する時にどのタイプの法線を使用するかを決める選択肢がありますが、これはディスプレースメントと色の両方に同じ制限を適用する場合に便利です。

Terragenにおいて、ライティング計算のためのサーフェス法線を考慮する必要はありません。TGのすべてのシェーダは現在、ライティング計算に"Final normal"を使用しています。

**2.テクスチャ座標

***平滑化されたテクスチャ座標

***『Compute Terrain』ノードの動機付け

***『Compute Normal』または『Compute Terrain』ノードを追加する場合の注意点