Labs Sine Wave / Retime / OBJ Importerノードについて


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

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

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

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

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



Labs Sine Waveとは

正弦波曲線に基づいてメッシュを変形します。
正弦波は、オブジェクトをアニメーション化する一般的な方法です。Flags、Fishs、Wavesなど、様々なオブジェクトに対して、正弦波を実行するだけで容易にアニメーション化することができます。
これにより、PointWrangleに入り多数のエクスプレッションを設定する手間を削減することができます。

このノードでは、正弦波の主方向を指定して、次に他の2つの軸上を移動する2つの別々の波を制御することができます。


各パラメーターについて

①Group

ジオメトリのサブセットに対してオペレーションをローカライズします。

②Group Type

分離するジオメトリの種類を指定します。

③Mask Attribute

アトリビュートに基づいて効果を減衰させるオプションです。通常は、頂点カラーが使用されます。

④Axis

効果を適用する主軸を指定します。

⑤Speed

波の移動速度(接線、垂直)を設定します。正確な動作を確認する場合は、プレイバーのリアルタイムトグルをオンにしてください。

⑥Offset

同一ケイデンス(接線、垂直)上に対して複数のケイデンスを持たないようにするために、正弦波のオプションをシフトさせます。
※ケイデンスは、一般的には1分間のクランク回転数(自転車に乗る人がペダルを回す速さ)を指します。単位は、rpmになります。Labs Sine Waveで使用する場合、同じ回転速度にするとSinカーブの形が同じものになりますが、offset使ってずらすとカーブをずらすことができます。

⑦Intensity

波の強さ(振幅)(接線、垂直)を設定します。

⑧Frequency

曲線ハンプ(接線、垂線)がどのくらい隣接しているかを設定します。


Labs Sine Waveノードの機能

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

ジオメトリネットワーク上でGridノードを作成します。
パラメーターの[Size X:20]に変更して、[Rows]、[Columns]を各20に設定します。

Gridノードの下にLabs Sine Waveノードを接続します。このノードはとてもシンプルです。ノードを接続して、ディスプレイフラグを付けるとGridに正弦波が適用されたことが確認できます。

タイムラインの再生ボタンをクリックすると、波のアニメーションが再生されます。

また、下の動画ではLabs Sine Waveノードの[Axis]、[Speed]、[Intensity]パラメーターについてご紹介しています。併せてご覧ください。

Labs Sine Waveノードについては以上です。次に、Labs Retimeノードについてご紹介します。



Labs Retimeとは

アニメーションのタイミングを変更するシンプルなインターフェースです。
このノードを使用すると、直感的なインターフェースでアニメーションを簡単にリタイミングすることができます。
デザイン的にはシンプルですが、アニメーションのタイミングを細かく制御することができるため、スローモーションやスピードアップを簡単に行うことができます。

各パラメーターについて

①Global Retime

シーケンス全体を対象とした、一般的なタイミングの再スケーリングを設定します。

②Retiming Ramp

Labs Retime SOPの主要部です。デフォルトでは、ランプは0-1からのリニアです。
再生を制御する方法は、元の曲線の下または元の曲線になるようにポイントを曲線に追加します。曲線が中間線より下にある場合は、アニメーションは元のアニメーションよりも遅く再生されます。中間線より上にある場合は、アニメーションはより速く再生されます。


Labs Retimeノードの機能

Labs Retimeノードについてご紹介します。こちらも同様に、Houdini18.0.460を使用しています。
ジオメトリネットワーク上でTestgeometry Pigheadを作成します。パラメーターの[Translate Y:5]に設定して、Add Shaderをオフにします。

次に、Labs RBD Fractureノードを接続して、Visualizers > Visualize Piecesにチェックを入れます。チェックを入れることで、分割されたピース毎に色を割り当てることができます。

Labs RBD Fractureノードの下にLabs RBD Solverノードを接続します。

この状態でタイムラインの再生ボタンをクリックすると、下の動画のようにテストジオメトリが落下して飛び散るシミュレーションが再生されます。

これに対して、Labs Retimeノードを適用します。
Labs RBD Solverノードの下にLabs Retimeノードを接続します。Retiming Rampパラメーターを下画像のように調整します。

再生ボタンをクリックすると、地面に衝突した際、一時的にスローモーションになることが確認できます。
下の動画では、Labs RetimeノードとLabs RBD Solverノードのシミュレーション結果を比較しています。

また、Reverse Domainアイコンをクリックすると、Retiming Rampパラメーターが反転されます。

