Houdini 21.0 Height Fieldと地形

投影

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

On this page

HeightField Project SOPは、任意のジオメトリをHeight Fieldに追加することができます。 独自の山の形状を定義したり、特定の位置に台地を追加したり、パターンを作成することができます。

投影処理は、光線を使用して、元のジオメトリの形状を捉えます。 これは、光線が届かない隠れた領域が投影されないことも意味します。 そのような領域では代わりに中身の詰まった“壁”が生成されます。 この原因は、Height Fieldは高さ情報を持つ2Dオブジェクトであり、XZ平面に変位がないからです。 オブジェクトを投影すると、グリッドの既存の高さ情報にオフセットが追加されるだけです。 投影の品質は、HeightField SOPGrid Spacing パラメータの解像度にも左右されます。 間隔を大きくすると、エイリアシング効果やギザギザしたエッジが生じます。

しかしながら、投影されたジオメトリはHeight Fieldの不可欠な構成要素であり、ノイズ、段丘、歪曲などを適用することができます。 さらに、ジオメトリを追加するだけでなく、オブジェクトを差し引くことで足跡や火山のカルデラのような窪みも作成することができます。

HeightField Project SOPの Max Ray Dist パラメータを使用すれば、オブジェクトの一部のみを投影することもできます。 設定値より高い位置にある部分は投影対象から除外されます。

マスク

HeightField Project SOPのパラメータ群を見ると、 Mask Mode トグルがあります。 下図は、空っぽのHeight Fieldに投影されたTest Geometry: Rubber Toy SOPです。 HeightField Project SOPは、光線をY軸に飛ばすので、垂直な“壁”のような典型的な外観を生成します。

Mask Mode を有効にすると、レイヤが Density 値を設定するため、投影はオブジェクトの断面内でのみ行なわれます。 最終的な値は Density を変更することで制御可能です。 1より小さい値では断面が徐々に消失し、1より大きい値を使用すると台地の高さを上げることができます。

Note

HeightField Projection SOPには、外部マスク用の入力が備わっていません。 これは、マスクを定義して投影を特定の領域に制限することができないことを意味します。

サンプル: 岩の迷路

散布と投影を組み合わせることで、わずか数ノードで複雑なパターンや地形を生成することができます。 散布ジオメトリやその分布を変更することで、異なるバージョンや外観を素早く生成することもできます。 ブラー、歪曲、その他のHeight Field修正機能も、リアルな外観を生成するのに役立ちます。 以下の例では、基本的な立方体を使用して、山と岩からなる迷路を作成します。

Tip

単独の山のページでは、散布と投影を用いてカスタマイズ可能な山を作成する、より高度なサンプルもご覧いただけます。

すべては、空っぽの地形を作成するHeightField SOPから始めます。 変更すべきパラメータは Grid Spacing のみです。 1の値を設定すると、より細かい構造が露出します。

散布用オブジェクト

以下のノード構成がネットワークの中核となっています。 これは、基本オブジェクトのインスタンスをHeight Fieldグリッド上に散布するという考え方です。 ここでは、ボックスを基本オブジェクトとして使用します。 位置とスケールをランダムにすることで、部分的に重なり合う立方体のパターンが生成されて、複雑な構造を表現することができます。

  1. ⇥ TabメニューからBox SOPを配置します。

  2. Uniform Scale パラメータを30に変更して、非常に大きなオブジェクトを設定します。

  3. 次に、 Size パラメータを3, 1, 1に設定して、ボックスをX軸方向に引き伸ばします。これは、ベースを広くすることで非常に細くて鋭い構造を回避するという考え方です。

  4. そのボックスを平坦なHeight Fieldグリッド上に正確に配置するために、 Center.Y15と入力します。これはボックスの高さの半分です。

散布ポイント

HeightField Scatter SOPは、散布ポイントを生成し、スケールや向きなどの複数のパラメータをランダムにすることで規則的な構造を回避することができます。

  1. HeightField Scatter SOPを追加して、入力をそのHeightField SOPの出力に接続します。

    このノードの青い Display/Render フラグを有効にすると、約227,000ポイントという非常に高密度なポイントクラウドが表示されます。 この状態では、それと同じ数だけインスタンスが生成されてしまうため、ポイント数を適切な数値に減らす必要があります。

  2. Scatter Method ドロップダウンメニューから Total Point Count using Mask Layer を選択します。 これによって、 Scattering セクションで正確なポイント数を指定することができます。

  3. Total Point Count パラメータを500に変更します。

  4. HeightField Scatter SOPの 3番目 の入力をそのBox SOPの出力に接続します。

  5. Variability セクションと Relaxation セクションに移動します。 Range パラメータに0.5, 2と入力します。これによって、そのBox SOPに0.5から2.0までのランダムなスケール係数が適用されます。 また、 Randomize Up パラメータと Randomize Yaw パラメータを使用して、そのBox SOPの向きをランダムにすることができます。

