Labs SciFi Panels / Quick Material / Curve Branchesノードについて


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

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

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

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



Labs SciFi Panelsとは

SciFiパネリングを生成するためのRebirthプロジェクトのHDA(Houdini Digital Asset)の例です。

これは、Quixelを使用したGDC(Game Developers Conference)デモンストレーション用に特別に設計されたツールですが、その出来栄えが多くの方に興味を持っていただいたため、リバースエンジニアリングのためにそのままリリースされました。

各パラメーターについて

Global Settings
1.Generate New UVs
入力されたUVを平坦に上書きします。

2.Pattern Rotation
切断パターンの角度を調整します。

3.Border Thickness
パネルの周りのパディング(SciFiの外観の一部)を調整します。

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

5.Thickness
切り口の深さを調整します。

6.Panel Deletion Chance
パネルが削除される割合(0〜100)を設定します。100は、すべてのパネルが削除されることを意味し、0はパネルが削除されないことを意味します。

7.Deletion Seed
微調整のために削除部分のランダム化を制御します。

8.Enabled Random Vertex Colors
パネルに頂点カラーを追加します。

9.Vertex Colors
色の割合の分布を設定します。

Lot Division
10.Irregularity
値が小さいほど切り口はプリミティブに沿って半分になり、値が大きいほど様々なサイズのプリミティブが生成されます。

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

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

13.Alignment
カットの向きを指定します。バウンディングボックスは、ワールドスペースのカット用であり、最長のエッジは形状に対して相対的になります。

14.Cluster Lots
ロット(多角形の集合)をクラスターに結合できるようにします。

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

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

Padding
1.Spacing
パネル間のパディングを調整します。

2.Spacing Variation
パネル間のパディングのランダム化を調整します。
Notches
3.Percentage
SciFiの切り口の形状によってブーリアンされる割合を設定します。

4.Deviation
切り口を(中央から)エッジに沿ってスライドさせます。

5.Length
切り口の長さを調整します。

6.Notches Seed
切り口のランダム性を調整します。

Corner Bevels
7.Corner Bevels Chance
コーナーから削る度合い(0-100)を設定します。

8.Corner Bevels Depth
コーナーカットの奥行きを設定します。



Labs Quick Materialとは

Labs Quick Materialノードは、PBR(フィジカルベースドレンダリング)マテリアルを非常に簡単にセットアップできる便利なツールです。このノードを使用して作成できるマテリアルは、Principled ShaderとLabs PBR(GameDev)とLabs Matcapです。このツールは、マテリアルの設定速度を除いて、MATコンテキストでオリジナルのマテリアルを作成するのと比較して、特に利点はありません。

各パラメーターについて

1.Materials
このマルチパラメーターは、入力メッシュに作成して割り当てるマテリアルの数を制御します。

2.Material Type
これにより、ジオメトリに割り当てるマテリアルを指定できます。

3.Material Name
これにより、生成されたMATシェーダーのマテリアル名を設定します。

4.Group
これにより、必要に応じて、作成したシェーダーを特定のプリミティブセットにのみ割り当てることができます。

Principledshader
Base Color
5.BaseColor Texture
Base Colorに使用されるテクスチャを設定します。

6.Tint
これは、Base Colorのテクスチャが乗算される色合いを調整します。

Opacity
7.Opacity Texture
Opacity(不透明度)に使用するテクスチャを設定します。

Normal
8.Normal Texture
Normal(法線)に使用されるテクスチャを設定します。

9.Flip Y
これにより、「Normal Texture」で指定されたノーマルマップのYチャネルを反転できます。

10.Rounded Edge
丸みを帯びたエッジシェーダーを切り替えることができます。

11.Radius
シェーダー内の丸みを帯びたエッジの半径を制御します。

12.Mode
丸みを帯びたエッジを検出する際に含めるエッジの種類を制御します。

Roughness
13.Roughness Texture
Roughness(粗さ)に使用するテクスチャを設定します。

14.Roughness
Roughness Textureが設定された場合、これは、Roughness Textureのスカラーとして機能します。Roughness Textureが設定されていない場合、これは一定のRoughness値として機能します。

15.IOR
マテリアルの屈折率を設定します。


Metallic
16.Metallic Texture
Metallic(メタリック)に使用するテクスチャを設定します。

17.Metallic
これは、Metallic Textureのスカラーとして機能します。Roughness Textureが指定されていない場合、これは一定のMetallic値として機能します。

