HeightField Patch SOPは、異なるHeight Fieldを縫い合わせて、まったく新しい何かの地形を作成することができます。
パッチを移動/回転させて、それを必要な位置に正確に配置します。
パッチは、単一のHeight Fieldでは実現が難しい地形(例えば、特定の地域に谷や平地を配置したい場合など)を作成する便利な手法です。
単独の山を作成して、それを存在させたい位置に配置することもできます。
パッチは、地形を完全に制御する最良の方法と言えるでしょう。
パッチとして使用したい領域を定義するにはマスクが必要になります。 マスクの形状と特性は、パッチがベース地形にどのように追加されるかも制御します。 ぼかしたマスクは、ベース地形とパッチ地形の間に滑らかな遷移を生成します。
もちろん、複数のパッチを“スタック(積み重ね)”することで、マスクでは不可能、あるいは少なくとも非常に困難な極めて複雑なHeight Fieldを作成することができます。 パッチに対して浸食、スランプ(地すべり)、マップ、歪曲を適用して、パッチ処理された景観を修正することができます。
もう1つ考慮すべきことは、パッチからすべてのレイヤ(heightとmaskを除く)が削除されることです。
例えば、パッチに侵食を追加すると、このノードは、sedimentやwaterなどの色々なレイヤも生成します。
これらのレイヤは、HeightField Patch SOP上では利用できなくなります。
例: 景観 ¶
この例では、2つの基本的なHeight Fieldを合成します。 その結果、平坦な領域と侵食された部分が共存し、それらが互いにブレンドし合って多数の細かな構造を持った特徴豊かな地形が生成されます。 侵食と歪曲は、地形の最終的な見た目を決定します。
Height Fields ¶
序論で、2つの基本的なHeight Fieldを合成しますと言いましたが、両方の地形は単一のHeightField SOPから派生させていきます。
もっとディテールを出すために、 Grid Spacing パラメータを
1に下げてください。
上記の画像では、 Grid Spacing パラメータをさらに0.5まで下げました。
異なる景観を作成するために、 2つ のHeightField Noise SOPが必要です。
それらのノードの名前を
noise_base、noise_patchに変更します。
各HeightField Noise SOPの 1番目 の入力をその単一のHeightField SOPの出力に接続します。
ここでは、そのnoise_patchのみを調整します。
-
Amplitude パラメータを
225に変更すると、やや高い山が得られます。 -
Element Size パラメータでノイズパターンのサイズを制御します。
1000の値は高周波ノイズを除去し、わずかな丘がある平坦な領域が生成されます。 -
Offset.X パラメータに
-80と入力すると、山がマイナスX方向へシフトします。
下図では、この2種類のノイズの挙動を確認することができます。
ベース地形に歪曲を加える ¶
歪曲は、地形にディテールを加えて、より多くの構造を得る最も効果的な手法の一つです。
-
HeightField Distort by Noise SOPを配置して、 1番目 の入力をその
noise_baseノードの出力に接続します。 -
良い感じの構造を加えるために、 Amplitude パラメータを
60、 Element Size パラメータを450に変更します。
これによって、多くの稜線と細かい特徴部を持った地形が得られます。
パッチマスク ¶
マスクは、パッチがベース地形に追加される箇所を定義します。 これによって、最終的に山々の間に平坦な領域が生成されます。 このマスクはデフォルトで既にブラーがかかっており、滑らかな遷移を生成します。 Height Fieldマスクでは常に赤色が何かが起こる領域を決定します。 つまり、パッチ(=平坦な地形)は赤色の領域に出現します。 マスクはお好みに合わせて調整することができ、これが正しい、正しくないというのはありません。
HeightField Mask Noise SOPを追加して、 1番目 の入力をその
noise_patchノードの出力に接続します。
その結果は以下の画像のように見えるはずです。
パッチ ¶
HeightField Patch SOPは、2本のネットワークストリームを取り込み、ノイズ/パッチマスクを使用して、それらのHeight Fieldがマージされる領域を決定します。
-
HeightField Patch SOPをネットワークに追加します。
-
1番目 の入力をベースネットワークのHeightField Distort by Noise SOPの出力に接続します。
-
2番目 の入力をパッチネットワークのHeightField Mask Noise SOPの出力に接続します。
-
-
高度差のバランスを取るために、 Height Scale パラメータを
0.5に設定します。これによって、パッチ地形のHeight値がさらに縮小します。
パッチの位置が良くなかった場合は、HeightField Patch SOPの Positioning パラメータで調整すると良いでしょう。 パッチの回転もここで行なうことができます。 下図は、マスクを重ねたそのままのパッチを示しています。
浸食 ¶
現時点では、この景観は継ぎ接ぎされたような見た目になっています。 マスクの滑らかな境界線でさえも、このやや人工的な印象を完全には取り除けません。 侵食処理によって、この2つの地形を“繋げる”ことができます。 平坦な領域を保護するために、侵食は岩場部分のみに適用し、マスクのブラーのかかったエッジは再び滑らかな遷移を生成します。
-
浸食マスクには、既存のパッチマスクを反転させたものを利用することができます。
HeightField Mask Invert SOPを追加して、入力をそのHeightField Mask Noise SOPの出力に接続します。
-
次に
Heightfield Erode SOPを追加して、 1番目 の入力を
noise_patchノードの出力に接続します。 2番目 の入力をそのHeightField Mask Invert SOPの出力に接続します。
デフォルト設定のまま進めても、侵食パラメータを調整してもどちらでも構いません。結局のところ、あなた次第です。 より自然な見た目を得るには、さらにHeightField Distort by Noise SOPを追加することをお勧めします。 Amplitude パラメータと Element Size パラメータに適度な値を設定することで、さらにディテールレベルが加わり、平坦な領域の見た目が維持されます。
最後に、HeightField Mask Clear SOPを追加して、すべてのマスク値を
0に設定してマスクを非表示にします。