これで、ほぼ地形全体を覆うように、サイズや向きが異なる500個のボックスが重なり合って表示されます。

投影

この手順では、それらのボックスが収まるようにベースグリッドを修正して、それらをHeight Fieldの一部に変換します。

  1. HeightField Project SOPを追加します。

  2. HeightField Project SOPの 1番目 の入力をそのHeightField SOPの出力に接続します。 このHeightField Project SOPには2つの入力を接続しなければなりません。

  3. 2番目 の入力をそのHeightField Scatter SOPの出力に接続します。

これでボックスがHeight Fieldの一部となり、地形の形状を定義できるようになりました。

地形の形状定義

自由に利用可能なノードを使用して地形の形状を定義して、様々な設定を試すことができます。 とはいえ、投影した結果を歪めることから始めるのが良いでしょう。 これによって、地形に実際の構造や形状が加わりますが、ノイズが非常に目立ってしまう場合があります。 スパイクを抑えるために、Height Fieldにブラーをかけてください。

  1. まずHeightField Distort by Noise SOPから始め、その入力をHeightField Project SOPの出力に接続します。

  2. Noise Type ドロップダウンメニューから Simplex を選択します。 このノイズタイプはPerlinノイズに似ていますが、より滑らかな結果を生成します。 Curl は歪曲が強くなりすぎます。

  3. Amplitude パラメータと Element Size パラメータには様々な値(例えば、600375など)を試してください。

ブラー

岩の“壁”部分に多くのアーティファクトが見られるものの、地形の大まかな見た目を確認できます。

  1. 地形を滑らかにするため、HeightField Blur SOPを配置します。その入力を上流のHeightField Distort by Noise SOPの出力に接続します。

  2. Method ドロップダウンメニューを Box Blur に変更します。 このモードは、より柔らかなエッジとより有機的な見た目を生成します。

  3. ブラーの量は Radius で調整します。値を大きくするとより多くのボクセルが考慮され、より滑らかな印象になります。 6程度の値を試してください。

HoudiniのHeightField Erode SOPとさらにもう1つHeightField Distort by Noise SOPを使用することで、地形の外観を仕上げ、より細かなディテールを加えることができます。

Grid SOPMountain SOPといった標準的なSOPジオメトリを使用して山地を作成することもできます。 ジオメトリを使用すれば、個々の頂点やポリゴンを操作することができるため、Height Fieldでは不可能なまったく異なる手法でオブジェクトを変形させることができます。 Mountain SOPはアニメーションにも対応しており、これはHeightField Noise SOPにはない機能です。

山地ジオメトリの投影ワークフローは、他のオブジェクトと同様です。

勾配の追加

デフォルトでは、空っぽのHeight Fieldは常に2軸(例えば、ZXまたはYZ)に沿って配置されます。 選択した平面内で地形位置をシフトする Center パラメータは存在しますが、例えば、X軸周りの回転はできません。

傾斜したHeight Fieldを作成するには、投影を利用すると良いです。

Note

この手法は、ノイズやその他の投影オブジェクトなどの特徴部を回転させたり、傾斜を加えることはしません。 山は依然としてY軸に沿って垂直方向に“成長”します。

  1. HeightField SOPを作成します。デフォルト設定のままでも構いません。

  2. Box SOPを追加します。

  3. Size パラメータを1000, 0, 1300に変更します。

  4. Center パラメータを0, 290, 0にして、ボックスを上方向に移動させます。

  5. 次に、 Rotate パラメータを30, 0, 0に設定して、ボックスをX軸で30度回転させます。

  6. 次に、HeightField Project SOPを配置して、 1番目 の入力をそのHeight Field SOPの出力に接続します。 同様に、 2番目 の入力をそのBox SOPの出力に接続します。

これで傾斜30度のHeight Fieldが出来ました。後は前述と同様にノイズや歪曲などの処理を続けます。

Tip

傾斜を追加する別の方法として、HeightField Pattern SOPを使用する方法もあります。

Height Fieldと地形

生成

  • 地形の生成

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

  • マップからHeight Fieldを生成

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

  • 単独の山

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

  • レイヤ

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

  • 段丘化(Terracing)

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

  • 歪曲(Distortion)

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

  • 地形のペイント

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

  • 投影

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

  • パッチ(継ぎ合せ)

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

  • パターン

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

  • リサンプリング

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

  • 様々な特徴部

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

散布

マスク

  • マスキング

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

  • ライトマスク

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

自然現象

VEX

テクスチャ

Shallow Water Solver(浅水ソルバ)