Labs Delete Small Parts / Align and Distribute / Cylinder Generatorノードについて


こちらの記事では、「Labs Delete Small Parts」「Labs Align and Distribute」「Labs Cylinder Generator」ノードの概要および各ノードのパラメーターについてご紹介します。
SideFXLabsツールのノードは、SideFX社のホームページで紹介されています。併せてご覧ください。

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

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

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



Labs Delete Small Partsとは

各ピースを接続性とサイズに基づいて削除します。
このノードは、メッシュ上の各ピースのサイズを計算し、特定のサイズのしきい値を下回るものを削除します。これは、フォトグラメトリやFluidメッシュの目に留まらない無数の飛沫や切断された小さな破片をクリーンアップする場合に役立ちます。

各パラメーターについて

General
1.Mode
サイズを決める方法を指定します。

2.Extract Largest Piece
しきい値を無視して、1つの最大のピースのみを保持します。

3.Threshold
これより小さい面積または外周のピースが削除されます。

4.Delete Non Selected
パラメーターの操作を反転させます。


Advanced
5.Calculate Piece Attribute
ツールが接続性を判定するかどうかを切り替えます。

6.Piece Attribute
ツールが接続性を計算しないとしたら、ピースが何であるかを決めるアトリビュートを指定します。


Labs Delete Small Partsノードの機能

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

ジオメトリネットワーク上でBoxノードを作成します。パラメーターを[Uniform Scale:0.15]に設定します。

次に、Sphereノードを作成します。パラメーターを[Primitive Type:Polygon]、[Frequency:5]に設定します。

Sphereノードの下にAttribute Randomizeノードを接続します。デフォルトでは、Attribute Nameパラメーターに[Cd]が入力されているので、ディスプレイフラグを付けるとポイント毎にランダムな色が割り当てられていることが確認できます。

Attribute Randomizeノードのパラメーターを調整します。
[Attribute Name:pscale]に設定します。pscaleは、ポイントの大きさを指定するアトリビュートです。

次に、CopytoPointノードを作成して、第一入力にBoxノード、第二入力にAttribute Randomizeノードを接続します。
Attribute Randomizeノードでpscaleを指定することで、ポイントの大きさをランダム化し、CopytoPointノードでスフィアのポイントに対してボックスを配置することができます。

次に、CopytoPointノードの下にLabs Delete Small Partsノードを接続します。ディスプレイフラグを付けると、多数のボックスが削除されたことが確認できます。

ここからは、Labs Delete Small Partsノードのパラメーターについてご紹介します。
Thresholdパラメーターの数値を大きくすることで、削除されるピース(ボックス)は多くなります。

Extract Largest Pieceパラメーターを有効化した場合、Thresholdパラメーターを無視して一番大きいピース(ボックス)のみを表示することができます。

Delete Non Selectedパラメーターを有効化することで、削除するピースを反転することができます。つまり、通常は、面積または外周の小さいピースから削除されますが、パラメーターを有効にすることで面積/外周の大きいピースが削除されます。

■補足:ParticleシミュレーションでのLabs Delete Small Partsノードの使用
次に、Particleシミュレーションに対して、先ほどと同様にAttribute Randomizeノードでポイントの大きさをランダム化して、CopytoPointノードで各ポイントに対してボックスを割り当てます。

ここからは、シミュレーションを作成する際の大まかな流れをご紹介します。
最初に、オブジェクトネットワークでGridノードを作成します。

次に、Particlesタブの[Source Particle Emitter]アイコンをクリックします。

アイコンをクリックすると、オブジェクトネットワークにGeometryノードの[source_particles]、DOP Networkノードの[AutoDopnetwork]が作成されたことが確認できます。
次に、[AutoDopnetwork]の中に入り、パーティクルを調整します。

POP Sourceノードを選択して、[Birth] > [Const. Birth Rate:200]に設定します。Const. Birth Rateパラメーターは、1秒毎に放出されるパーティクル数を設定することができます。

次に、Particlesタブの[Force Particles][Drag Particles]アイコンをクリックします。

アイコンをクリックすると、POP Sourceノードの下にPOP Force、POP Dragノードが作成されたことが確認できます。

POP Forceノードのパラメーターを[Amplitude:10]、[Swirl Size:5]に設定します。

次に、Particlesタブの[Color Particles]アイコンをクリックします。

アイコンをクリックすると、POP Dragノードの下にPOP Colorノードが作成されたことが確認できます。パラメーターの[Color Type:Random]に変更します。ビューポートを確認すると、各ポイントに色が割り当てられたことが確認できます。

下の動画は、この状態のシミュレーション結果です。パーティクルの調整は以上です。
次に、各ポイントに割り当てるボックスを作成するため、オブジェクトネットワークに移動します。

