Houdini 21.0 Height Fieldと地形

散布: Solaris

Height FieldをSolarisに取り込んで、Karmaでレンダリングします。

On this page

地形を形作るのに多くの時間を費やした後は、それをレンダリングしたいことでしょう。 この目的のために、地形データと散布ポイントをSolarisに取り込んで、Houdiniの内製レンダリングエンジンであるKarmaを使用してすべてをレンダリングします。

これはHeight Field散布ガイドの最終ページです:

Note

このHeight Field散布ガイドでは、ジオメトリをSolarisに取り込むために必要なSolarisの特定機能のみを扱います。 Solaris、USD、Karma全般についてさらに詳しく知りたいのであれば、ドキュメントの該当ページを参照してください。

また、用意されているワークフローは、Solarisでシーンを組み立てる方法の 一例 に過ぎず、他にも多くの手法が存在します。 Solaris/USDに詳しい方であれば、ご自身の技術を活用してください。 これには名前やパスの設定も含まれています。

Tip

レンダリングネットワークの作成を始める前に、Houdiniのデスクトップを変更することをお勧めします。 メインメニューバーの最初のドロップダウンメニュー(デフォルトでは Build )を開いて、 Solaris または Solaris LookDev を選択してください。 Scene Graph Treeにアクセスできることが重要です。 ここでシーンのプリミティブとその階層構造を確認することができます。

Height Fieldのインポート

SOPネットワークの準備が整いましたので、いよいよ作業を開始します。 地形がすべての基礎となっているので、まずは地形から始めましょう。

Houdiniの stage レベルで、SOP Import LOPを作成します。 SOP Path パラメータのをクリックすると、シーンのツリー構造を表示したフローティングウィンドウが開きます。 Height Fieldを含んでいるコンテナまで移動して、TERRAINNull SOPを選択します。 Accept をクリックして、その選択を確定します。

このノードは、地形をボリュームとして取り込みます。 ジオメトリの方が良いのであれば、SOP Import LOPの Primitive Definition セクションを開いて、 Import Height Fields as Mesh オプションを有効にしてください。 あるいは、SOPネットワーク内でConvert HeightField SOPを使用しても構いません。

インスタンスプロトタイプ

次の手順では、プロトタイプを作成します。 プロトタイプとは、インスタンス化されるベースジオメトリのことです。 様々な岩や植物など任意のオブジェクトを使用することができます。 ここでは、説明を簡略化するため、単純なCube LOPを使用します。

stage 上にCube LOPを追加して、 Scale.Y 値を5に設定して、オブジェクトをY軸方向に引き伸ばします。 このCube LOPを地形上に配置するために、 Translate.Y パラメータに次のエクスプレッションを入力してください:ch("sy")Scale.Y を変更すると、 Translate.Y が自動的に更新されます。

インスタンス化

イントロダクションで述べたように、インスタンス処理をSOP内で行なうのはまったく効率的ではありません。 その理由は、インスタンスがメッシュに変換されるため、その結果、Solaris上で膨大な数の個別のオブジェクトが生成されてしまうからです。 シーンを管理可能な状態に保つためには、下記のワークフローを強く推奨します。 この手法では、インスタンス処理全体に対してScene Graph Treeのエントリが1つ、地形ジオメトリに対して1つしか必要ありません。 しかし、右の画像では、35,042もの子オブジェクトが存在していることがお分かりいただけます!

画像をクリックするとズームします。

さて、ネットワークの中核となる部分を追加していきます。 ここでは、散布ポイントとインスタンスオブジェクトを接続します。

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

  2. そのInstancer LOPの 1番目 の入力(Input Stage)をそのSOP Import LOPの出力に接続します。 次に、 2番目 の入力(Possible Prototype Source)をそのCube LOPの出力に接続します。

  3. Target Points セクションにある Location Source ドロップダウンを開いて、 External SOP を選択します。 散布ポイントを作成または読み込む方法はいくつかありますが、ここでは直接アクセスすることにします。

  4. すると、 SOP Path パラメータと Open floating operator chooser ボタンが表示されます。 このボタンをクリックして、地形SOPネットワーク内のPOINTSNull SOPを選択します。 Accept をクリックして、その選択を確定します。

