Houdini 21.0

Height Fieldと地形

HoudiniのHeight Fieldツールを使用して、リアルな地形を生成する方法。

On this page

概要

Houdiniには、Height Fieldを用いてリアルな地形を生成するための多様なノードとツールが用意されています。 Height Fieldは、頂点やポリゴンといった古典的なジオメトリで構成されていません。 Height Fieldは、セルを持つ2次元のグリッドと考えると良いでしょう。 そのグリッドの交点には、地形の高さ情報が含まれています。

この手法によって、異なる種類の地形を組み合わせたり積み重ねたりすることが可能になります。 例えば、岩盤の上に地層を積み重ねることができます。 これらの層のことを Heightレイヤ と呼び、ベースレイヤ(ここでは岩盤)は常にheightという名前になります。 レイヤは、Height Field全般において重要な役割を果たし、目的の結果を得るためにはレイヤのスタッキング(積み重ね)と操作が鍵となります。 この手法の利点は、完全に人為的コントロールを維持できる点にあります。 例えば、レイヤを一時的にオン/オフしたり、各レイヤを個別に編集したり、ネットワークの任意の箇所に新規レイヤを追加することができます。

ほとんどのTerrain系ノードには、そのノードで地形を修正する領域を制御するためのマスクレイヤを指定可能な第二の入力が備わっています。 デフォルトのマスクレイヤ名はmaskになっています。 Heightレイヤと同様に、ジオメトリストリーム内に複数の異なる名前のマスクレイヤを含めることができます。 これによって、侵食や段丘の適用など、使用したいマスクレイヤを指定することができます。

Houdiniビューポートは、2Dのheightフィールドを3Dサーフェスとして可視化することができて、maskフィールドはその3Dサーフェス上に赤色で表示されます。 Height Fieldは、巨大な地形だけでなく、小規模な景観、河川敷、海底、砂漠、その他多くの地質構造も生成することができます。 また、独自のマップを描画して、複雑で細かいディテールの地形生成のベースとしてそのマップを使用することもできます。 おそらく最も現実的な手法は、実際の景観から変位マップを読み込んで、それをHeight Fieldに変換することです。

Note

Height Fieldの特殊な形態として、Shallow Water Solverがあります。 これは、広範囲の領域を素早く浸水させたり、岩や亀裂に水を流すことができます。

制限事項

前述の通り、Height Fieldは平坦な2Dグリッドであり、すべての高さ情報がそのグリッドのポイントに格納されています。 これが原因で、地形の垂直な領域を操作することができません。 この例を挙げると、HeightField Project SOPで得られる垂直部分がそうです。 このHeightField Project SOPは、通常のジオメトリを受け取って、それを2Dグリッド上に投影します。 マスクもこれに非常に似た現象を生成してしまいます。 以下の画像は、空っぽのHeight Fieldに投影された球体です。 その垂直部分は、Y軸に沿って引き伸ばされているだけです。

その垂直部分にディテールを加えたい場合は、地形を浸食させるか、または、Height Fieldを実ジオメトリに変換すると良いでしょう。 他には、その垂直な領域上にオブジェクトを散布して構造物を作成する方法もあります。

もちろん、HoudiniのKarma CPUKarma XPUのレンダリングエンジンはHeight Fieldに対応しています。 いずれにせよ、Height Fieldをレンダリングする前に、それをポリゴンに変換するべきです。 SolarisでHeight FieldをインポートするとHoudiniは自動的にその地形を変換してくれるので、この手順は必須ではありません。 とはいえ、手動による変換の方がジオメトリをより細かく制御することができます。 例えば、地形にカラーやレイヤをベイクしたい場合がそうです。

ノイズタイプ

色々なノイズタイプは、Height Fieldと組み合わせて中心的な役割を果たし、地形生成、マスキング、歪曲、パターンなどのあらゆる場面で活用することができます。 特にHeightField Noise SOPの多様なノイズタイプは、地形の特性を素早く変更するのに最適です。 滑らかな丘陵地帯、鋭い尾根と急勾配がある山岳地帯といった様々な景観を生成することができます。

一見すると、 Chebyshev Cellular F2-F1 のようなノイズタイプは奇妙なパターンを生成するかもしれません。 しかし、適切な歪曲とノイズタイプの積み重ねによって、非常にディテールの細かい地形を生成することができます。 次に山岳地帯に浸食を適用することで、リアルな外観が得られます。

異なるノードのノイズ設定には、いくつかの共通パラメータがあります。 おそらく最も重要なパラメータは、 AmplitudeElement Size でしょう。 Amplitude は、地形の最大高さを定義します。 一方、 Element Size は、ノイズパターンのサイズを定義します。 Height Fieldに関して言えば、小さい値ではスパイクや凹凸が増え、高い値ではより滑らかな表面が生成されます。

AmplitudeElement Size の比率も重要です。

  • Element Size が小さい場合、通常は Amplitude を下げます。

  • Element Size が大きい場合、地形は平坦になり、おそらくたいていの場合は Amplitude を上げることになります。

以下の画像は、 Element SizeAmplitude を変化させるだけで様々な種類の地形を表現できることを示しています。

ゼロからHeight Fieldを生成する方法

基本的なHeight Fieldを作成するには、わずか数個のノードのみで済みます。 ノードのパラメータによって景観の形を精密に定義し、遠方の丘陵にはディテールを落とし、散布用の高解像度地面オブジェクトを作成することができます。 通常では、ごく少数のパラメータを変更するだけで、まったく異なる外観が得られます。

Height Fieldは、ジオメトリ系SOPノードによって作成するので、すべてはHoudiniの obj レベルから始めます。 まず obj レベルで⇥ Tabキーを押してタブメニューを開きます。 そこから、景観用コンテナとなるGeometry OBJを作成します。 そして、そのノードをダブルクリックして中に入ります。

Height Fieldの土台

  • HeightField SOPを配置します。 このノードは、シーンの原点を中心に ZX 平面の向きで大きな平面を生成します。

最も重要なパラメータは、 SizeGrid Spacing です。 前者のパラメータは、地形全体のスケールを決定します。

デフォルトのサイズは、1000×1000平方メートル(つまり、1平方キロメートル)です。 一方、 Grid Spacing は、Height Fieldの解像度を定義します。 この値がボクセルのサイズと考えることができます。 デフォルト値の2は、2つのグリッドポイント間の距離を2メートルにします。 これによって、土台のHeight Fieldは500×500ボクセルになります。

また、 Division ModeBy Axis に変更することで、グリッドポイントの数を直接設定することができます。

Heightfieldノイズ

ランダムな地形から始めるために、まず最初にHeightFieldノードにHeightField Noise SOPを接続します。 タブメニューからHeightField Noise SOPを追加し、その1番目の入力をHeightField SOPの出力に接続します。 これで、いくつかの丘陵がある岩石地帯が表示されます。 もっとディテールが必要であれば、前述のHeightField SOPの Grid Spacing パラメータを下げると良いでしょう。 このHeightField Noise SOPでは、地形の外観を変更します。

Note

下記で説明するノイズパラメータは、HoudiniのHeight Fieldテクノロジー全般において重要な部分です。 したがって、それらの設定のほとんどが他のノードでも見受けられ、その動作モードは常に同じです。

Amplitude は、地形の最大高さを変更します。 この値は、メートル単位で指定するもの ではなく 、デフォルト値の500は、適切な高さの丘を生成しないことに注意してください。 Amplitude は、各グリッドポイントの変位値に適用されるスケール係数です。 Center Noise が有効な場合、この係数はY軸のプラス方向とマイナス方向の両方に適用されます(Height FieldがXZ平面の向きに配置されている場合)。

Element Size は、ノイズパターンのサイズを決定します。 値が小さいほど、スパイクがたくさんあるノイズの多い表面が得られます。 一方、値が大きいほど、ディテールが粗い滑らかな表面が得られます。 Element Size は、ノイズ周波数の逆数です。

Scale パラメータは、ノイズをその方向に沿って引き伸ばすことができます。 たいていの場合、ここにはXコンポーネントとZコンポーネントに値を入れることになるでしょう。 そもそも、高さ軸は考慮されません。高さは Amplitude で制御されるからです。

また、様々な Combine Mode 設定を試すのも面白いです。 例えば、 Maximum は、0未満の値をすべて切り捨て、島や海岸線のある海面を生成します。 一方、 Minimum は、侵食された峡谷のような構造を生成することができます。

Noise Settings セクションには Roughness パラメータが用意されています。 設定値を高くすると、より多くの微細なスパイクが生成され、よりノイズの多い表面となります。 Roughness は非常に感度が高いため、0.05単位の小さなステップで値を変更してください。

また、様々な Noise Types も利用可能です。 Perlin、Sparse Convolution、Simplexのノイズタイプは、地形にディテールを加えます。 一方、CellularとAlligatorのノイズタイプは、地形の基本構造を定義するのに最適です。 その後、Sparse Convolutionノイズや歪曲によって、その地形を微調整します。 地形により多くのディテールやより細かい構造が必要な場合は、 Lacunarity の値を上げることを検討してください。

Height Fieldマスク

マスクは、効果を特定の領域に制限します。 Height Fieldと組み合わせて使用することで、地形を出現させたい領域を定義することができて、そのマスク外の領域は平坦なままとなります。 ⇥ Tabキーを押してタブメニューを開いてhfmaskと入力すると、マスクの作成と操作を行なうための多数のノードが表示されます。 基本概念を説明するために、まずはノイズマスクから始めましょう。

