Houdini 21.0 Height Fieldと地形

散布: アトリビュート

アトリビュートを使用して、インスタンスの散布を制御します。

On this page

散布ポイントにアトリビュートを追加することで、インスタンスとそのシェーダの挙動を制御することができます。 典型的なアトリビュートはorientpscaleですが、カラーをランダムにすることもできます。 あるいは、距離、高さ値、温度、風向などのアトリビュートを格納したい場合もあるでしょう。 可能性は無限大です。 既存のアトリビュート(例えば、pscale)をVEXコードや適切なノードを使って上書きすることもできます。

Note

Solaris/USDでは、アトリビュートのことを Primvar ( Primitive Variable の略)と呼びます。 また、一部のアトリビュートはSolarisでは別の名前が付けられています。

この章では、カスタムのhueおよびsaturationアトリビュートを適用して、シェーダのカラーを制御する方法について説明します。 最終章では、それらのアトリビュート値を読み込んで、マテリアルに接続する方法を説明します。

アトリビュートの定義と作成の工程は、基本的にはHoudini内の他のジオメトリと同じです。 一般的な方法としては、アトリビュートを作成しそのタイプを定義します。 その後、ポイント全体でアトリビュート値をランダムにします。

このガイドは、散布に関する4ページにわたるワークフローの説明の2ページ目となります。

ポイントの分離

Height Fieldを使用する場合、考慮すべきことが1つあります。 HeightField Scatter SOPをクリックして選択し、Geometry Spreadsheetを開いてください。 Points モードでは、最初の01の2つのエントリがあるのが分かります。 これらはHeight Fieldを示したものであり、アトリビュートを適用すると、その地形にも影響します。 これは何を意味してるでしょうか?

例えば、ランダムなCdカラーアトリビュートを適用したと仮定します。 Height Fieldが2つのポイントで表現されている状況では、地形に色が付くようになります。 そのため、散布ポイントとHeight Fieldを別々のストリームに保存することが推奨されます。 そうすれば、散布ポイントにアトリビュートを書き込んでも、その結果に誤りが生じることはありません。 このワークフローは、アトリビュートだけでなく、Solarisにおける全工程のパイプラインにおいても便利です。

HeightField Scatter SOPRelaxation セクションにある Keep Incoming Terrain オプションを無効にしてください。 すると、ビューポートには散布ポイントのみが表示されます。

スケールと向き

HeightField Scatter SOPには、 Range パラメータを含む Variability セクションがあります。 ここでは、各ポイントの最小/最大スケール係数を定義することができます。 実際にはpscaleを変更していることになります。 Method ドロップダウンメニューにもスケール調整用の3つのオプションが備わっています。

既にScatter and Align SOPを使用したことがあるのであれば、おそらくorientアトリビュートについてご存知かと思います。 このアトリビュートは、ベースオブジェクトの法線やその他の軸を基準としたインスタンスの回転値を制御します。 HeightField Scatter SOPも同様の動作をし、その適切なパラメータが Relaxation セクションにあります。

ヘルプによれば、 Randomize Up パラメータは“インスタンスから計算された法線方向をジッターさせる度数を指定します”と書かれています。 簡単に言うと、このパラメータは、すべてのインスタンスが地形の法線と完全に整列するのを防ぎます。 例えば、すべての木が地面に対して完全に垂直に立っている森を想像してみてください。 自然界ではこのような状況はほとんど発生せず、一部の木は94度で成長し、他の木は部分的に倒れ、また別の木は85度で成長するなど、様々な状態が見られます。 Randomize Up は、このような挙動を再現することができます。

Randomize Yaw パラメータは、インスタンスを地形の法線を基準に回転させます。 Yawは、すべてのオブジェクトが同じ方向を向かないようにします。

必要な法線は、HeightField Scatter SOPを追加した際にHoudiniがその場で計算します。 とはいえ、 Match Normals with Terrain パラメータと Match Direction with Slope パラメータを使用して法線の方向を調整することができます。

もちろん、VEXスクリプトや適切なノード(下記参照)など、ネットワーク内の任意の場所で両方のアトリビュートを上書きすることができます。

色相と彩度

hueアトリビュートを定義するには、まずAttribute Create SOPを配置します。 このノードをHeightField Scatter SOPに接続します。 次にそのAttribute Create SOP上で、 Name パラメータをhueに変更します。 このアトリビュートは散布ポイント上では浮動小数点型として使用したいので、残りのパラメータは変更不要です。

次に、Attribute Randomize SOPを追加して、その入力をそのAttribute Create SOPの出力に接続します。 そのAttribute Randomize SOPでは以下の設定が必要です。

  1. Attribute Name パラメータには、hueと入力します。

  2. Distribution タブにある Dimensions パラメータを1に設定します。 この値は前述の浮動小数点数を表します。

  3. 次に、 Min ValueMax Value を選択します。 このアトリビュートは、テクスチャマップの彩度を制御します。 微妙な変化を得るために、通常では色関連の値を狭い範囲内に変更します。 不自然な色を避けるために、それぞれ0.91.1を試してみてください。

  4. saturationPointアトリビュートについては、上記で説明した手順通りにすべて繰り返すことができます。 さらに1つのAttribute Create SOPと1つのAttribute Randomize SOPが必要です。

    1の値は元の彩度を表すため、変更するのは Min Value のみとなります。 一方、0の値はグレースケールマップを生成しますが、通常これは望ましくありません。 適切な値は例えば0.7です。 これによってHoudiniはポイントに0.7から1.0までの間のランダムな値を追加します。

Height Fieldの散布: Solarisのページでは、カラー補正アトリビュートをシェーダに接続する方法を説明しています。

アトリビュートの削除

パーティクル数が多くてアトリビュートも多い場合、レンダリング処理に必要なコンピュータリソースを消費します。 不要なアトリビュートを削除することで、時間とメモリを節約することができます。

この作業にはAttribute Delete SOPを使用すると良いでしょう。 そこで様々な (…) Attributes パラメータが確認できるので、削除したいアトリビュートを入力してください。 パラメータの関連ドロップダウンメニューからアトリビュートを選択することもできます。

最終手順

次に、ネットワークの特定部分によりアクセスしやすくするためにNull SOPを追加します。 例えば、SOPジオメトリをSolarisステージにインポートする場合などが該当します。 ここでは、Height Field用に1個のNull SOP、散布ポイント用に1個のNull SOPを使用します。

  1. Null SOPを配置して、その入力をネットワークの最終ノード(おそらくAttribute Delete SOP)の出力に接続します。 そのNull SOPの名前をPOINTSに変更します。

  2. さらにNull SOPを追加して、その入力をHeightField Noise SOPの出力に接続します。 そのNull SOPの名前をTERRAINに変更します。

Height Fieldと地形

生成

  • 地形の生成

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

  • マップからHeight Fieldを生成

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

  • 単独の山

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

  • レイヤ

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

  • 段丘化(Terracing)

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

  • 歪曲(Distortion)

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

  • 地形のペイント

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

  • 投影

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

  • パッチ(継ぎ合せ)

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

  • パターン

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

  • リサンプリング

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

  • 様々な特徴部

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

散布

マスク

  • マスキング

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

  • ライトマスク

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

自然現象

VEX

テクスチャ

Shallow Water Solver(浅水ソルバ)