この状態で再生ボタンをクリックすると、シミュレーションの結果が逆再生されます。

ご紹介したRetimeノードの使用例は動画としてまとめています。併せてご覧ください。

Labs Retimeノードについては以上です。次に、Labs OBJ Importerノードについてご紹介します。



Labs OBJ Importerとは

マテリアルとテクスチャを含むOBJファイルをインポートします。
このツールは、ディスクからテクスチャを参照しているMTLを含むOBJをインポートします。テクスチャとMTLは、OBJファイルと同じディレクトリに配置する必要があります。最終結果は、適切なマテリアルが割り当てられたHoudiniジオメトリです。

各パラメーターについて

①Reload Geometry

このボタンは、ディスク上のファイルからHoudiniのジオメトリとマテリアルの両方を更新します。

②OBJ File

ディスクからロードするOBJファイルを指定します。

③Custom MTL

MTLがOBJと異なる場所にある場合やOBJと異なる名前を持つ場合、このパラメーターを使用して、使用するMTLファイルを上書きすることができます。


Labs OBJ Importerノードの機能

Labs OBJ Importerノードについてご紹介します。こちらも同様に、Houdini18.0.460を使用しています。
ジオメトリネットワーク上でLab OBJ Importノードを作成します。OBJ Fileパラメーターの右端アイコンをクリックして、.objファイルを読み込みます。

アイコンをクリックすると、Choose Geometryウィンドウが展開されます。読み込む.objファイルを指定し、[Accept]を選択します。

■補足
.mtlファイルを正確に読み込む為に、.mtl、テクスチャ、.objファイルは同一のフォルダに格納することを推奨します。

.objファイルを読み込むと、ビューポート上にジオメトリが表示されたことが確認できます。

ジオメトリの座標を修正するために、Transformノードを接続して、Rotateパラメーターを[X:-90]に設定します。

ここからは、Labs OBJ Importノードの内部についてご紹介します。
最初に、Labs OBJ Importノードを選択して、右クリックから[Allow Editing of Contents]を選択し、HDAのロックを解除します。

OBJ Importノードをダブルクリックして内部に入ると、Labs Quick Materialノードが使用されていることが確認できます。
Material Nameパラメーターでは[wire_003160205]というマテリアルが使用されています。マテリアルを確認するため、Labs Quick Materialノードの内部に入ります。

下画像は、Labs Quick Materialノードのノードツリーです。ここでは、Material Networkを使用してVEX Builderを参照していることが確認できます。
更に、Material Networkをダブルクリックして内部に入ります。

VEX Builderでは、Principled Shader(wire_003160205)を使用して、パラメーターのSurface > Base Colorは[0.011765、0.627451、0.803922]が入力されています。

Base Colorの値は、.mtlファイルのKd(拡散光を表現するRGB値)が使用されます。
下画像は、.mtlファイルを展開した結果です。

■テクスチャファイルと.mtlファイルを含むジオメトリの読み込み
次に、テクスチャファイルと.mtlファイルを含む、ジオメトリの読み込みついてご紹介します。先程と同様に、Labs OBJ Importノードを作成して、.objファイルを読み込みます。
この状態でディスプレイフラグを付けると、テクスチャ等が表示されていないことが確認できます。

Labs OBJ Importノード内部にある、Pythonノードでは.mtlファイルのKa(環境光を表現するRGB値)、Ks(鏡面光を表現するRGB値)やテクスチャの処理が組み込まれていません。その為、テクスチャファイルは手動でマテリアルに割り当てます。

Labs OBJ Import > Labs Quick Material > Material Networkの内部に入り、生成されたPrincipled Shader(Pin_Baked)を選択します。
パラメーターのTextures > Textureの右端アイコンをクリックして、Base Colorにテクスチャを読み込みます。

アイコンをクリックすると、Choose Imageウィンドウが展開されます。該当するテクスチャを選択して[Accept]をクリックします。

ビューポートを参照すると、正常にテクスチャが反映されたことが確認できます。

下画像は、同様にRoughness、Normalテクスチャを割り当てた結果です。

Pythonノードでは、Kd以外のRGB値の処理およびテクスチャの自動割り当てが適用されていないため、ノードを改変することでカスタマイズされたノードを作成することができます。

「Labs Sine Wave」「Labs Retime」「Labs OBJ Importer」ノードについては以上です。

これらのノードを使用することで、正弦波曲線に沿ったメッシュの変形やアニメーションのタイミングの調整および.mtlファイルを含む.objファイルの読み込みなど、Labsツールを使用することで容易に作業を行うことが出来ます。