Tip

マスクに関する詳細情報は、Height Fieldマスクのページを参照してください。

基本的なHeight Fieldを既に作成済みの場合は、その既存のネットワークでそのまま進めて構いません。 Height Fieldのスケールや見た目は問題ありません。 以下に、作成予定のネットワークのプレビューを載せます。

  1. タブメニューからHeightField Mask Noise SOPを配置します。

  2. 効果を確認するために、この新しいマスクノードを既存のHeightField SOPとHeightField Noise SOPノードの間に配置してください。 このマスクノードを以下のように接続します。

    • 1番目 の入力をHeightField SOPの出力に接続し、

    • 出力をHeightField Noise SOPの 2番目 の入力に接続します。

  3. マスクノードのパラメータを確認すると、HeightField Noise SOPと同じパラメータ( AmplitudeElement SizeNoise Settings セクション)があるのがわかります。これらのパラメータを調整することで様々な見た目を表現することができます。 なお、 Amplitude はHeight値の乗数として機能します。

マスクの実際の見た目を制御するために、マスクノードの青い Display/Render フラグを有効にしてください。 すると、赤と白のパターンが表示され、山はその の領域にのみ生成されます。

Tipsとメモ

  • Terrain デスクトップには、地形作業用に設計された専用のシェルフセット、Radialメニュー、独自のペインレイアウトが用意されています。

  • 適切なノードを検索する際、height fieldではなくheightまたはhfと入力することで、⇥ Tabメニューのスマート補完機能を活用することができます。 例えば、hfnoiseと入力すると、利用可能なすべてのHeightField Noise系ノードの一覧が表示されます。

  • Height Fieldとマスクは通常のHoudiniボリュームであり、ボリュームを扱うあらゆるジオメトリ(SOP)ノードを使用して編集することができます。

サブトピック

生成

  • 地形の生成

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

  • マップからHeight Fieldを生成

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

  • 単独の山

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

  • レイヤ

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

  • 段丘化(Terracing)

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

  • 歪曲(Distortion)

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

  • 地形のペイント

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

  • 投影

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

  • パッチ(継ぎ合せ)

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

  • パターン

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

  • リサンプリング

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

  • 様々な特徴部

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

散布

マスク

  • マスキング

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

  • ライトマスク

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

自然現象

VEX

テクスチャ

Shallow Water Solver(浅水ソルバ)

Houdini 21.0

はじめよう

Houdiniの使い方

  • ジオメトリ

    Houdiniがどのようにジオメトリを表現し、どのように作成・編集するのか説明します。

  • コピーとインスタンス

    コピー(実形状)とインスタンス(読み込みのみ、もしくはレンダリング時に作成される形状)の使い方。

  • Height Fieldと地形

    HoudiniのHeight Fieldツールを使用して、リアルな地形を生成する方法。

  • アニメーション

    Houdiniでのアニメーションの作成とキーフレームの方法。

  • デジタルアセット

    デジタルアセットは既存ネットワークから再利用可能なノードとツールを作成することができます。

  • インポートとエクスポート

    Houdiniでのシーン、オブジェクト、他のデータのインポートとエクスポートの方法。

  • MPlayビューア

    Houdiniのスタンドアローン画像ビューアの使い方。

Character FX

  • キャラクタ

    Houdiniでのキャラクタのリギングとアニメーションの方法。

  • 群衆シミュレーション

    Houdiniでのキャラクタの群衆の作成とシミュレーションの方法。

  • Muscles & Tissue

    筋肉、皮下組織、スキンをHoudiniで作成およびシミュレーションする方法。

  • HairとFur

    ヘアーとファーを作成、スタイリング、ダイナミクスを追加する方法。

  • Feathers(羽根)

    キャラクタに対して非常にリアルで細部まで作り込まれた羽根を作る方法。

ダイナミクス

  • ダイナミクス

    Houdiniのダイナミクスネットワークを使用したシミュレーションの作成方法。

  • Vellum

    Vellumは、布、ヘアー、Gain(粒)、流体、ソフトボディオブジェクトに対してPosition Based Dynamicsの手法を使用します。

  • Pyro

    煙、炎、爆発のシミュレーションの方法。

  • 流体

    流体とオーシャンのシミュレーションをセットアップする方法。

  • オーシャンと水面

    オーシャンと水面のシミュレーションをセットアップする方法。

  • MPM

    異なるタイプの固体マテリアル(雪、土、泥、コンクリート、金属、ゼリー、ゴム、水、蜂蜜、砂など)をシミュレーションする方法。

  • 破壊

    色々なタイプの材質を破壊する方法。

  • Grains(粒)

    (砂のような)粒状の材質をシミュレーションする方法。

  • パーティクル

    パーティクルシミュレーションの作成方法。

  • Finite Elements(有限要素)

    変形可能なオブジェクトを作成してシミュレーションする方法。

