Labs Trace PSD File / Curve Sweep / Symmetrizeノードについて


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

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

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

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



Labs Trace PSD Fileとは

Photoshopファイルレイヤーから曲線を生成します。
このノードは、複数のレイヤーを持つPSDファイルで動作するTrace SOPのラッパーです。
これは、Photoshopファイルのレイヤーから取得した画像から曲線を生成するように設計されています。

※Trace SOPは、画像ファイルから曲線をトレースします。

各パラメーターについて

1.File
Photoshop(PSD)ファイルへのパスを指定します。

2.Reload PSD
ボタンをクリックすることで、Photoshopファイルを更新します。

3.Layers To Extract
処理するレイヤーの数を指定します。


Layer Parameters
4.Layer Name
抽出するレイヤーの名前を指定します。(大文字と小文字を区別します)

5.Brightness Threshold
曲線の対象となるデータを考慮して開始するポイントを制御します。


Advanced
6.Resample Step
曲線を再サンプリングする距離を指定します。

7.Inline Point Threshold
直列ポイントを削除するための許容値を指定します。

8.Shrink UVs
画像の内部色をより適切にサンプリングするために、カーブのUVを縮小します。曲線が境界線に接近した場合、UVが背景色を取得することがあります。

9.Shape
必要に応じて、形状自体を縮小または拡張します。


Labs Trace PSD Fileノードの機能

次に、Labs Trace PSD Fileノードについてご紹介します。ノードの機能をご紹介する前に、事前準備として、最初にPhotoshopで.psdファイルを作成します。

Photoshopを起動して、[新規作成]ボタンをクリックします。

次に、キャンバスサイズを指定します。こちらでは、[幅:1000、高さ:1000]pixelのキャンバスを作成しています。サイズを指定後、[作成]ボタンをクリックします。

まず最初に、Photoshopで作成したテキストデータをHoudiniに読み込む流れをご紹介します。キャンバスが作成された後、左側のツールバーからテキストアイコンをクリックします。

こちらでは、[2020]と入力します。次に、色を割り当てるため、入力したテキストを選択して左側のツールバーから描画色のアイコンをクリックします。
選択後、新たにウィンドウが展開されるのでお好みの色を選択して、[OK]をクリックします。

こちらでは、上記の手順で計3つのテキストレイヤーを作成しています。
また、デフォルトで作成された[レイヤー1]は不要なのでDeleteキーを押して削除します。

作成したファイルを保存するときは、画面左上部の[ファイル] > [別名で保存]を選択します。

ウィンドウが展開されるので、名前を付けて[保存]をクリックします。

すると、他のソフトウェア間での.psdファイルの互換性に関してウィンドウが表示されます。特に問題はないので[OK]をクリックします。

ここからはHoudiniを使用します。今回は、Houdini18.0.499を使用しています。Houdiniを起動後、SideFX Labsツールが正常に読み込まれていることを確認します。

最初に、ジオメトリネットワーク上でLabs Trace PSD Fileノードを作成します。Fileパラメーターの右端アイコンをクリックします。

アイコンをクリックすると、Chosse Imagesウィンドウが展開されるので先ほど作成した.psdファイルを選択して、[Accept]をクリックします。

次に、Layers To Extractパラメーターの[+]アイコンをクリックします。すると、Photoshopのレイヤーを指定することができるので、Layer Nameパラメーターのプルダウンから[2020]を選択します。

レイヤーを選択すると、ビューポート上にPhotoshopで作成したテキストが表示されます。

Resample Stepパラメーターを調整することで、曲線上のポイント間の距離を調整することができます。今回は、デフォルトの値10を使用しています。

今回は、レイヤーを3つ作成しているので残りのレイヤーも同様に指定します。

このように、Labs Trace PSD Fileノードを使用することで、色を付けてPhotoshopで作成したテキストレイヤーを簡単に読み込むことができます。テキストレイヤーの場合、数字、英字、ひらがななど様々な文字を読み込むことができます。