ビューポートに結果が表示されます。 また、pscaleアトリビュートとorientアトリビュートが正しく転送されていることが分かります。 すべてのアトリビュートが存在しているのか確認するために、Scene Graph Treeinstancer1エントリをクリックします。 右側にあるScene Graph Detailsペインの NameValue の項目にprimvars:hueおよびprimvars:saturationが存在することを確認してください。

マテリアル

この例のマテリアルは単なるオレンジ色ですが、その色相と彩度は散布ポイントに書き込まれたアトリビュートによって制御されます。 なお、このマテリアルは概念を説明するための非常に基本的なセットアップに過ぎません。 ただし、主要な考え方は複雑なシェーダでも同様に機能します。

  1. Material Library LOPを配置して、その入力をそのInstancer LOPの出力に接続します。

  2. そのMaterial Library LOPをダブルクリックして中に入って、⇥ Tabメニューから“Karma Material Builder”ツールを呼び出します。 新たに追加されたkarmamaterialノードを再度ダブルクリックしてください。 そのマテリアル内部には事前設定済みのシェーダネットワークが存在しています。

  3. MtlX Color Correct VOPを追加して、そのout出力をmtlxstandard_surfaceノードのbase_color入力に接続します。 そのMtlX Color Correct VOPを選択すると、そこには既に HueSaturation のパラメータがあります。

  4. Input Color の値を1, 0.5, 0に変更すると、明るいオレンジ色になります。

  5. そのMaterial Library LOPのGeometry Pathパラメータを/instancer1に設定します。

    下図は、既にレンダリングされたプレビューです。

アトリビュートの読み込み

引き続きkarmamaterialノード内で作業します。 次に、ポイントのhueおよびsaturationアトリビュートをそのMtlX Color Correct VOPのパラメータに接続します。

  1. MtlX Geometry Property Value VOPを配置して、そのout出力をそのMtlX Color Correct VOPのhue入力に接続します。

  2. そのMtlX Geometry Property Value VOPの Geomprop パラメータをhueに設定します。 必ず SignatureFloat にしてください。

  3. さらにMtlX Geometry Property Value VOPを追加して、そのout出力をそのMtlX Color Correct VOPのsaturation入力に接続します。

  4. その追加したMtlX Geometry Property Value VOPの Geomprop パラメータをsaturationに設定します。

  5. また、 Default パラメータを1に設定します。 このパラメータの値は、その Geomprop のアトリビュートが利用できない場合の代替値として使用されます。 この値は、MtlX Color Correct VOPの Saturation パラメータのデフォルト値に呼応します。

プレビューレンダリング

シーンを良く見せるために、光源(例えば、Dome Light LOP)を追加しても良いでしょう。 光線をSOP Import LOPとInstancer LOPの間に配置します。

結果を確認するには、シーンをレンダリングする必要があり、この目的でKarmaには“Interactive Preview Rendering”(IPR)システムが備わっています。 ビューポートの右上コーナーにあるドロップダウンメニューは、デフォルトでは Persp が選択されています。 そのメニューを開いて、Karmaエンジンを選択してください。

シェーダのコンパイルに少し時間がかかりますが、その後、以下のような画像が表示されます:

Height Fieldと地形

生成

  • 地形の生成

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

  • マップからHeight Fieldを生成

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

  • 単独の山

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

  • レイヤ

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

  • 段丘化(Terracing)

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

  • 歪曲(Distortion)

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

  • 地形のペイント

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

  • 投影

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

  • パッチ(継ぎ合せ)

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

  • パターン

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

  • リサンプリング

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

  • 様々な特徴部

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

散布

マスク

  • マスキング

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

  • ライトマスク

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

自然現象

VEX

テクスチャ

Shallow Water Solver(浅水ソルバ)