Labs PBR
Albedo
1.Base Color
このマテリアルの拡散の色調を設定できます。これを指定すると、Albedo Textureパラメーターと乗算されます。

2.Albedo Texture
ベースカラーに使用されるテクスチャを設定します。

Roughness
3.Horizon Smoothing
環境反射のスムージングを制御します。

4.Invert Roughness
Roughness値(粗さ)を反転できます。

※IOR、Roughnessパラメーターは上記で説明したPrincipledshaderのIOR、Roughnessパラメーターと同様に機能します。

Occlusion
5.Occlusion
AO(アンビエントオクルージョン)マップの強度を制御します。

6.Texture
AOマップを指定します。

7.Channel
テクスチャのどのチャネルをRoughness(粗さ)として使用するか指定します。このパラメーターは、テクスチャを適用した場合に役立ちます。
Emissive
8.Emission Intensity
これは、全体的なEmission(発光)の強度を制御します。

9.Emission Color
Emission Color(発光色)を設定します。

10.Emission Texture
これは、Emission Textureを提供するオプションのスロットです。

Transparency
11.Transparency
これは、マテリアルの全体的なTransparency(透明度)を制御します。

12.Transparency Texture
これは、Transparency Textureを提供するオプションのスロットです。
Advanced
13.Importance Sampled Ambient
有効化することで、より洗練された方法で環境ライトからDiffuse(拡散)情報をサンプリングします。

14.Number of Diffuse Samples
Diffuseの計算中の環境光のサンプル数を設定します。

15.Importance Sampled Reflections
有効化することで、オブジェクトの粗さに基づくキューブマップをリアルタイムでぼかします。

16.Number of Specular Samples
スペキュラの寄与度を取得するサンプル数を制御します。

17.Shade Both Sides As Front
有効化することで、オブジェクトの粗さに基づくキューブマップをリアルタイムでぼかします。

Labs Matcap
1.MatCap Texture
MatCapの計算に使用されるテクスチャを設定します。

2.Use MatCap Alpha
MatCapシェーダーでのアルファチャネルの使用を有効/無効に設定します。


Labs SciFi Panels / Quick Materialノードの機能

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

ジオメトリネットワーク上でTestgeometry Pigheadを作成します。今回は、シェーダーは使用しないのでパラメーターの[Add Shader]のチェックをオフにします。

次に、UV Layoutノードを接続します。ディスプレイフラグを付けると、UVグリッドが表示されたことが確認できます。

パラメーターの[Scale Island to Match Their Surface Areas]にチェックを入れます。このパラメーターを有効にすることで、P(ポジション)を使用して測定された3D表面積に対して、UVアイランドを一致させることができます。また、Axis Alignmenパラメーターを[By Island Position in 3D]に変更することで、UVラインが3Dの座標軸に合うように設定することができます。

下画像は、デフォルトのUV Layoutノードとパラメーターを[Scale Island to Match Their Surface Areas]、[Axis Alignmen:By Island Position in 3D]に変更した結果です。パラメーターを調整することで、適切にUVが設定されたことが確認できます。

UV Layoutノードの下にLabs SciFi Panelsノードを接続します。ディスプレイフラグを付けると、ジオメトリの面が欠け、ランダムに分割されていることが確認できます。

■補足:Persp > Shading > Smooth Shadedを選択することで、ジオメトリのエッジを非表示にすることができます。

ここからは、いくつかのパラメーターを設定します。

下画像は、Panel Deletion Chanceパラメーターを調整した結果です。このパラメーターを調整することで、削除されるパネルを設定することができます。
今回は、[Panel Deletion Chance:0]に設定します。

次に、Border Thicknessパラメーターを設定します。このパラメーターは、パネル周りのパディングを調整します。つまり、元のテストジオメトリのエッジを基にパネルが調整されます。
こちらでは、[Border Thickness:0.005]に設定します。

次に、Minimum Lot Sizeパラメーターを設定します。このパラメーターの数値より小さいプリミティブは分割されません。今回は、[Minimum Lot Size:0.001]に設定します。

次に、Cluster Lotsパラメーターにチェックを入れます。このパラメーターを有効化することで、ロット(多角形の集合)をクラスターに結合することが出来ます。

Number of Clustersパラメーターを設定します。
このパラメーターは、クラスターに結合した後の最終のロット数を調整します。値が大きい場合は、ロット数も多くなり、ノード情報を確認すると、ポイント数なども大きくなることが確認できます。