パーティクルを生成するベースとなるGridノードのディスプレイフラグをオフにします。次に、Geometryノード[source_particles]を選択し階層に入ります。

ジオメトリネットワーク上でBoxノードを作成します。パラメーターを[Uniform Scale:0.8]に設定します。

次に、POP Source Emitterアイコンをクリックした際に自動的に作成されたDop I/Oノードの下にAttribute Randomizeノードを作成します。こちらは先ほど同様に、[Attribute Name:pscale]に変更します。

次に、CopytoPointノードを作成し、こちらも先ほどと同様に第一入力にBoxノード、第二入力にAttribute Randomizeノードを接続します。ディスプレイフラグを付けると、ランダムな大きさのボックスが生成されたことが確認できます。

CopytoPointノードの下にLabs Delete Small Partsノードを接続します。パラメーターを[Threshold:1.3]に変更します。こちらも、ディスプレイフラグを付けると、Thresholdパラメーターに基づいて小さいボックスが削除されたことが確認できます。

下の画像は、Labs Delete Small Partsノードを有効/無効に切り替えた結果です。

また、下の右画像は元のジオメトリから、Labs Delete Small Partsノードによって削除されたジオメトリです。
ノードを適用することで、無数の細々としたジオメトリを削除することができます。

下の動画では、この状態のParticleシミュレーションの結果をご紹介しています。併せて、ご覧ください。

Labs Delete Small Partsノードについては以上です。次に、Labs Align and Distributeノードについてご紹介します。



Labs Align and Distributeとは

軸に沿って形状の集合体を四方に広げます。
このHDAは、個々の形状を識別してそれらをユーザーが定義した軸に沿って広げます。個々の形状を識別する方法と分散の方向、間隔、および並べ替えを選択するためのコントロールが用意されています。

各パラメーターについて

Folder Name
1.Split By
分散される要素を識別する方法を指定します。(隣接するアイランド (connectivity)または@name)

2.Sort By
並べ替えないか、または名前、サイズ毎に並べ替えるかを選択します。

3.Spacing
各要素間に適用される間隔を設定します。

Global Alignment
4.Axis
要素をどの軸に沿って配置するかを決定します。

5.Alignment
選択した軸の正方向または負方向に沿って要素を広げるかどうかを決定します。


Labs Align and Distributeノードの機能

次に、Labs Align and Distributeノードの機能についてご紹介します。こちらも同様に、Houdini18.0.499を使用しています。

最初に、ジオメトリネットワーク上にTestgeometry Rubbertoyノードを作成します。

次に、Labs Align and Distributeノードを接続します。このノードはとてもシンプルです。ディスプレイフラグを付けると、テストジオメトリの各パーツが直列に配置されたことが確認できます。

ここからは、各パラメーターについてご紹介します。
Sort byパラメーターを[Size]に変更した場合、大きさ毎にジオメトリを配置することができます。今回は、デフォルトの[None]を使用します。

下画像は、Spacingパラメーターを調整した結果です。このパラメーターを調整することで、ジオメトリの間隔を設定することができます。値が大きい程、間隔は大きくなります。

下画像は、Axisパラメーターを調整した結果です。パラメーターを変更することでジオメトリをXYZ軸に沿って配置することが出来ます。

下画像は、Alignmentパラメーターを調整した結果です。パラメーターをPositiveにすると、正方向にジオメトリが配置され、Centerの場合は中央、Negativeの場合は負の方向にジオメトリが配置されます。

Alignment Modeパラメーターを[Grid]に変更した場合、グリッドに沿って平面にジオメトリが配置されます。

■補足:その他のジオメトリの再配置
ここからは、CopytoPointノードで複製したサッカーボールをLabs Align and Distributeノードを使用して再配置する手順についてご紹介します。

ジオメトリネットワーク上でPlatonicノードを作成します。パラメーターの[Solid Type:Soccer Ball]、[Radius:0.1]に変更します。

次に、Boxノードを作成します。パラメーターを[Primitive Type:Polygon Mesh]に変更します。

作成したボックスのポイントに対して、サッカーボールを配置させるため、CopytoPointノードを作成します。第一入力にPlatonicノード、第二入力にBoxノードを接続します。
ディスプレイフラグを付けると、各ポイント毎にサッカーボールが配置されたことが確認できます。

CopytoPointノードの下にLabs Align and Distributeノードを接続します。
パラメーターを[Spacing:1.5]、[Alignment Mode:Grid]に変更すると、下画像のようにグリッドに沿ってジオメトリが再配置されたことが確認できます。

Labs Align and Distributeノードについては以上です。次に、Labs Cylinder Generatorノードについてご紹介します。



Labs Cylinder Generatorとは

