Houdini 21.0 Height Fieldと地形

浸食

山を塵に変換します。

On this page

地形生成において、侵食は最も重要な要素の一つです。 自然界では、地形や景観は侵食によって形作られます。 侵食は水、氷、風、氷河によって引き起こされるだけでなく、熱や寒さによっても生じます。 侵食は、地球の表面から物質を取り除くことで、時間をかけて景観を形成します。 物質は砕け、崩れ、次第に微細な粒子へと粉砕されます。 この過程によって、砂、沈泥、粘土などの微細な堆積物が形成されます。 侵食は、様々な地形を結び付けて、パッチ(継ぎ合せ)段丘、その他の特徴部を組み合わせて本物らしく自然な見た目の地形を創り出す繋ぎ要素です。

Houdiniでは、浸食を2つの基本的なタイプで区別しています。それは、“水による侵食”と“熱による侵食”です。 前者はギリシャ語で“水”を意味する“hydros”に由来する“hydro”と一般的に呼ばれています。 後者の熱侵食(“Thermal” Erosion)は温度差によって引き起こされ、この用語はギリシャ語で“温かい”を意味する“thermos”に由来します。

この過程をシミュレーションするには、通常ではHeightfield Erode SOPを使用します。 Houdini21では、このノードが完全に書き換えられました。 現在では、より高速で使いやすくなっています。 パラメータ名もより直感的になっており、 Erosion Rate (浸食速度)、 Flow Force (流体力)、 Weathering Force (風化力)といった自然現象を表現する名称が採用されています。

このガイドでは、HeightField Erode SOPの機能を示した数多くの例と用途を紹介しています。

基本的な使い方

再び、HeightField SOPHeightField Noiseで構成された基本的なHeight Fieldのセットアップから始めると良いでしょう。 侵食をシミュレーションするために、HeightField Erode SOPを配置して、 1番目 の入力をそのHeightField Noise SOPの出力に接続します。 そのHeightField Erode SOPの青い Display/Render フラグを有効にすると、主に二つの特徴部(浸食チャネル(浸食流路)と滑らかなsedimentの領域)を確認することができます。 実際にはdebrisflowflowdirのレイヤもあります。 これらのチャネル(流路)は独立したレイヤではなく、侵食過程の結果で生成されるものです。

Heightfield Visualize SOPを使用することで、様々なレイヤを可視化することができます。 このノードには様々なレイヤを表示するためのスロットが9個用意されています。 下図では、debrissedimentflowのレイヤを確認することができます。

侵食過程は時間依存なので、シミュレーションによって地形の外観を変更することができます。 そのHeightField Erode SOPの Freeze at Frame パラメータは、シミュレーションを実行するフレーム数を定義します。 その結果が気に入らない場合は、 Reset Simulation ボタンで再実行することができます。 侵食過程を観察/レンダリングしたり、アニメーションフリップブックを作成したい場合は、 Freeze at Frame トグルをオフにすると良いでしょう。

Erosion Feature Size パラメータは、“チャネル(流路)”のスケールを決定します。 値が小さいほど、ディテールが細かい構造が生成されますが、侵食の特徴部の品質はHeight Fieldの解像度にも依存しています。 通常、3または2以下の値では何も変化を確認できません。 新しい侵食アルゴリズムは、分岐した“羽状”の構造を持つチャネル(流路)の典型的な外観を生成します。 下図は、その新しい侵食モデルで実現可能な複雑なパターンを示しています。

Spread Iterations パラメータは、sediment(堆積物)の量を制御します。 設定値を高くすると、より多くの物質が深い領域を埋めるため、滑らかな領域が広がります。

Hydro セクションにあるパラメータは、水の流れと、地形から除去される物質の量をシミュレーションします。 Hydro パラメータは、 Thermal パラメータよりも地形形状への影響力が大きくなります。 様々な設定を試すことができ、誤った値とか正しい値に関する普遍的な規則はありません。

Tip

地形は、わずかな歪曲がある方が見た目が良くなる場合が多く、侵食された状態でも同様です。 これは常にシーンによって異なります。 構造を保持したい場合は、ネットワークを侵食で終了させると良いでしょう。

デフォルト設定では、HeightField Erode SOPは大量の物質を除去する傾向があります。 巻き込まれる岩石の量を制限するには、 Flow Force パラメータを下げると良いでしょう。 硬度の異なる岩石をシミュレーションしたいのであれば、マスクを使用すると良いでしょう。 どの侵食系パラメータにもマスクを適用することができます。 地形の外観に大きく影響するもう一つのパラメータは、 Spread Iterations パラメータです。 高い値にすると、侵食された物質がより長い距離を移動し、谷を埋めたり地形を平坦化したりする傾向があります。

Flow Force パラメータと Spread Iterations パラメータの値を小さく設定することで、段丘などの地形構造をより多く維持することができます。 下記の比較画像の左側は、侵食ノードのデフォルト設定による段丘を示しています。 右側は、 Flow Force パラメータを0.3Spread Iterations パラメータを25に設定した結果です。

浸食のスタッキング(積み重ね)

浸食の典型的なワークフローは、スタッキングです。 つまり、1個のHeightField Erode SOPのみを適用するのではなく、異なるノードを用いて複数回の反復処理を行なうことです。 特定の領域を識別するためのマスクを適用して、 Erosion Feature SizeFlow Force といったパラメータを変更して、その結果を歪めます。 これによって、多くの特徴部を持つ非常にリアルな地形を生成することができます。

このワークフローは簡単です。 最初の侵食ノードから始める際は、通常では大きな特徴部を作成します。 例えば、 Erosion Feature Size パラメータを20以上に設定します。 さらに地質を浸食させたい場合は、そのノードの Freeze at Frame パラメータを上げても良いでしょう。 このデフォルト値は5です。 適切な設定が見つかったら、現在の状態を保存する必要はありません。 代わりに、その最初の侵食ノードの出力を下流の別の侵食ノードに接続します。 その新しいノードは、例えばフレーム10の現在の状態を受け取って、次の侵食処理のベースとして使用します。 これによって、侵食の直列処理ができ、各処理でベース構造にディテールが追加されていきます。

侵食ノードの HeightField Distort by Noise SOPを追加することで、より多くの差異と粗い外観が得られます:

HeightField → HeightField Noise → Erode → Distort > Erode → Distort → Erode → Distort…

このセットアップの利点は、完全にプロシージャルであることです。 ネットワーク内の任意のノードでパラメータを変更しても、ノードチェーン全体を更新する必要がありません。 また、通常では個々の侵食処理の間に地形を再サンプリングする必要もありません。

Height Fieldと地形

生成

  • 地形の生成

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

  • マップからHeight Fieldを生成

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

  • 単独の山

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

  • レイヤ

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

  • 段丘化(Terracing)

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

  • 歪曲(Distortion)

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

  • 地形のペイント

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

  • 投影

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

  • パッチ(継ぎ合せ)

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

  • パターン

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

  • リサンプリング

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

  • 様々な特徴部

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

散布

マスク

  • マスキング

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

  • ライトマスク

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

自然現象

VEX

テクスチャ

Shallow Water Solver(浅水ソルバ)