Houdini 21.0 Height Fieldと地形

パッチ(継ぎ合せ)

パッチ(継ぎ合せ)とカットアウト(切り抜き)を用いて地形を組み立てます。

HeightField Patch SOPは、異なるHeight Fieldを縫い合わせて、まったく新しい何かの地形を作成することができます。 パッチを移動/回転させて、それを必要な位置に正確に配置します。 パッチは、単一のHeight Fieldでは実現が難しい地形(例えば、特定の地域に谷や平地を配置したい場合など)を作成する便利な手法です。 単独の山を作成して、それを存在させたい位置に配置することもできます。 パッチは、地形を完全に制御する最良の方法と言えるでしょう。

パッチとして使用したい領域を定義するにはマスクが必要になります。 マスクの形状と特性は、パッチがベース地形にどのように追加されるかも制御します。 ぼかしたマスクは、ベース地形とパッチ地形の間に滑らかな遷移を生成します。

もちろん、複数のパッチを“スタック(積み重ね)”することで、マスクでは不可能、あるいは少なくとも非常に困難な極めて複雑なHeight Fieldを作成することができます。 パッチに対して浸食スランプ(地すべり)マップ歪曲を適用して、パッチ処理された景観を修正することができます。

もう1つ考慮すべきことは、パッチからすべてのレイヤ(heightmaskを除く)が削除されることです。 例えば、パッチに侵食を追加すると、このノードは、sedimentwaterなどの色々なレイヤも生成します。 これらのレイヤは、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_basenoise_patchに変更します。 各HeightField Noise SOPの 1番目 の入力をその単一のHeightField SOPの出力に接続します。 ここでは、そのnoise_patchのみを調整します。

  1. Amplitude パラメータを225に変更すると、やや高い山が得られます。

  2. Element Size パラメータでノイズパターンのサイズを制御します。 1000の値は高周波ノイズを除去し、わずかな丘がある平坦な領域が生成されます。

  3. Offset.X パラメータに-80と入力すると、山がマイナスX方向へシフトします。

下図では、この2種類のノイズの挙動を確認することができます。

ベース地形に歪曲を加える

歪曲は、地形にディテールを加えて、より多くの構造を得る最も効果的な手法の一つです。

  1. HeightField Distort by Noise SOPを配置して、 1番目 の入力をそのnoise_baseノードの出力に接続します。

  2. 良い感じの構造を加えるために、 Amplitude パラメータを60Element Size パラメータを450に変更します。

これによって、多くの稜線と細かい特徴部を持った地形が得られます。

パッチマスク

マスクは、パッチがベース地形に追加される箇所を定義します。 これによって、最終的に山々の間に平坦な領域が生成されます。 このマスクはデフォルトで既にブラーがかかっており、滑らかな遷移を生成します。 Height Fieldマスクでは常に赤色が何かが起こる領域を決定します。 つまり、パッチ(=平坦な地形)は赤色の領域に出現します。 マスクはお好みに合わせて調整することができ、これが正しい、正しくないというのはありません。

HeightField Mask Noise SOPを追加して、 1番目 の入力をそのnoise_patchノードの出力に接続します。 その結果は以下の画像のように見えるはずです。

パッチ

HeightField Patch SOPは、2本のネットワークストリームを取り込み、ノイズ/パッチマスクを使用して、それらのHeight Fieldがマージされる領域を決定します。

  1. HeightField Patch SOPをネットワークに追加します。

    • 1番目 の入力をベースネットワークのHeightField Distort by Noise SOPの出力に接続します。

    • 2番目 の入力をパッチネットワークのHeightField Mask Noise SOPの出力に接続します。

  2. 高度差のバランスを取るために、 Height Scale パラメータを0.5に設定します。これによって、パッチ地形のHeight値がさらに縮小します。

パッチの位置が良くなかった場合は、HeightField Patch SOPの Positioning パラメータで調整すると良いでしょう。 パッチの回転もここで行なうことができます。 下図は、マスクを重ねたそのままのパッチを示しています。

浸食

現時点では、この景観は継ぎ接ぎされたような見た目になっています。 マスクの滑らかな境界線でさえも、このやや人工的な印象を完全には取り除けません。 侵食処理によって、この2つの地形を“繋げる”ことができます。 平坦な領域を保護するために、侵食は岩場部分のみに適用し、マスクのブラーのかかったエッジは再び滑らかな遷移を生成します。

  1. 浸食マスクには、既存のパッチマスクを反転させたものを利用することができます。 HeightField Mask Invert SOPを追加して、入力をそのHeightField Mask Noise SOPの出力に接続します。

  2. 次にHeightfield Erode SOPを追加して、 1番目 の入力をnoise_patchノードの出力に接続します。 2番目 の入力をそのHeightField Mask Invert SOPの出力に接続します。

デフォルト設定のまま進めても、侵食パラメータを調整してもどちらでも構いません。結局のところ、あなた次第です。 より自然な見た目を得るには、さらにHeightField Distort by Noise SOPを追加することをお勧めします。 Amplitude パラメータと Element Size パラメータに適度な値を設定することで、さらにディテールレベルが加わり、平坦な領域の見た目が維持されます。

最後に、HeightField Mask Clear SOPを追加して、すべてのマスク値を0に設定してマスクを非表示にします。

Height Fieldと地形

生成

  • 地形の生成

    HoudiniのHeight Fieldを用いた基本的なワークフロー。

  • マップからHeight Fieldを生成

    マップからディテールの細かい地形を生成することができます。

  • 単独の山

    必要な場所にカスタムの丘や山を生成します。

  • レイヤ

    レイヤを積み重ねてマスクを適用することで、よりリアルな表現を高めます。

  • 段丘化(Terracing)

    頂上に近いほど段状の地形を生成します。

  • 歪曲(Distortion)

    地形を形作って自然な見た目にします。

  • 地形のペイント

    アーティストの気分で、ご自身で景観をペイントしましょう。

  • 投影

    任意のジオメトリをHeight Fieldの一部に変換します。

  • パッチ(継ぎ合せ)

    パッチ(継ぎ合せ)とカットアウト(切り抜き)を用いて地形を組み立てます。

  • パターン

    基本的なジオメトリパターンからリアルな地形を生成します。

  • リサンプリング

    地形の解像度を段階的に上げます。

  • 様々な特徴部

    地形を変換、エクスポート、特徴豊かにします。

散布

マスク

  • マスキング

    修正したい領域やディテールを加えたい領域を定義します。

  • ライトマスク

    地形上の日照領域からマスクを作成します。

自然現象

VEX

テクスチャ

Shallow Water Solver(浅水ソルバ)