今回は、[Number of Cluster:200]に設定します。

次に、Spacingパラメーターを設定します。このパラメーターは、パネル間のパディングを調整します。値が大きい場合、パネルの間隔が広くなります。
今回は、[Spacing:0.0001]に設定します。

次に、Lengthパラメーターを設定します。これはエッジの長さを調整することができます。こちらでは、デフォルトの値0.5から値0.25に設定しています。
下画像を確認すると、エッジの長さを調整することで一部の隙間が詰められたことが確認できます。

Labs SciFi Panelノードの調整は以上です。次に、マテリアルを割り当てる前にライトを事前に作成します。Objectネットワークに移動し、シェルフツールから[Environment Light]アイコンをクリックします。

Environment Mapパラメーターの右端アイコンを選択します。Choose Imageウィンドウが展開されるので、Houdiniに実装されているHDRI画像を選択し、[Accept]をクリックします。こちらでは、$HFS/houdini/pic/hdri/の[HDRIHaven_lenong_1_2k.rat]を指定しています。

Acceptをクリックすることで、ビューポートに環境マップとしてHDRI画像が適用されたことが確認できます。
Geometryノードをダブルクリックして、ジオメトリネットワークに移動します。

Labs SciFi Panelノードの下にLabs Quick Materialノードを接続します。

下画像は、Labs Quick Materialノードのディスプレイフラグを切り替えた結果です。このノードは簡単かつ便利なノードです。Labs Quick Materialノードのディスプレイフラグを付けるだけで、マテリアルが適用されたことが確認できます。

パラメーターを[Roughness:0]、[IOR:3]に設定します。すると、メタリックな印象になります。

■補足:Materialノードを使用した場合
下の説明図は、Labs Quick Materialノードと同様にメタリックなマテリアルを作成し、MaterialノードでPrincipledshaderノードを参照した例です。

手順は以下の通りです。
1.ジオメトリネットワークで[Material Networkノード]を作成
2.VEX ビルダーで[Principledshaderノード]を作成
・パラメーターを[Base Color:1,1,1]、[IOR:3]、[Roughness:0]に設定
3.ジオメトリネットワークへ戻り、[Materialノード]を作成
・Materialパラメーターで作成したPrincipledshaderノードを指定

Labs Quick Materialノードを使用することで、Materialネットワークでノードを作成する手間を省き、作業を簡略化することができます。

下画像は、この状態でレンダリングした結果です。

下の動画では、上記で記載したLabs SciFi Panel / Labs Quick Materialノードについて手順を動画でまとめています。併せて、ご覧ください。

Labs SciFi Panels / Quick Materialノードについては以上です。次に、Labs Curve Branchesノードについてご紹介します。



Labs Curve Branchesとは

曲線の上に曲線を散りばめ、多くの直感的なコントロールで、きれいな幾何学的な枝から有機的なつるへと変化していきます。このノードは、ノードのコピーを連鎖させて、曲線を再帰的に成長させることができます。L-Systems SOPに似ていますが、このノードはL-Systemsよりはるかにコントロールが容易です。

※L-Systems SOPは、木、稲妻、雪の結晶、花など、その他の枝分かれする複雑かつ有機的な構造をシミュレーションすることができます。

各パラメーターについて

1.Color
生成された枝(ブランチ)の色を設定します。

2.Start
入力曲線に沿って枝が成長し始める最小距離を指定します。値0.5は、枝が入力曲線の途中からしか成長できないことを意味します。

3.Finish
入力曲線に沿って枝が成長し始める最大距離を指定します。値0.7は、元の曲線入力の70%で分岐が生成されなくなることを意味します。

4.Number of Children
入力曲線ごとに生成する枝の数を設定します。

5.Variation +-
垂直方向のランダムオフセットの量を調整します。

6.Length
生成された枝の長さを設定します。

7.Vertical Offset
枝の方向ベクトルのYコンポーネントに追加されたオフセットを設定します。値が0の場合、枝は入力曲線に対して垂直に成長します。

8.Mirror X
有効化することで枝を複製します。

9.Spread
入力曲線の周りで枝がねじれていく割合を指定します。値0は、すべての枝が(入力曲線に対して)同じ平面上に留まることを意味します。低いSpread値は、入力曲線の周りで枝が渦巻き、高いSpread値はより有機的で混沌とした印象を与えます。