■ご注意:Photoshopのレイヤー名が日本語表記や記号(☆♡♪)の場合、Houdini側でレイヤーを指定した際Houdiniがクラッシュします。

そのため、Photoshopで「☆、♡、♪」などのテキストデータを作成した場合、[Layer]などと名前を英字または数字に変更する必要があります。
こちらでは、先ほど作成した.psdファイルに対して、レイヤーを追加して、Ctrl+Sキーでファイルを上書き保存します。

次に、Houdiniに移動します。パラメーターの[Reload PSD]ボタンをクリックして、.psdファイルを再読み込みします。
そして、先ほどと同様にLayers To Extractパラメーターの[+]アイコンをクリックし、作成した[Layer]を指定します。

レイヤーを指定すると、☆♡♪がビューポート上に表示されたことが確認できます。

Photoshopで.psdファイルを再編集して上書き保存した場合、Labs Trace PSD Fileノードの[Reload PSD]ボタンをクリックすることで、簡単にHoudini上でデータを更新することができます。


■補足:Photoshopのブラシツールを使用した.psdファイルを読み込む場合
Photoshopのブラシツールで作成したレイヤーもHoudiniに読み込むことが可能です。
その際、レイヤー名を日本語表記から英語表記に変換する必要があります。こちらも同様に、日本語表記のレイヤーをHoudiniで指定した場合、Houdiniがクラッシュします。

Houdini側では、Layer Nameパラメーターで各レイヤーを指定することで、ブラシツールで作成したデータをカーブとして読み込むことができます。

■補足:.psdファイルを使用したシーンの作成
例えば、上記で作成したLabs Trace PSD Fileノードの下にPolyExtrudeノードを接続し、ジオメトリに厚みを加えます。そして、Voronoi Fractureノードを割り当ててジオメトリを分割させて、RBD Fractured Objectを適用することで破壊シミュレーションを行うことができます。

ここからは、シミュレーションを適用する際の大まかな流れをご紹介します。
先ほど、作成したLabs Trace PSD Fileノードですが、こちらでは、[2020]と[Houdini]レイヤーを使用します。
最初に、Transformノードを接続して[Translate Y:1]、[Rotate X:90]に設定します。

次に、Poly Extrudeノードを接続します。マウスカーソルをビューポート上に置き、Enterキーを押します。すると、ジオメトリの厚みを調整することができる赤いバーが表示されます。

プリミティブを押し出すと、元のプリミティブは削除されます。元のプリミティブを削除しない場合は、パラメーターの[Output Back]にチェックを入れます。

次に、PolyExtrudeノードを選択してModelタブ[Shatter]アイコンをクリックします。

アイコンをクリックすることで、3つのノードが自動的に作成されます。

最初に、IsoOffsetノードにディスプレイフラグを付けると、ジオメトリを基にボリュームが生成されたことが確認できます。

次に、Scatterノードを確認すると、ボリューム内にポイントが散布されたことが確認できます。パラメーターの[Force Total Count:100]に設定します。

Voronoi Fractureノードでは、Scatterノードのポイントを基準にジオメトリを分割します。ディスプレイフラグを付けると、ジオメトリが分割されたことが確認できます。

次に、Rigid Bodiesタブから[RBD Fractured Object]アイコンを選択します。

破片オブジェクトの種類を選択するウィンドウが表示されるので、こちらでは[RBD Packed Object]を選択します。

※RBD Packed Object:複数のオブジェクトを1つのオブジェクトに圧縮して軽量化します。
※RBD Fractured Object:オブジェクトを個々に制御するソルバでPacked Objectに対応していないソルバを使用する場合に選択します。

[RBD Packed Object]を選択後、ビューポート上でジオメトリを選択して、Enterキーを押します。

すると、DOPNetworkノードが自動的に作成されます。DOPNetworkノードの中に入ります。

ノードの内部には、破壊シミュレーションに必要なノードが自動的に作成されたことが確認できます。Tabキーから、Ground Planeノードを作成して、Rigidbody Solverノードの下にあるMergeノードに接続します。

