Labs Straight Skeleton 2D / Straight Skeleton 3D / Calculate Occlusionノードについて


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


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

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

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

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



Labs Straight Skeleton 2Dノードとは

2Dの入力形状の中心カーブ(ストレートスケルトン)を生成します。

複数の平坦なジオメトリがある場合、そのジオメトリの中心線を表す曲線(ストレートスケルトンと言われる)を見つけると便利なことがよくあります。用途としては、テキストの面取り、家の屋根の上端、道路や小道の中心線などの定義があります。

各パラメーターについて

①Resample Size

入力カーブと出力カーブのリサンプルを設定します。

②Trim Ends

ストレートスケルトンに共通するYエンドピース(末端部)を削除します。

③Threshold

エンドピース(末端部)を削除するためのサイズのしきい値を設定します。

④Fit to Shape

スケルトンの端を元の曲線に向かって延長します。


Labs Straight Skeleton 2Dノードの機能

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

ジオメトリネットワーク上でFrontノードを作成します。

Textパラメーターで文字を入力します。こちらでは、[Houdini18]と入力しています。

フォントの向きを調整するために、Transformノードを接続して、[Rotate:-90]にします。

次に、Transformノードの下にLabs Straight Skeleton 2Dノードを接続します。このノードは 、とてもシンプルです。ディスプレイフラグを付けると、フォントの中心カーブが表示されたことが確認できます。

Trim Endsパラメーターをオフにすることで、エンドピース(末端部)が表示されます。

また、Resample Sizeパラメーターの数値を大きくすると、中心カーブがリサンプルされ、ポイント数などが削減されます。

Labs Straight Skeleton 2Dノードについては以上です。次に、Labs Straight Skeleton 3Dノードについてご紹介します。



Labs Straight Skeleton 3Dノードとは

メッシュの内部構造に基づいて曲線を生成します。

ストレートスケルトンや中間軸は、メッシュ内部の中心線またはスケルトンを定義する方法です。この手法の応用としては、UV、破壊、Growthソルバー、ジョイントの生成などの複数の用途があります。

各パラメーターについて

①Voxel Size

入力メッシュが変換されるボリュームの解像度を設定します。

②Iterations

メッシュを縮小したソルバーの回数を設定します。

③Fuse Distance

近くのポイントをまとめて折りたたむ際のしきい値を設定します。


Labs Straight Skeleton 3Dノードの機能

Labs Straight Skeleton 3Dノードについてご紹介します。こちらも同様に、Houdini18.0.460を使用しています。
ジオメトリネットワーク上でTestgeometry Rubbertoyノードを作成します。

次に、Labs Straight Skeleton 3Dノードを接続して、ディスプレイフラグを付けるとメッシュに基づいてカーブが生成されます。

Voxel Sizeパラメーターの数値を大きくすることで、変換されたボリュームが高解像度になります。

Fuse Distanceパラメーターの数値を大きくすることで、近くのポイント同士が結合してポイント数などが削減されたことが確認できます。

Labs Straight Skeleton 3Dノードについては以上です。次に、Labs Calculate Occlusionノードについてご紹介します。



Labs Calculate Occlusionノードとは

頂点ベースのアンビエントオクルージョンを計算します。

アンビエントオクルージョンは、セルフオクルージョンされた領域が暗くなる一般的な操作です。従来は、レンダリングの段階で行われていましたが、ジオメトリレベルで行うためにこのノードは追加されました。

各パラメーターについて

Occlusion Settings

①Number of Rays

生成するサンプルの数を設定します。数値が大きいほど、速度は遅くなりますが品質は高くなります。

②Bias

出力の値をシフトします。Intensityスライダーと似ていますが、値が0に近いほどAOが強くなります。

Advanced

③Maximum Ray Distance

AOのレイがこのパラメーターの距離を超えないように設定します。オブジェクトが遠い場合に発生するAOのアーティファクト(ノイズ)を削除する際に役立ちます。

④Cone Width

サンプリングの幅が狭く、数値が小さいほどフォールオフが強化されます。

Output

⑤Output Occlusion as Color ( Cd )

オクルージョンをポイントのCd(カラー)チャネルに書き込むかどうかを設定します。

⑥Occlusion Attribute

Output Occlusion as Color ( Cd )パラメーターの値がオフの場合、これは出力アトリビュートのオーバーライドの名前になります。

⑦Output curve

この曲線は、AOの基本的なレベルの操作を行うことで、標準より高いAOの計算を再実行することなく結果を微調整できます。

Smoothing

⑧Method

ぼかし方を選択できます。

⑨Influence Type

このパラメーターは、隣接するポイントがどのように影響するかを決定します。

⑩Blurring Iterations

入力ジオメトリをぼかす回数を指定します。

⑪Blur Size

ぼかしの繰り返しのサイズを設定します。


Labs Calculate Occlusionの機能

今回は、複数のジオメトリを用いてLabs Calculate Occlusionノードについてご紹介します。こちらも同様に、Houdini18.0.460を使用しています。
ジオメトリネットワーク上でTestgeometry Pigheadを作成します。シェーダーは不要なので、パラメーターの[Add Shader]オフにします。

Testgeometry Rubbertoyを作成し、こちらもパラメーターの[Add Shader]をオフにします。

