| On this page |
地形を形作るのに多くの時間を費やした後は、それをレンダリングしたいことでしょう。 この目的のために、地形データと散布ポイントをSolarisに取り込んで、Houdiniの内製レンダリングエンジンであるKarmaを使用してすべてをレンダリングします。
これはHeight Field散布ガイドの最終ページです:
-
散布: SOPでは、シーンの準備方法を説明しています。
-
散布: ポイントの除去では、散布ポイント数を制御する方法を説明しています。
-
散布: アトリビュートでは、
pscaleやorientといったアトリビュートを作成します。 -
散布: Solarisでは、インスタンスを作成する方法を説明しています。
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もの子オブジェクトが存在していることがお分かりいただけます!
さて、ネットワークの中核となる部分を追加していきます。 ここでは、散布ポイントとインスタンスオブジェクトを接続します。
-
⇥ Tabメニューから
Instancer LOPを配置します。
-
そのInstancer LOPの 1番目 の入力(
Input Stage)をそのSOP Import LOPの出力に接続します。 次に、 2番目 の入力(Possible Prototype Source)をそのCube LOPの出力に接続します。 -
Target Points セクションにある Location Source ドロップダウンを開いて、 External SOP を選択します。 散布ポイントを作成または読み込む方法はいくつかありますが、ここでは直接アクセスすることにします。
-
すると、 SOP Path パラメータと
Open floating operator chooser ボタンが表示されます。 このボタンをクリックして、地形SOPネットワーク内の
POINTSNull SOPを選択します。 Accept をクリックして、その選択を確定します。
ビューポートに結果が表示されます。
また、pscaleアトリビュートとorientアトリビュートが正しく転送されていることが分かります。
すべてのアトリビュートが存在しているのか確認するために、Scene Graph Treeでinstancer1エントリをクリックします。
右側にあるScene Graph Detailsペインの Name と Value の項目にprimvars:hueおよびprimvars:saturationが存在することを確認してください。
マテリアル ¶
この例のマテリアルは単なるオレンジ色ですが、その色相と彩度は散布ポイントに書き込まれたアトリビュートによって制御されます。 なお、このマテリアルは概念を説明するための非常に基本的なセットアップに過ぎません。 ただし、主要な考え方は複雑なシェーダでも同様に機能します。
-
Material Library LOPを配置して、その入力をそのInstancer LOPの出力に接続します。
-
そのMaterial Library LOPをダブルクリックして中に入って、⇥ Tabメニューから“Karma Material Builder”ツールを呼び出します。 新たに追加された
karmamaterialノードを再度ダブルクリックしてください。 そのマテリアル内部には事前設定済みのシェーダネットワークが存在しています。 -
MtlX Color Correct VOPを追加して、その
out出力をmtlxstandard_surfaceノードのbase_color入力に接続します。 そのMtlX Color Correct VOPを選択すると、そこには既に Hue と Saturation のパラメータがあります。 -
Input Color の値を
1, 0.5, 0に変更すると、明るいオレンジ色になります。 -
そのMaterial Library LOPのGeometry Pathパラメータを
/instancer1に設定します。下図は、既にレンダリングされたプレビューです。
アトリビュートの読み込み ¶
引き続きkarmamaterialノード内で作業します。
次に、ポイントのhueおよびsaturationアトリビュートをそのMtlX Color Correct VOPのパラメータに接続します。
-
MtlX Geometry Property Value VOPを配置して、その
out出力をそのMtlX Color Correct VOPのhue入力に接続します。 -
そのMtlX Geometry Property Value VOPの Geomprop パラメータを
hueに設定します。 必ず Signature を Float にしてください。 -
さらにMtlX Geometry Property Value VOPを追加して、その
out出力をそのMtlX Color Correct VOPのsaturation入力に接続します。 -
その追加したMtlX Geometry Property Value VOPの Geomprop パラメータを
saturationに設定します。 -
また、 Default パラメータを
1に設定します。 このパラメータの値は、その Geomprop のアトリビュートが利用できない場合の代替値として使用されます。 この値は、MtlX Color Correct VOPの Saturation パラメータのデフォルト値に呼応します。
プレビューレンダリング ¶
シーンを良く見せるために、光源(例えば、Dome Light LOP)を追加しても良いでしょう。
光線をSOP Import LOPとInstancer LOPの間に配置します。
結果を確認するには、シーンをレンダリングする必要があり、この目的でKarmaには“Interactive Preview Rendering”(IPR)システムが備わっています。 ビューポートの右上コーナーにあるドロップダウンメニューは、デフォルトでは Persp が選択されています。 そのメニューを開いて、Karmaエンジンを選択してください。
シェーダのコンパイルに少し時間がかかりますが、その後、以下のような画像が表示されます: