Labs Sphere Generator / Lot Subdivision / Cable Generatorノードについて


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

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

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

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


Labs Sphere Generatorとは

Labs Sphere Generatorは、UVと法線を持つ立方体からスフィアを作成します。
このノードは、立方体をスフィアの形に変形し、UVを十字形に配置します。通常のスフィアと同様に、分割のレベルを変更することができます。また、法線を修正したり、平面に基づいて切断することや、いずれかの軸を基準にして頂点カラーを追加することもできます。

各パラメーターについて

Settings
1.Subdivisions
多角形の球体を構成するポリゴン数を増減させます。周波数が高いほど、球体は滑らかになります。

2.Uniform Scale
すべての軸で均等に拡大縮小します。

3.Scale
xyz軸に沿った不均一な拡大縮小を行います。

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

5.Cut Sphere
球体のクリッピングを有効にします。

6.Cut Position
球体のバウンディングボックスを基準にして、球体を切断する場所を設定します。

7.Cut Direction
Clipノードと同様に、切断面に垂直な軸方向を設定します。
※Clipノードとは、平面の片側のジオメトリを削除またはグループ化したり、平面に沿ってジオメトリを折り曲げたりします。

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

2.Ramp Axis
カラーランプが動く基本の軸(x = 0、y = 1、z = 2)を設定します。

Labs Sphere Generatorノードの機能

次に、Labs Sphere Generatorノードの機能についてご紹介します。今回は、Houdini18.0.532を使用しています。Houdiniを起動後、SideFX Labsツールが正常に読み込まれていることを確認します。

最初に、こちらではLabsツールを使用して下画像のようなスフィアを作成し、簡単なアニメーションを適用したシーンをご紹介します。

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

Labs Sphere Generatorノードのパラメーターについてご紹介します。
Subdivisionsパラメーターは、数値を調整することでポリゴン数を設定することができます。

Uniform Scaleパラメーターは、XYZ軸を基にジオメトリの拡大縮小を行うことができます。

Cut Sphereパラメーターを有効化することでジオメトリをクリッピングすることができます。

こちらでは、パラメーターを[Subdivisions:5]、[Uniform Scale:2]、[Cusp Angle:5]、[Cut Sphere:ON]に設定します。

次に、Vertex Colourタブを設定します。
[Add Colour]にチェックを入れ、ジオメトリに色を割り当てます。

こちらでは、下画像のようにColour Rampパラメーターを設定しています。判別しやすいように、ノードを選択し、キーボード[C]を押してノードに対して色を適用します。

色を設定後、ネットワークエディタ上でLabs Sphere Generatorノードを選択し、[Ctrl+C]でコピー、[Ctrl+V]でペーストしてノードを複製します。
ここからは、複製したノードのパラメーターを調整します。
複製したノードのCut Directionパラメーターを[Y:-1]に変更します。パラメーターを調整することで、クリッピングされるジオメトリを設定することができます。

次に、Vertex ColourタブのColour Rampパラメーター右側のアイコン[Reverse Domain]をクリックし、Rampパラメーターを反転します。

Mergeノードを作成し、2つのLabs Sphere Generatorノードを接続します。次に、このジオメトリに対してアニメーションを割り当てます。

こちらでは、タイムラインを360フレームに設定し、カレントフレームは1フレーム目にします。
Transformノードを作成し、Labs Sphere GeneratorノードとMergeノードの間に接続します。
TranslateYに対して、-sin($F*2+90)*0.8+0.8 を入力します。

再度、Transformノードを作成します。下側のジオメトリにアニメーションを割り当てるため、TranslateYに対して、こちらでは、sin($F*2+90)*0.8-0.8と入力します。

タイムラインを再生すると、下の動画のように上下に動くアニメーションを作成することができます。

■補足
Persp > Shading >Smooth Shadedに切り替えることで、ジオメトリのワイヤーを非表示にすることができます。

この手順でアニメーションを割り当てたジオメトリをあと2つ作成します。
先ほどと同様に、Labs Sphere Generatorノードを作成します。
パラメーターを[Subdivisions:5]、[Uniform Scale:1.5]、[Cusp Angle:5]、[Cut Sphere:ON]、[Cut Direction、X:-1、Y:0]に変更します。