ノードの設定は以上です。この状態で、再生ボタンを押すとジオメトリが落下して破砕するシミュレーションを確認することができます。

下の動画では、破壊シミュレーションの結果と補足として、Labs Retimeノードを使用したシミュレーションのタイミング調整についてご紹介しています。併せて、ご覧ください。

Labs Trace PSD Fileノードについては以上です。次に、Labs Curve Sweepノードについてご紹介します。



Labs Curve Sweepとは

入力曲線に沿ってプロファイル(輪郭)をスイープします。このノードは、プロファイルのタイプ、幅、ねじれの動作を簡単に制御できます。

曲線をポリゴンに押し出すために以前よりPolyWire SOPが使用されています。しかし、多くの場合、有益な結果を得るために、PolyWire SOPの前後にノードを追加する必要があり、複雑なジオメトリを作成することができます。

Labs Curve Sweep SOPは、手間の掛かるディテールの大半を整理されたインターフェースで包んでいます。PolyWire SOPのほとんどの便利なコントロールを継承して、綺麗なUVを追加し、曲線に沿ってプロファイルを制御するランプパラメータを提供します。

2番目の入力は、CircleやLineでは不十分な場合に、カスタムプロファイルを定義するために使用できます。断面は原点を中心としてXY平面上に配置されます。

3番目の入力は、アップベクトルを定義するために使用できます。多くの場合、入力曲線のコピーを元の曲線から変換または変形させたものです。

各パラメーターについて

Cross Section
1.Mesh Type
ドロップダウンを使用して、チューブを生成するためのCircleプロファイル、またはリボン(ひも状)を生成するためのLineプロファイルを選択します。

2.Divisions
輪郭に使用される分割数を設定します。

3.Cap Ends
パラメーターを有効化することで、スイープ形状の端をコントロールします。


Sweep Settings
4.Uniform Scale
断面/リボンの幅の基準となる大きさを設定します。

5.Scale Ramp
このパラメーターは、曲線の長さに沿って曲線プロファイルの幅を制御します。これらのRamp値は、ユニフォーム(均一)スケールに対して乗算されます。ランプの左側は曲線の始点、右側は終点を制御します。

6.Normal Angle
滑らかな及びシャープな頂点法線のしきい値に使用されるカスプ角度を設定します。デフォルトは180度です。
※Cusp Angle(カスプ角度):頂点法線を計算する時、単一ポイント周辺の頂点の法線がお互いにこの角度以下の場合、それらの法線が平均化され、各ポリゴンの頂点角度でウェイトが付けられます。

7.Up Vector
@upアトリビュートが入力ジオメトリに存在しない場合、upベクトルとして使用されるベクトルを設定します。これは、曲線に沿った断面のねじれを制御します。


Labs Curve Sweepノードの機能

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

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

■補足:Persp > Set View > Top viewportにビューポートの表示を切り替えることで、上部からシーンを表示することができます。

曲線を描きやすいように画面表示をTop viewportに切り替えます。
ビューポート上でマウス左ボタンをクリックすることで曲線を描くことができます。描画後は、Enterキーを押しカーブを決定します。

Primitive Typeパラメーターを[NURBS]に切り替えます。

次に、Curveノードの下にLabs Curve Sweepノードを作成します。

パラメーターを[Divisions:15]、[Uniform Scale:0.5]に設定します。

ここからは各パラメーターについてご紹介します。
Divisionsパラメーターは、輪郭の分割数を調整します。数値が大きい程、ハイポリゴンになることが確認できます。

Uniform Scaleパラメーターは、ジオメトリの大きさを調整することができます。今回は、[Uniform Scale:0.5]にします。

その他にも、Caps Endsパラメーターは、ジオメトリの断面に対して蓋をして断面を塞ぐことができます。

Mesh Typeパラメーターでは、形状を[Line]、[Circle]に指定することができます。

