Labs Decal Projector / Calculate Slope / Extract Silhouetteノードについて


こちらの記事では、「Labs Decal Projector」「Calculate Slope」「Labs Extract Silhouette」ノードの概要および各ノードのパラメーターについてご紹介します。
SideFXLabsツールのノードは、SideFX社のホームページで紹介されています。併せてご覧ください。

SideFXLabsツールのインストール手順

SideFX Labsツールセットのインストール手順については、以下の記事をご参照ください。

Houdiniの内部システムからの直接インストール

Githubからの手動インストール



Labs Decal Projectorノードとは

デカール(ローカライズされたジオメトリとテクスチャ)をジオメトリに投影します。

デカールは、ゲームエンジンの一般的な機能です。例えば、広いフロアの1か所に小さなマンホールの蓋のテクスチャが必要だとします。十分な解像度を得るために、マンホールの蓋用にフロア全体に対して、巨大なテクスチャを適用することは非効率です。マンホールの領域を定義するために、フロアを再び制作することもできますが、マンホールの蓋の位置を変更する際は、さらに編集を行う必要があります。

その代わりに、ゲームエンジンはデカールを提供し、ユーザーにGUI要素としてワイヤーフレームボックスを提供します。マンホールの蓋は、デカールに割り当てられ、ボックスのUIは回転、拡大縮小され、フロアと交差して、移動する場所を示します。そして、マンホールの蓋は、フロアのテクスチャに合成されます。

Decal Projector SOPは、このワークフローを再現します。テクスチャを合成するのではなく、必要なテクスチャを含んだ完全に適合するポリゴンの「ステッカー」または「デカール」が作成されます。これは、ベースとなるジオメトリの変更に適応し、元のジオメトリと合成することができます。

各パラメーターについて

Transform

①Translate

投影面の位置を設定します。

②Rotate

投影面の回転を設定します。

③Scale

投影面のスケールを設定します。

Pivots

④Pivot Rotate

投影面の回転ピボットの位置を設定します。

⑤Pivot Translate

投影面の平行移動ピボットの位置を設定します。

⑥Uniform Scale

投影面のスケールを設定します。

⑦Height Map

投影に使用されるテクスチャマップは、グレースケールの「ハイトマップ」画像が最適です。これは、Houdini Heightfieldノードではなく、ハイトマップとして使用されるテクスチャを指しています。

⑧Strength

ハイトマップの強度を変更する乗数を設定します。

⑨Use Inverted Height as AO

有効にすると、ハイトマップの最も低い部分が2Dアンビエントオクルージョンフィルターによって暗くなり、ディテールを強調して、ハイトマップの高低差を視覚的に分離する際に役立ちます。

⑩Max Distance

サーフェスがプロジェクターハンドルから離れることができる最大距離を設定します。投影がこの距離よりも遠い場合、投影はクリップされます。

⑪Floating Distance

ターゲットサーフェスの上に投影をフロートさせる距離を設定します。これは、出来るだけ接近している必要がありますが、ちらつきやZファイティング(ノイズ)の問題を引き起こすまで接近しないように注意が必要です。

⑫Clip X

投影の左側と右側の「barn doors」をクリップします。

⑬Clip Z

投影の上部と下部の「barn doors」をクリップします。


Labs Decal Projectorノードの機能

Labs Decal Projectorノードの機能についてご紹介します。今回は、Houdini18.0.416を使用しています。最初に、Houdiniを起動してSideFXLabsツールが正常に読み込まれていることを確認します。

ジオメトリネットワークでGridノードを作成します。パラメーターの[Rows:50]、[Columns:50]に設定します。

Gridノードの下にNormalノードを接続します。Normalノードを接続することで、正確に投影を行うことができます。

次に、Normalノードの下にLabs Decal Projectorノードを接続します。

接続後、ビューポート左上にある選択ツールアイコン左クリックします。そして、ビューポート上でEnterキーを押します。すると、サーフェスをコントロールするマニピュレーターが表示されます。