10.Curl
枝にカール効果を適用して、ツルや有機的な植物の形に近づけます。

Noise
1.Intensity
枝の長さに沿ってノイズが適用される場所を制御します。ランプの左側は分岐の始まりを表し、右側は分岐の終わりを表します。

2.Amplitude
Intensityランプに対して乗算されたノイズの振幅を調整します。

3.Frequency
ノイズの周波数を設定します。

4.Offset
ノイズのオフセットを設定します。


Labs Curve Branchesノードの機能

次に、Labs Curve Branchesノードの機能についてご紹介します。こちらも同様に、Houdini18.0.499を使用しています。
最初に、ジオメトリネットワーク上でLabs Curve Branchesノードを作成します。ディスプレイフラグを付けると、ビューポート上に4本の緑色のカーブが表示されたことが確認できます。

次に、各パラメーターについてご紹介します。
Number of Childrenパラメーターは、カーブ数を設定することができます。今回は、[Number of Children:9]に設定します。

Lengthパラメーターは、カーブの長さを調整することができます。今回は、[Length:0.1]に設定します。

次に、[Variation +-:0.1]を設定します。Variation +-パラメーターを調整することで生成されたカーブの長さをランダムに調整することができます。

次に、Vertical Offsetパラメーターを調整します。値が0の場合、カーブは垂直に配置されます。

今回は、[Vertical Offset:1]に変更して、カーブの角度を設定します。

Curlパラメーターは、枝にカール効果を割り当てることができます。今回は、[Curl:0.006]に設定します。

Amplitudeパラメーターは、ノイズの強度を調整することができます。今回は、[Amplitude:0.45]に設定し、強いノイズを適用します。

次に、枝のような形状に近づけるため、[Frequency:1.2,1.2,1.2]に設定します。

次に、Labs Curve Branchesノードを新たに作成し、先ほど作成したLabs Curve Branchesノードに接続します。識別し易いようにパラメーターを[Color:1,0,0]に変更し、カーブを赤色にします。

作成したカーブ(赤色)は、既存のカーブ(緑色)から生成されたことが確認できます。

ここからは、赤色のカーブの形状を調整します。
最初に、[Start:0.2]に設定します。Startパラメーターは、入力曲線に沿って枝が成長し始める最小距離を指定します。

次に、Number of Childrenパラメーターを設定します。
■補足:緑色カーブを[Number of Children:1]に設定し、赤色カーブを[Number of Children:4]にした場合、1本の緑色カーブから4本の赤色カーブを生成することができます。

[Number of Children:14]に設定します。1本の緑色カーブから14本の赤色カーブを生成することができます。

次に、カーブの長さを調整するため[Length:0.042]に設定します。

[Vertical Offset:7]に設定し、カーブの角度を調整します。

次に、Mirror Xパラメーターにチェックを入れます。Mirror Xパラメーターを有効化した場合、赤色カーブが複製されたことが確認できます。

カーブのノイズの強度を調整するため、[Amplitude:0.055]に設定します。赤色カーブの調整は以上です。

次に、新たにカーブを作成するためLabs Curve Branchesノードを作成し、先ほどの赤色カーブに接続します。パラメーターを[Color:0,0,1]に変更することで、青色カーブが作成されたことが確認できます。

ここからは、青色カーブの形状を調整します。
最初に、[Number of Children:2]に変更します。値を2にすることで、1本の赤色カーブから2本の青色カーブを作成することができます。

カーブの長さを調整します。[Length:0.042]にします。

次に、[Variation +-:16]に設定します。このパラメーターでは、赤色カーブから生成される青色カーブ数をランダムに設定することができます。数値を大きくした場合、生成されるカーブ数は多くなります。

次に、[Start:0.26]、[Vertical Offset:7]、[Mirror X:ON]に設定します。

最後に、ノイズの強度を[Amplitude:0.055]に設定します。Labs Curve Branchesノードの設定については以上です。

Labs Curve Branchesノードを組み合わせることで、カーブ上にカーブを生成し、植物の枝のような曲線を作成することができます。

「Labs SciFi Panels」「Labs Quick Material」「Labs Curve Branches」ノードについては以上です。

これらのノードを使用することで、「SFチックなパネルの作成」「容易なPBRマテリアルのセットアップ」「ジオメトリックな枝の生成」など、Labsツールを使用することで容易に作業を行うことが出来ます。