次に、Scale Rampパラメーターを調整します。パラメーターの右端の値を下げることでカーブの終点のスケールを小さくすることができます。

こちらでは、下画像のように始点と終点の値を小さくしています。

■補足:Labs Spiralノードに対してLabs Curve Sweepノードの適用
Labs Spiralノードを使用して、パラメーターを設定することで螺旋カーブを生成することができます。

※Labs Spiralノードについては、こちらの記事をご参照ください。

手順はとてもシンプルです。最初に、ジオメトリネットワーク上でLabs Spiralノードを作成します。そして、[Radius X:0.5]、[Height:-1.5]、[Loops:5]、[Scale:2]にパラメーターを設定します。

次に、Labs Curve Sweepノードを作成して、Labs Spiralノードに接続します。
パラメーターを[Divisions:15]、[Caps Ends:ON]、[Uniform Scale:0.18]に設定し、Scale Rampパラメーターを下画像のように調整します。

このように、Labs Curve Sweepノードは、曲線に対してメッシュを生成することができます。

Labs Curve Sweepノードについては以上です。次に、Labs Symmetrizeノードについてご紹介します。



Labs Symmetrizeとは

ジオメトリを軸に沿って切り取りおよび複製します。
Labs Symmetrizeノードを使用すると、軸に沿ってジオメトリをカットおよびミラーリングすることができます。

これは、ピースを対称にする場合や下画像のように直線的なジオメトリからコーナーピースを作成する場合に便利です。

各パラメーターについて

1.Mirror Direction
入力ジオメトリをカットおよびミラーリングする方向/軸を設定します。

2.Mirror Origin
ジオメトリをカットする原点を設定します。

3.Dissolve flat edges
有効化した場合、ジオメトリ内の平坦なエッジがディゾルブされます。このパラメーターは、切断面に新しいエッジを挿入するハードサーフェスモデルで役立ちます。

※ディゾルブ:一般的にディゾルブは、「溶かす」という意味があります。この場合、平坦なエッジをディゾルブすることでエッジのみが除去されますが、ポイントは除去されません。


Labs Symmetrizeノードの機能

次に、Labs Symmetrizeノードの機能についてご紹介します。こちらも同様に、Houdini18.0.499を使用しています。
最初に、ジオメトリックネットワーク上でTestgeometry Templateheadノードを作成します。

次に、Labs Symmetrizeノードを接続します。このノードはとてもシンプルです。ノードを接続することで、ジオメトリを複製することができます。
デフォルトでは、Y軸方向にジオメトリを複製することができます。

[Mirror Direction Z:1]に変更することで、Z軸方向にジオメトリを複製することができます。

[Mirror Direction X:1]に変更して、[Mirror Origin X:-0.2]に設定した場合、原点から-0.2離れたX軸上にジオメトリが複製されます。

下画像は、Dissolve flat edgesパラメーターを有効/無効に切り替えた結果です。このパラメーターは、ジオメトリの平坦なエッジをディゾルブします。ジオメトリの一部のエッジが削減されたことが確認できます。

また、ノード情報を確認すると、ポイントは元のジオメトリと同数ですが、エッジが削減されたことでプリミティブ/バーテックス/ポリゴン数が削減されたことが確認できます。

下画像は、Dissolve flat edgesパラメーターを切り替えた際のビューポート上での結果です。Dissolve flat edgesパラメーターをオンにすることで、エッジのみが除去されるので、ポイントはパラメーターを有効化しても数値が変わることはありません。

■補足:Houdiniでは、一般的に3DCGで頂点と呼ばれるものをポイントと表現します。バーテックスは、プリミティブ毎の点を表します。

「Labs Trace PSD File」「Labs Curve Sweep」「Labs Symmetrize」ノードについては以上です。

これらのノードを使用することで、「PSDファイルの読み込み」「曲線を基にジオメトリの生成」や「ジオメトリの複製」など、Labsツールを使用することで容易に作業を行うことが出来ます。