次に、Labs Decal Projectorノードのパラメーターを設定します。
[Uniform Scale:2]、[Max Distance:2]、[Floating Distance:0.05]として、[Use Inverted Height as AO]にチェックを入れ、[Height Map]はHoudiniに実装されているCheckerBoard.picを指定しています。
以降では、各パラメーターの詳細をご紹介します。

下画像は、Uniform Scaleを調整した結果です。Uniform Scaleのスライダーを調整することで、容易にサーフェスを拡大縮小することができます。

Height Mapパラメーターについて、右端アイコンをクリックして、[CheckerBoard.pic]という画像を使用しています。
※投影に使用されるテクスチャマップは、グレースケールの「ハイトマップ」画像が最適です。
今回は、ノードのご紹介ということで認識しやすいチェッカーボード画像を使用しています。

下画像は、Use Inverted Height as AOを調整した結果です。このパラメーターにチェックを入れることで、割り当てられた画像を表示させることができます。

Max Distanceパラメーターについて、これはサーフェスがプロジェクターハンドルから離れることができる最大距離を設定します。例えば、[Max Distance:2]と設定して、[Translate:0.5]の位置にプロジェクターハンドルを移動させます。この状態では、最大距離の範囲内のため、テクスチャ画像は表示されていることが確認できます。

[Translate:2.1]に設定した場合、[Max Distance:2]の最大距離を超えてしまうため、テクスチャ画像が表示されていないことが確認できます。

下画像は、Floating Distanceパラメーターを調整した結果です。このパラメーターを調整することで、投影する面に対して、投影の距離を設定することができます。

その他、Sphereオブジェクトに対しての投影についてご紹介します。
ジオメトリネットワーク上にSphereノードを作成します。パラメーターの[Primitive Type:Polygon]、[Frequency:10]に設定します。

設定後、Normalノードに接続します。そして、Labs Decal Projectorノードを選択します。マニピュレーターが表示されない場合、ビューポート上でEnterキーを押すことで表示することができます。
マニピュレーターを動かすと、それに応じて面に投影を行うことが可能です。

Labs Decal Projectorノードについては以上です。次に、Labs Calculate Slopeノードについてご紹介します。



Labs Calculate Slopeノードとは

サーフェスの勾配をベクトルと比較して計算し、オプションで結果をぼかしたり再マッピングすることができます。

サーフェスの勾配(傾き)は、ジオメトリの法線をベクトルと比較することで計算できます。例えば、球体の法線をY軸に沿って真っ直ぐ上向きのベクトル、つまり{0,1,0}のベクトルと比較します。球体の上部のポイントは{0,1,0}に平行になるため、値1を取得します。赤道(equator)より下に法線があるポイントは、負の値を取得し、S極では-1になりますが、勾配ではこれらの値は0にクランプされます。
この勾配がアトリビュートとして保存されている場合、様々なエフェクトのマスクとして使用することができます。例えば、上方向で埃や雪を見えるようにします。
ベースとなる結果は、マスクの形状を微調整するためにさらに調整することができます。このSOPのRampパラメーターを使用して、コントラストを追加または削除したり、マスクを反転させることができます。
ブラーコントロールは、マスクを和らげるために使用することができ、高いブラーの値ではマスク内のサブサーフェイススキャッタリングに近づける場合に使用できます。

各パラメーターについて

Output

①Use Mesh Normal

有効にすると、@Nを使用します。無効時は、法線を計算した後に勾配を計算します。

②Up Vector

勾配の比較に使用されるベクトルを設定します。この勾配ベクトルに対して、平行な法線の値は1になり、ベクトルに垂直な法線またはベクトルから離れている法線は0の勾配を取得します。

③Output Slope Mask as Color (Cd)

有効な場合は、色に勾配を出力します。無効の場合は、Slope Attributeパラメーターで指定されたアトリビュートに書き込みます。

④Slope Attribute

計算された勾配を格納するアトリビュート名を記述します。