パイプライン

  • PDG/TOPsを使ってタスクを実行する方法

    TOPネットワークを使用して、ディペンデンシーとスケジューラタスクを定義する方法。

  • HQueue

    HQueueは、Houdiniの無料の分散ジョブスケジューリングシステムです。

  • Houdini Engine

    Houdini EngineのC、PythonのAPIsとHoudini Engineプラグインについて説明しています。

  • 機械学習

    Houdiniには、合成データの生成、前処理、モデルのトレーニング、トレーニング済みモデルのエクスポート、トレーニング済みモデルのデプロイをサポートする機械学習用のプラットフォームが備わっています。

ノード

  • OBJ - オブジェクトノード

    オブジェクトノードはシーン内で、キャラクタ、ジオメトリオブジェクト、ライト、カメラなどのオブジェクトを表示します。

  • SOP - ジオメトリノード

    ジオメトリノードはGeoオブジェクト内で存在し、ジオメトリを生成します。

  • DOP - ダイナミクスノード

    ダイナミクスノードは物理シミュレーション用に条件とルールを設定します。

  • VOP - シェーダノード

    VOPノードは、ノード同士を接続することで(シェーダなどの)プログラムを定義することができます。そしてHoudiniは、そのノードネットワークを、実行可能なVEXコードにコンパイルします。

  • LOP - USDノード

    LOPノードは、キャラクタ、プロップ、ライティング、レンダリングを記述したUSDを生成します。

  • ROP - レンダーノード

    レンダーノードは、シーンをレンダリングしたり、レンダーディペンデンシーネットワークをセットアップします。

  • CHOP - チャンネルノード

    チャンネルノードは、チャンネルデータの作成、フィルタリング、制御をします。

  • COP - Copernicusノード

    COPノードは、3D空間内でリアルタイムに画像を制御することができます。

  • TOP - タスクノード

    TOPノードは、データをネットワークに送り込んでワークアイテムに変換し、色々なノードでそれを制御するワークフローを定義します。たいていのノードは、ローカルマシンまたはサーバーファーム上で実行可能な外部プロセスを表現しています。

  • APEX - APEXノード

    APEXノードは、APEXグラフの機能を構築するためのオペレーションを備えており、KienFXで使用することで、キャラクタリグを作成したり、他のジオメトリ操作を実行することができます。

シーン構築、Karmaレンダリング、画像処理

  • SolarisとKarma

    Solarisとは、Universal Scene Description(USD)フレームワークに準拠して、Houdiniのシーン構築、ルック開発、Karmaレンダリングをするツール群の総称のことです。

  • Copernicus

    Houdiniの2D/3D GPU画像処理フレームワーク。

  • コンポジット

    Houdiniのコンポジットネットワークはレンダーなどの画像を作成し処理することができます。

Mantraレンダリング/シェーディング

  • Mantraレンダリング

    Mantraエンジンを使用して画像とアニメーションをレンダリングする方法。

  • Mantraマテリアル

    マテリアルの割り当てとシェーディング用のカスタムマテリアルを作成する方法。

リファレンス

  • メニュー

    メインメニュー内のそれぞれの項目について説明します。

  • ビューア

    ビューアペインタイプ。

  • ペイン

    色々なペインのオプションを説明します。

  • ウィンドウ

    色々なユーザインターフェースウィンドウのオプションを説明します。

  • スタンドアローンのユーティリティ

    Houdiniには便利なコマンドラインユーティリティプログラムがたくさんあります。

  • APIs

    Houdiniのプログラミング関連のリファレンスドキュメントすべてを一覧にしています。

  • Pythonスクリプト

    PythonとHoudini Object Modelを使用してHoudiniのスクリプトを記述する方法。

  • エクスプレッション関数

    エクスプレッション関数は、パラメータの値を計算することができます。

  • HScriptコマンド

    HScriptはHoudiniのレガシースクリプト言語です。

  • VEX

    VEXはシェーダの記述などのHoudiniのほとんどの場所で使われているハイパフォーマンスなエクスプレッション言語です。

  • プロパティ

    プロパティはレンダリング、シェーディング、ライティング、カメラといったパラメータを柔軟で強力な階層構造でセットアップすることができます。

  • ギャラリー

    Houdiniに含まれている既製マテリアル。

  • Houdiniパッケージ

    プラグイン、ツール、アドオンが異なる環境変数定義ファイルを複数作成して、それらを組み合わせる方法。

  • hwebserver

    グラフィカルまたは非グラフィカルなHoudiniセッション内でウェブサーバーを起動するための関数とクラス。

  • SideFX Labs

    SideFXによって開発され、コミュニティで育まれている新しいHoudiniツールをテストする場です。

  • 環境変数一覧