■補足:ワイヤーメッシュを非表示にする場合
ビューポート右上の[Persp] > [Shading] > [Smooth Shaded]を選択することで、ジオメトリのワイヤーメッシュが非表示になり、オクルージョンの結果をより分かりやすく確認できます。

次に、Sphereノードを作成して、パラメーターの[Primitive Type:Polygon Mesh]に変更し、[Center Y:1.1]にします。

続いて、Gridノードを作成して、[Rows:50]、[Columns:50]に変更します。

次に、Mergeノードを作成し、SphereとGridを結合します。

各ジオメトリを1つのノードで切り替えるために、Switchノードを作成して、Pighead、Rubbertoy、Mergeノードを接続します。

下画像は、SwitchノードのSelect Inputパラメーターを切り替えた結果です。この作成したジオメトリに対して、オクルージョンを適用します。

Switchノードの下にLabs Calculate Occlusionノードを接続します。

Labs Calculate OcclusionノードのBypassフラグを切り替えるだけで、オクルージョンが適用されていることが確認できます。

■補足:ビューポート上のライティングを無効にする場合
ビューポート右上の[Disable Lighting]アイコンをクリックすることで、ライティングが無効化され、よりオクルージョン結果を鮮明に確認することができます。

ここからは、各パラメーターについてご紹介します。
[Number of Rays:100]に設定します。このパラメーターは、生成するサンプルの数を設定します。数値が大きいほど、速度は遅くなりますが品質は高くなります。

Biasパラメーターの数値を大きくすることで、オクルージョンが強くなります。

下の動画はBiasパラメーターを調整した結果です。

■補足1:SideFX Labsツールに入る
Labs Calculate Occlusionノードに限らず、SideFX Labsツールは、多くの場合HDA(Houdini Digital Assets)で構築されているので、ノードをクリックするとノードの中に入ることができます。
HDAを使用していて表面的に分からない箇所がある場合、ノードの中に入り、構築されたノードツリーを確認することで問題を解決することもできます。

■補足2:HDAの確認方法
HDAをダブルクリックすることでノードの中に入ることはできますが、HDA自体にロックが掛けられているため、ノードを確認することは出来ても、パラメーター等を調整することはできません。
※ロックされたHDAは、グレーの鍵アイコンが表示されます。

ロックを解除する場合、HDAを選択して、右クリックから[Allow Editing of Contents]を選択します。

[Allow Editing of Contents]を選択することで、赤色のアイコンが表示され、ロックが解除されたことが確認できます。

下画像は、Labs Calculate Occlusionノードのノードツリーです。

また、再度HDAにロックを掛ける場合は、HDAを選択して、右クリックから[Match Current Definition]を選択することで、HDAにロックを掛けることができます。

■補足3:Blurring IterationsパラメーターとBlur Sizeパラメーターについて
ここからは、Labs Calculate Occlusionノードの中に入り、Blurring IterationsパラメーターとBlur Sizeパラメーターについてご紹介します。
Labs Calculate Occlusionノードの中に入ると、Occlusionのブラーの処理はAttribute Blur SOPが使用されていることが確認できます。

パラメーターの[Attributes:_occlusion]が入力されていることから、オクルージョンをぼかすように設定されていることが分かります。

■Houdini内からノードのヘルプを参照する方法
各ノードのヘルプを参照する場合は、ノードを選択して、パラメーターの右端[?]アイコンをクリックすることでHoudini内からノードのヘルプを参照することができます。

ノードのヘルプを確認すると、
Blurring Iterations:入力ジオメトリをブラーする回数。回数が多いほど、ブラーが多くなります。
Step Size:Modeが[Laplacian]に設定されている時の反復毎のサイズ
と、パラメーターの説明があります。
つまり、Blur SizeパラメーターをBlurring Iterationsパラメーターの回数分、繰り返して処理を実行することが分かります。
よって、双方(Blur Size / Blurring Iterationsパラメーター)の数値を大きくすることで、ブラーが大きくなります。

■ご注意:Blur Sizeパラメーターの数値を過度に大きくした場合
Blur Sizeパラメーターの数値を過度に大きくした場合、ブラーが破綻したような結果になります。下画像は、[Blurring Iterations:1]、[Blur Size:4]に変更しています。

Blur Sizeパラメーターのスライダーでは、[0~1]の範囲で値を調整することができます。そのため、手動で1より大きい数値を入力した場合、下画像のようにブラーが破綻することがあります。

よって、ブラーのサイズを調整する場合は、Blurring Iterationsパラメーターで大きな調整をした後、Blur Sizeパラメーターの[0~1]の範囲で微調整を行うことをお勧めします。
下の動画は、[Blurring Iterations:10]に変更して、Blur Sizeを微調整した結果です。

■補足4:Attribute Blur SOP
Attribute Blur SOP自体もHDAのため、ノードの中に入り、構築されたノードツリーを確認することができます。少し確認したところ、ブラーの処理はOpenCL SOPで処理されていることが分かります。
このように、ノードの中に入ることで、より深いレベルでHoudiniを触り、ノードの仕組みを理解することができます。

「Labs Straight Skeleton 2D」「Labs Straight Skeleton 3D」「Labs Calculate Occlusion」ノードについては以上です。

これらのノードを使用することで、2Dジオメトリから中心カーブの生成および3Dジオメトリから曲線の生成やオクルージョンの生成など、Labsツールを使用することで容易に作業を行うことが出来ます。