⑤Slope

計算された勾配を調整するためのランプです。例えば、最初のポイントを左上に移動し、2番目のポイントを右下に移動すると、勾配値が反転します。または、ランプに追加のポイントを挿入して、コントラストを高めたり、計算された勾配の結果にバイアスをかけることができます。

Smoothing

⑥Method

ポイントアトリビュートに異なる効果のある様々なぼかしモデルを選択できるようになります。

⑦Influence Type

バーリングは、各ポイントが隣接するアトリビュートを見ることができるかどうかに依存します。このパラメーターは、ポイントがどのように隣接を見るかを決定します。

⑧Blurring Iterations

入力ジオメトリがブラーが掛かる回数を設定します。数値が大きいほど、ブラーが強くなります。

⑨Blur Size

勾配のブラーの半径を設定します。InflueceTypeが ‘connectivity’時の値が高い場合、サブサーフェスの効果のように見えます。


Labs Calculate Slopeノードの機能

次に、Labs Calculate Slopeノードの機能についてご紹介します。こちらも同様に、Houdini18.0.416を使用しています。
最初に、ジオメトリネットワーク上でGridノードを作成します。パラメーターの[Rows:100]、[Columns:100]にします。

次に、Gridノードの下にMountainノードを接続します。ノードを接続し、ディスプレイフラグをオンにすると、Gridにノイズのような凹凸が追加されたことが確認できます。

Mountainノードのパラメーターを調整します。こちらでは、[Height:6.5]、[Element Size:9]、[Max Octaves:3]、[Roughness:0.8]と設定しています。

次に、Mountainノードで作成した、地形に対して勾配の計算を行います。

Mountainノードの下にLabs Calculate Slopeノードを接続します。

下画像は、Labs Calculate Slopeノードの接続 / 非接続時を比較した結果です。ノードを接続するだけで、サーフェスの勾配が計算され、ブラーが掛けられたことが確認できます。

更に、Slopeパラメーターのランプを調整することでより鮮明にサーフェスの傾きを確認することができます。

Blurring Iterationsパラメーターのデフォルト2の値から、数値を高くすると、ブラーが薄くなったことが確認できます。

また、Blur Sizeパラメーターのデフォルト0.5の値から数値が低い場合、ブラーの半径は小さくなり、数値が高い場合は半径が大きく、ブラーが薄くなったことが確認できます。

Labs Calculate Slopeノードについては以上です。次に、Labs Extract Silhouetteノードについてご紹介します。



Labs Extract Silhouetteノードとは

オブジェクトに対して、XYZ の軸の1つから投影したアウトラインを生成します。このツールは、1つの軸のxyzからオブジェクトを見たときに、オブジェクトのシルエットに一致する曲線を生成します。

各パラメーターについて

①Trace Axis

シルエットの投影軸を指定します。


Labs Extract Silhouetteノードの機能

次に、Labs Extract Silhouetteノードの機能についてご紹介します。こちらも同様に、Houdini18.0.416を使用しています。
最初に、ジオメトリネットワーク上にテストジオメトリを配置します。次に、テストジオメトリの下にLabs Extract Silhouetteノードを接続します。

[Trace Axis:Z]に変更すると、Z軸方向のオブジェクトのアウトラインが作成されたことが確認できます。

下画像は、同様に[Trace Axis:X]に変更した結果です。

下画像は[Trace Axis:Y]の結果です。

下画像は、テストジオメトリの「Squab」と「Luiz」に対して、Labs Extract Silhouetteノードを割り当てた結果です。Labs Extract Silhouetteノードは、パラメーターが1つしかないため、簡単にオブジェクトのアウトラインを作成することができます。

「Labs Decal Projector」「Calculate Slope」「Extract Silhouette」ノードについては以上です。これらのノードを使用することで、サーフェスに対しての投影やサーフェスの勾配を計算して再マッピングの実行およびオブジェクトのアウトラインの生成など、Labsツールを使用することで容易に行うことが出来ます。