次に、ジオメトリに色を割り当てます。
[Add Colour]を有効化して、[Ramp Axis:1]に設定します。Ramp Axisパラメーターを調整することで、色を割り当てる際の軸を設定できます。
識別しやすいようにノードをオレンジ色に設定します。

先ほどと同様に、Labs Sphere Generatorノードを複製し、パラメーターを調整します。[Cut Direction、X:1、Y:0]に設定します。

Colour Rampパラメーターの[Reverse Domain]を有効化します。

Mergeノードを作成し、2つのLabs Sphere Generatorノードを接続します。

次に、Transformノードを作成してアニメーションを割り当てます。
左側のジオメトリに対して、Transformノードを接続し、[TranslateX:sin($F*2+90)*0.7-0.7]を入力します。

右側のジオメトリに対してアニメーションを割り当てるため、再度、Transformノードを作成して[TranslateX:-sin($F*2+90)*0.7+0.7]を入力します。

下の動画は、Mergeノードにディスプレイフラグをつけてアニメーションを確認した結果です。左右に動くアニメーションが割り当てられたことが確認できます。

ここまでで、分割されたスフィアに対して、上下、左右に動くアニメーションを作成しました。もう1つジオメトリを作成します。分割したスフィアを作成し、斜め方向に動作するアニメーションを割り当てます。

最初に、Labs Sphere Generatorノードを作成して、パラメーターを調整します。
[Subdivisions:6]、[Uniform Scale:1.25]、[Cusp Angle:5]、[Cut Sphere:ON]、[Cut Direction、X:-1、Y-1]に変更します。

[Add Colour]を有効化して、[Ramp Axis:1]に設定します。識別しやすいようにノードを紫色に変更します。

先ほどと同様に、ノードを複製し、パラメーターを変更します。[Cut Direction、X:1、Y:0]に設定します。

Colour Rampパラメーターの[Reverse Domain]を有効にします。

次に、アニメーションを割り当てます。
左下のジオメトリに対して、Transformノードを作成して、[TranslateX:sin($F*2+90)*0.3-0.3]、[TranslateY:sin($F*2+90)*0.3-0.3]を入力します。

右上のジオメトリに対して、Transformノードを作成し、[TranslateX:-sin($F*2+90)*0.3+0.3]、[TranslateY:-sin($F*2+90)*0.3+0.3]に設定します。

Mergeノードにディスプレイフラグを付け、アニメーションを再生したすると、斜め方向にジオメトリが動作することが確認できます。

次に、Mergeノードを作成し、作成した全てのジオメトリを結合します。

下の動画は、アニメーションを再生した結果です。

■補足
最後に、追加で色がグラデーションに変化するジオメトリを作成します。こちらでは、Colour Rampパラメーターに対してfit関数を適用する際の大まかな流れをご紹介します。
先ほどと同様に、Labs Sphere Generatorノードを作成します。[Add Colour]にチェックを入れ、Colour Ramp > Colorパラメーターの各ポイントのRGB値に対して、それぞれ以下のエクスプレッションを入力します。

Point No.1
R:fit(sin($F*5 + 120), -1, 1, 0, 1)、G:fit(sin($F*5 + 240), -1, 1, 0, 1)、B:fit(sin($F*5), -1, 1, 0, 1)

Point No.2
R:fit(cos($F*5), -1, 1, 0, 1)、G:fit(cos($F*5 + 120), -1, 1, 0, 1)、B:fit(cos($F*5 + 240), -1, 1, 0, 1)

Point No.3
R:fit(cos($F*5), -1, 1, 0, 1)、G:fit(cos($F*5 + 120), -1, 1, 0, 1)、B:fit(cos($F*5 + 240), -1, 1, 0, 1)

Point No.4
R:fit(sin($F*5 + 120), -1, 1, 0, 1)、G:fit(sin($F*5 + 240), -1, 1, 0, 1)、B:fit(sin($F*5), -1, 1, 0, 1)

fit関数は、ある範囲の値を受け取り、その値を新しい範囲内の該当する値に変更することができます。

上記の式をColorパラメーターに割り当てることでアニメーションを作成することができます。

下の動画は、スフィア緑、オレンジ、紫と補足で作成したスフィアをMergeノードに接続した結果です。

Labs Sphere GeneratorノードはUVと法線が含まれているため、平面に基づいてジオメトリを切断することや、軸を基準にして頂点カラーを割り当てることができます。
Labs Sphere Generatorノードについては以上です。次に、Labs Lot Subdivisionノードについてご紹介します。



Labs Lot Subdivisionとは

ポリゴンをパネルに分割します。
宇宙船、SciFiの内部、都市ブロック、不規則な壁など、すべてのジオメトリの平らな部分を様々なサイズのパネルに分割する場合があります。このHDAは、最小サイズ、反復回数、不規則性を制御して、多角形を小さな「ロット」に繰り返し細分割します。
また、多くのロットをまとめて、さらに興味深い形状を形成する機能もあります。

各パラメーターについて

Base Settings
1.Alignment
切断の向きを決める方法を設定します。バウンディングボックスは、ワールドスペースカットの場合、最長のエッジは形状に対して相対的なものになります。

2.Minimum Lot Size
このサイズよりも小さいプリミティブは、カットの対象外となります。

3.Iterations
切断の細分化数を設定します。値1は、2つのプリミティブを提供し、値2は4つのプリミティブを提供します。

4.Random Seed
ランダム化を制御します。

Shape Settings
5.Irregularity
値が小さいと、切り口がプリミティブに沿って半分になり、値が大きいと、さまざまなサイズのプリミティブが生成されます。

6.Vertical Bias
負の数は水平方向の細長い破片(スライバー)を生成し、正の数は垂直方向の細長い破片を生成します。

7.Vertical Packing
上部(または下部)に向かってロットが集まるグラデーションの強さを調整します。

8.Cluster Lots
ロットをクラスターに結合できるようにします。

9.Number of Clusters
クラスターに結合した後の最終ロット数を設定します。


Labs Lot Subdivisionノードの機能

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

次に、Labs Lot Subdivisionノードを作成し、Gridノードの下に接続します。ディスプレイフラグを付けると、グリッドがパネルに分割されたことが確認できます。

ここからは、Labs Lot Subdivisionノードのパラメーターについてご紹介します。
Minimum Lot Sizeパラメーターは、プリミティブの数を調整することができます。ただし、このパラメーターに入力された値より小さいプリミティブは分割されません。 例えば、値5とした場合、5より小さいプリミティブは分割されません。値0.5の場合は、0.5より大きいプリミティブが分割されます。そのため、数値を小さくすると、分割されるプリミティブが多くなります。

ノードを情報を参照すると、パラメーターの数値が小さい場合は、多くのポイント/プリミティブなどが作成されたことが確認できます。

Iterationsパラメーターは、Minimum Lot Sizeパラメーターに似ていますが、入力された値より小さいプリミティブは分割されないという制限はなく、Iterationsパラメーターはシンプルに細分化数を設定します。
例えば、値1の場合は、プリミティブは2つとなり、値2の場合は4つのプリミティブが生成されます。パラメーターの数値を大きくすることで、単純に多くのプリミティブを生成します。

Irregularityパラメーターは、値が0の場合、同一サイズのプリミティブが作成されます。数値を大きくすると、異なるサイズのプリミティブが作成されます。

このように、Labs Lot Subdivisionsノードを使用することで、ポリゴンに対して自動的にパネル分割を行うことができます。Labs Lot Subdivisionノードについては以上です。次に、Labs Cable Generatorノードについてご紹介します。



Labs Cable Generatorとは

ケーブルの高い「ピン(pin)」ポイントと低い「たるみ(sag)」ポイントを表す曲線が与えられた場合、このSOPは、ユーザーが定義可能なケーブル数、形状、色からたるみのあるケーブルを生成します。

各パラメーターについて

1.Number of Cables
生成するケーブルの数を設定します。


Shape Controls
2.Tension
各曲線にどのくらい張力があるか設定します。平らなグラフは、すべてのケーブルが同じ張力を持っていることを意味します。ランプの値が下に行くほどケーブルがたるみます。ランプの値が上に行くほどケーブルがピンと張った状態になります。デフォルトの曲線は、ケーブルの約70%がたるみ、30%が徐々に張りが強くなることを意味します。

3.Horizontal Slack
垂直のケーブルのたるみに影響を与えないスムージングを設定します。

4.General Smoothing
全体的なスムージングを行い、大量のノイズが適用される場合に役立ちます。

5.Joint Smoothing
ターゲットのpinポイントに到達するケーブルの機能を柔らかくします。

6.Chance To Skip Pin
ピンの掛け違い頻度の調整し、より無秩序なケーブルレイアウトが可能になります。


Noise Options
7.Noise Frequency
ケーブルの位置に適用されるノイズ周波数を設定します。

8.Noise_Amplitude
ケーブルの位置に適用されるノイズの振幅を設定します。

Sweep Options
1.Radial Divisions
ケーブル断面の辺の数を設定します。デフォルトは12です。

2.Curve Resolution
ケーブルパスを生成するためにResample SOPで使用されるステップサイズを設定します。数値が小さいほど品質が高くなります。
※Resample SOPは、1つまたは複数の曲線またはサーフェスを均等な長さのセグメントにリサンプルします。

3.Radius Min Max
ケーブル半径の最小値と最大値を設定します。各ケーブルは、これらの値の間で乱数を選択します。

4.UV Scale
UVレイアウトの寸法を設定します。小さい数値は、UとVに対して値0.2で開始するのが最も効果的ですが、その後、より細かく制御するためにUV Layout SOPを追加します。
※UV Layout SOPは、限られたエリアに効率よくUVアイランドを敷き詰めます。


Detangle
5.Detangle
SOPベースのデタングリング(絡まりの解消)を有効にします。最初のケーブルレイアウトに十分なノイズとランダム性を持たせ、デタングリングを行うための余裕を与えます。

6.Detangle Iterations
デタングリング処理の反復回数を設定します。

7.Post Detangle Smooth
デタングリング後に適用されるスムージングの反復回数を設定します。

Vertex Colors
1.Add Vertex Colors
視覚化とIDマップの仮のカラーリングを有効にします。

2.Attribute Ramp
頂点カラーを追加するトグルが有効な場合のケーブルの色を制御します。


Labs Cable Generatorノードの機能

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

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

■補足
Persp > Set View > Front viewportにビューポートを変更することで、カーブを正確に作成することができます。

こちらでは、下画像のようなカーブを作成しています。作成後、ビューポート上でEnterキーを押します。

次に、Labs Cable Generatorノードを作成して、Curveノードの下に接続します。ディスプレイフラグを付けると、カーブを基にケーブルが生成されたことが確認できます。

ここからは、Labs Cable Generatorノードのパラメーターについてご紹介します。
Number of Cablesパラメーターは、生成されるケーブルの数を設定することができます。デフォルト値は、5です。

Chance To Skip Pinパラメーターは、ピンの数を調整し、ケーブルのレイアウトを設定します。デフォルト値は、0です。

Add Vertex Colorsパラメーターを有効化することで、ケーブルに対して色を割り当てることができます。

また、Noise_Amplitudeパラメーターを0にした場合、ケーブルは同一箇所に配置され、数値を高くすることでノイズを用いて配置されるケーブルの位置を調整することができます。デフォルト値は、0.5です。

Radial Divisionsパラメーターは、ケーブルの断面の辺数を設定することができます。デフォルト値は、12です。

最後に、General Smoothingパラメーターの数値を低くした場合、ケーブル間はたるみ、数値を高くすることでケーブル間を張らせることができます。デフォルト値は、50です。

「Labs Sphere Generator」「Labs Lot Subdivision」「Labs Cable Generator」ノードについては以上です。

これらのノードを使用することで、「UVや法線が組み込まれたスフィアの作成」、「ポリゴンの自動パネル分割」や「曲線を基にケーブルの自動生成」など、Labsツールを使用することで容易に作業を行うことが出来ます。