曲線からUVと法線を使用してチューブを作成します。
シリンダージェネレーターは、リアルタイムVFX用にチューブを生成するためのいくつかの通常の機能に仕上げています。内側と外側の半径を素早く設定し、プロファイル(輪郭)を変更してノイズを追加し、複数の目的に合わせてチューブを形成することができます。UVは自動的にレイアウトされ、オーバーライドコントロールで調整されます。ゲームエンジンのマテリアルパラメータで動かすために、UまたはVに基づいて頂点カラーを追加します。

各パラメーターについて

Settings
1.Cap Ends
チューブにエンドキャップを作成します。
※この場合、エンドキャップは端の断面を面で塞ぎます。

2.Inner Radius
開始円のオブジェクトの中心からの距離を設定します。

3.Outer Radius
終了円のオブジェクトの中心からの距離を設定します。

4.Arc Start
弧の開始点を角度単位で、x軸を基準にして表示します。

5.Arc End
弧の終点を角度単位で、x軸を基準にして表示します。

6.Add Twist
ツイスト値に基づいて各セグメントをオフセットします。

7.Twist
各セグメントの回転値(回転数で測定)を設定します。

8.U Segments
チューブの周りのポリゴンのセグメント数を設定します。

9.V Segments
チューブに沿ったポリゴンのセグメント数を設定します。

10.Rotate UVs 90
これは基本的に、UVのU方向とV方向を反転させます。

11.U Tiling
タイリング効果を得るために、UVをU方向に繰り返します。

12.V Tiling
タイリング効果を得るために、UVをV方向に繰り返します。

13.U Range And Bias
最初の2つのコンポーネントは、UVのカバレッジをU方向に設定します。3番目のコンポーネントは、べき関数(power function)を使用してUVを歪めます。
※カバレッジ(網羅率):全体の内どれくらい補っているかを表した指標。

14.V Range And Bias
最初の2つのコンポーネントは、UVのカバレッジをV方向に設定します。3番目のコンポーネントは、べき関数(power function)を使用してUVを歪めます。

15.N Cusp Angle
頂点法線を計算するとき、1つの点の周りの頂点の法線が互いにこの角度(度数)以下である場合、それらは平均化され、各ポリゴンの頂点角度で重み付けされます。

16.Ramp Multiplier
プロファイルランプの効果を増減させます。

17.Curve Ramp
ランプを使用して、チューブの形状を変更します。

Noise
1.Add Noise
ジオメトリのパーリンノイズの歪みを有効にします。
※パーリンノイズ(Perlin noise):コンピューターグラフィックスの現実性を増すために使用されるテクスチャ作成の手法。

2.Noise Intensity
ディスプレイスメント量を設定します。

3.Noise Scale
ノイズを軸ごとに独立してスケーリングします。

4.Noise Octaves
合成されたノイズレイヤーの数を設定します。

5.Add UV Noise
ノイズでUVを歪めます。

6.UV Frequency
テクスチャ空間におけるノイズの周波数を設定します。

7.UV Offset
ノイズの位置をオフセットします。

8.UV Noise Intensity
UVの量を変更します。

Vertex Colour
1.Add Colour
バーテックスアトリビュート(Cd)を作成します。

2.V Color Ramp
U方向を使用していたランプをV方向に切り替えます。


Labs Cylinder Generatorノードの機能

次に、Labs Cylinder Generatorノードの機能についてご紹介します。こちらも同様に、Houdini18.0.499を使用しています。

今回は、下画像のような朝顔をLabs Cylinder Generatorノードを使用して、最初に朝顔のおしべを3つ作成し、次に花弁、最後に根元のがくを作成します。

最初に、ジオメトリネットワーク上でCurveノードを5つ作成します。

次に、ビューポートにカーブを作成します。カーブを描きやすいように、ビューポート右上[Persp] > [Set View] > [Right viewport]を選択します。

Curve1ノードを選択して、ビューポート上に下画像のようなカーブを作成し、Enterキーを押します。

次に、Labs Cylinder Generatorノードを作成し、Curve1ノードに接続します。

ビューポートの表示をPerspective viewportに切り替えます。Labs Cylinder Generatorノードを接続することで、カーブに沿ってチューブが生成されたことが確認できます。

ここからは、各パラメーターについてご紹介します。
Inner Radiusパラメーターは、最初に生成されたサークルのスケールを調整することができます。数値を小さくすると、サークルの開始点のスケールが小さくなることが確認できます。

こちらでは、[Inner Radius:0.02]に設定します。

Caps Endsパラメーターを有効にした場合、プリミティブを生成し、ジオメトリに蓋をすることができます。今回は、[Caps Ends:ON]に設定します。

Outer Radiusパラメーターは、最後に生成されたサークルのスケールを調整することができます。数値を小さくすると、サークルの終了点のスケールが小さくなることが確認できます。今回は、[Outer Radius:0.05]に設定します。

