このチュートリアルは、「【初心者向けHoudiniトライアル002】湾曲したジオメトリの周りにロープを張る」の続きです。
使用するデータのダウンロード
Apprenticeの方はこちらからシーンファイルをダウンロード
商用版(HoudiniFX/Core)の方はこちらからシーンファイルをダウンロード
Houdini Digital Assetとは
それでは作成したネットワークをHoudini Digital Asset(以降HDA)として保存し、いつでも呼び出せるようにします。
Houdiniでは、自分で作成したネットワークを作成します。ですが、このネットワークに500個のノードが存在する場合、作成者以外の人間がそのネットワークを再利用することは難しいかもしれません・
そこで、ネットワークを1つのボックスにまとめて、再利用可能なカスタムノードに変更することができます。このカスタムノードのことを Houdiniデジタルアセット と呼びます。
そのカスタムノードに、独自のユーザインターフェースを持たせることも可能です。カスタムノードの中に移動し、使用者が操作する必要がある重要なパラメーターを取得します。そして、そのパラメーターをデジタルアセットレベルまで公開します。
設定が完了したら、そのデジタルアセットをHoudiniに読み込むことができ、他のノードと同様、1つのノードとして扱うことができます。つまり、Houdini用のプラグインを書いたことと同じですが、アーティストがインタラクティブにネットワークを操作できる点が異なります。
ということで、それでは前回まで作成したネットワークはいつでも再利用できるようにデジタルアセットにしていきましょう!
ネットワークをHoudini Digital Assetとして保存する
ネットワークの最初はSticksから始まっています。しかしこれはロープの張る対象なので、再利用する際には別の対象にロープを張りたいかもしれません。そのため、Sticksはデジタルアセット内にいれません。
ネットワークの最後はSubsntanceMaterialになっています。
マテリアル設定はデジタルアセットを読み込んできた人が、再利用の際に設定した方が良いので、今回はその手前までをツデジタルアセットの中にいれます。
また、ワイヤを作成する断面を指定するGridもネットワークの外部で指定するようにします。ロープを張りたいジオメトリが常に3D空間の原点にあるわけではないので、外部で断面グリッドを設定するようにします。
まずは、HDAとしてノードにしたいネットワークをサブネットワークにまとめましょう。
下記画像で赤枠内にあるノードネットワークをHDAとして保存していきます。
- 赤枠内のノードを全て選択します。
- ノード達を選択した状態でネットワークエディタの右上にあるSubnetworkのアイコンをクリックします。
これでネットワークが一つのSubnetworkにまとめられました。
この状態はネットワーク内に1つにまとめただけで、またHDA化していません。
選択したノードを整理するには、ノードを選択してLay Out Selectedを選択します。 - Subnetworkの名前部分をクリックすると、名前を変更することができます。
ropeという名前に設定します。 - ropeの上で右クリックし、Create Digital Assetを選択します。
- Create New Digital Asset from Nodeウィンドウが開きます。
Operator Name は、他のノードと区別するための固有の内部名です。Houdii内の他のノードの重複する名前を付けることはできません。
Operator Label はHoudiniのユーザインターフェースに表示される、人が解読可能な名前です。実際にノードを作成したときに表示される名前になります。
Save to library パスは、アセットの保存先となります。
アセットの拡張子は.hdaとなります。
デフォルトではマイドキュメント\Houdiniバージョン\otlsに保存されます。
このディレクトリにある.hdaファイルはHoudini起動時に自動で登録され、いつでも呼び出すことが可能になります。
必要な時だけHoudiniに登録したい場合は、別の場所に保存しておくことができます。
今回は下記のように設定しました。
Save to Libraryに指定したパスに、$HIPという文字列があります。$HIPは予めHoudiniで決められた環境変数です。$HIPは、現在開いているシーンファイルを含むディレクトリのパスになります。 - Name、Label、ディレクトリが指定で来たら、Acceptをクリックします。
- そのままEdit Operator Type Propertiesが開きますので、Parametersタブを選択してください。
デジタルアセットを作成すると、このィンドウを使用して、新しいノードのパラメータインターフェースを編集することができます。
ネットワーク内にあるノードのプロパティを、HDA自体に公開し、ノード自体を選択してプロパティを変更しなくても、HDAに設定したプロパティで設定可能になります。
現在のrope HDAのプロパティを確認すると何もプロパティを持たないことがわかります。
それではここにプロパティを追加していきましょう。 - Ropeツールをダブルクリックして、中に入ります。
先ほど、GridやStickが接続されていた部分は外部からの入力が接続されるようになっています。 - ロープの長さに対する分割数はResampleノードのLengthで決定されています。
このパラメーターを、Edit Operator Type Propertiesウィンドウ>Parametersタブ>Existing Paramertersにドラッグします。 - このプロパティの名前をLabelで変更することができます。
ここではDivide Lengthとしています。
その下にあるRangeでこのプロパティの最小値、最大値を決めることが可能です。
ここでは、最小値を0.01、最大値を0.1に設定し、それ以上の値が設定できないように鍵マークアイコンを有効にしてロックしました。
このプロパティのデフォルト値はChannelsタブで設定することができます。
Liniked Channelsにresample1/lengthと設定され、その値が0.05となっています。
これがこのプロパティのデフォルト値です。
Applyをクリックします。 - ネットワークを上に上がるために、uキーを押します。
ネットワークが移動し、rope HDの外に出ることができます。
rope HDAを選択すると、作成したDivide Lengthプロパティが追加されていることがわかります。 - 更に他の機能もrope HDAに追加していきます。
rope HDAをダブルクリックして中に入ります。
SweepノードのRadiusを同じようにドラッグして追加します。
LabelをRope Radiusと変更します。 - Applyを押して、プロパティを適用し、Closeでウィンドウを閉じます。
- 再度、uキーを押してネットワークを上がり、rope HDAを選択します。
下記のように2つのプロパティを追加することができました。
Rope Radiusは最小値と最大値を設定していませんので、プロパティを編集したいと思います。 - rope HDAを右クリックし、Type Propertiesを選択します。
再度、Edit Operator Type Propertiesウィンドウが開きます。
Rope Radiusを選択し、Rangeを0.01から0.1に設定します。
Applyを押してプロパティを適用します。 - Divide LengthとRope Radiusのスライダーを動かしてみます。
公開したパラメーターにより結果を簡単に変更することができます。
このようにネットワークの必要なパラメーターをデジタルアセットに公開することで、簡単に結果を調整することができるようになります
Rope Radiusを変更していくと、ロープの一部が切れていることがわかります。
カーブが閉じていないため、Sweepで作成したロープも開いています。 - rope HDA内に入ります。
PolyPathでカーブ全てを1つに統合した後、このカーブを閉じるノードを追加します。 - Polypathノードの後ろにEndsノードを追加します。
- EndsノードでClose UのClose Straightに設定します。
カーブが閉じたことがわかります。 - Sweepノードに出力フラグを合わせます。
カーブが閉じたことで、Sweepで作成されたロープもつながりました。 - Sweepの作成後にできたポリゴンジオメトリにCleanupを実行できるようにしておきます。
Sweepの後ろにCleanを追加してください。 - 最後にここがネットワークの終わりであることを誰にでもわかるように目印をつけたいと思います。
Cleanノードに下にNullノードを追加します。
Nullの名前をOUT_ropeに変更しておきます。OUTは必ず大文字にしてください。
OUTを大文字にしたことには意味があります。
ネットワークエディタの横にあるTree Viewタブを選択します。
ここにはシーンに含まれるノードのリストがツリー上で表示されます。ここでは簡単に名前でノードにアクセスできます。
rope HDAの中をみると一番上にOUT_ropeが表示されています。
つまり、大文字のノード名が上に表示することができます。このように選択しやすくするためにノード名に大文字を使うことが可能です。 - ここまででrope HDAにノードを追加しました。
このようにデジタルアセットを作成した後にネットワークを変更した後、この変更を保存する必要があります。 - uキーを押して、ネットワークを上がります。
- rope HDAを右クリックし、Save Node Typeを選択します。
これでネットワークの変更を保存することができました。 - rope HDAへの入力を切り替えて結果を確認します。
シーンにある3つのTubeが並んでいるcopytopointノードをRopeに接続してみます。
ビューポートを確認すると入力により結果が変わったことがわかります。 - ropeとTubeを一緒に表示してみます。
Substance Materialの下にMergeノードを追加します。
copytopointsノードもMergeノードに接続します。
ビューポートを確認するとTubeとロープを同時に表示することができました。 - ロープを増やしてみます。
rope HDAとSubstance Materialを選択し、Alt押しながらドラッグします。
マウスを放してから、Altキーを放すと選択したネットワークをそのまま複製することができます。 - 2つ目のロープもMergeノードに接続します。
- 現在は2つのロープが同じ位置に配置されています。
2つ目のGridノードを選択します。
ビューポートの左側にあるShow Handleツールを選択して、表示されたハンドルを使用して、移動、回転を行い、好きな位置に配置します。
例えば2つのロープが重なるように配置すると・・
重複部分が貫通していることがわかります。 - Mergeノードを作成します。
Copytopointsノードと1つ目のropeジオメトリをMergeに接続します。
そのMergeノードを2つのめのropeに接続します。
ビューポートで確認すると1つ目のロープをよけて、2つ目のロープが設置されたことがわかります。
これでRopeツールがHDAとして完成しました!
次はHDAをHoudiniや他のDCCツールで使用してみましょう!