次に、パラメーターのNoiseタブを調整します。
最初に、[Add Noise]にチェックを入れます。チェックを入れることでノイズを調整することができます。

次に、[Noise Intensity:0.08]に設定します。このパラメーターは、ノイズのディスプレイスメント量を調整することができます。

次に、Vertex Colorタブを修正します。
[Add Color]にチェックを入れることで、生成したチューブに色を割り当てることができます。

こちらでは、朝顔のおしべを作成するため、Color Rampパラメーターでは黄色のグラデーションに設定します。パラメーターの設定は以上です。
判別しやすいように、ネットワークエディタでCキーを押し、Curve / Labs Cylinder Generatorノードを黄色で表示します。

次に、このおしべを残り2つ作成します。Curve2ノードを選択し、先ほどと同様にビューポート表示をRight viewportに切り替え、カーブを作成します。

ビューポートをPerspective viewportに切り替えます。
先ほどパラメーターを調整したLabs Cylinder Generator1ノードを[Ctrl+C]キーでコピーし、Curve2ノードの下に複製したLabs Cylinder Generator2ノードを接続します。
パラメーターは特に変更せず、こちらも判別しやすいようにノードを黄色に変更します。

同様に、Curve3ノードを選択し、ビューポート上で下画像のようなカーブを作成します。

Perspective viewportに切り替え、3つのカーブが一直線上に配置されないように、Curve3の位置を少し調整します。

こちらも先ほどと同様に、Labs Labs Cylinder Generator2ノードをコピーして、Curve3ノードの下に複製したLabs Cylinder Generator3ノードを接続します。判別しやすいように、ノードを黄色に変更します。

最後に、Mergeノードを作成し、それぞれ3つのおしべを接続します。
おしべの作成は以上です。次に、朝顔の花びらを作成します。

ビューポートをRight viewportに切り替えます。Curve4ノードを選択して、先ほどのMergeノードをテンプレート表示にし、おしべを基に花びらのカーブを作成します。
こちらでは、おしべよりも少し大きいカーブを作成しています。

Perspective viewportに切り替え、新たにLabs Cylinder Generator4ノードを作成します。

Settingsタブのパラメーターを[Inner Radius:0.05]、[Outer Radius:1.5]に変更します。

次に、Curve Rampパラメーターを下画像のように調整します。

Noiseタブの[Add Noise]にチェックを入れ、ノイズを適用します。

次に、[Noise Intensity:0.4]に変更し、[Noise Scale:2,2,2]に設定します。
Noise Scaleパラメーターは、ノイズを軸毎に調整することができます。

Vertex Colorタブの[Add Color]にチェックを入れ、Color Rampパラメーターを下画像のように調整します。

色を適用して、再度、Noiseタブに戻りノイズを調整します。
[Add UV Noise]にチェックを入れ、 ノイズでUVを歪めます。[UV Frequency:5,0,0]、[UV Noise Intensity:3.35]に設定します。
UV Frequencyパラメーターは、軸毎にノイズの周波数を調整し値が高い程ノイズのディテールは細かくなります。UV Noise Intensityパラメーターは、UVの量を調整することができます。

下画像は[Add UV Noise]を有効/無効に切り替えた結果です。

判別しやすいようにCurve/Labs Cylinder Generatorノードを選択し、ノードを紫色に変更します。そして、Labs Cylinder Generator4ノードをMergeノードに接続します。

次に、朝顔の根元のがくを作成します。Curve5ノードを選択して、Right viewport上でカーブを作成します。こちらでは、おしべより小さいカーブを作成します。

こちらも先ほどと同様に、新規でLabs Cylinder Generator5ノードを作成します。

Settingsタブのパラメーターを[Inner Radius:0.05]、[Outer Radius:0.6]に変更します。

次に、Curve Rampパラメーターを下画像のように調整します。

そして、Noiseタブの[Add Noise]にチェックを入れ、[Noise Intensity:0.1]に変更します。

同様に、Vertex Colorタブの[Add Color]にチェックを入れ、Color Rampパラメーターを下画像のように調整します。
朝顔のがくの作成は以上です。

先ほどと同様に、作成したがくをMergeノードに接続します。Labs Cylinder Generatorノードを使用することで、カーブに対してチューブを作成し、ノード1つでノイズや色も割り当てることができます。

■補足
Mergeノードの下にLabs TurnTableノードを接続することで、ジオメトリの全体の色や形状を確認することができます。

「Labs Delete Small Parts」「Labs Align and Distribute」「Labs Cylinder Generator」ノードについては以上です。

これらのノードを使用することで、「パラメーターに基づいたピースの削除」や「軸に沿ったジオメトリの再配置」や「カーブに沿ったチューブの生成」など、Labsツールを使用することで容易に作業を行うことが出来ます。