上記動画のチュートリアルを元に記事を作成しています。
とてもシンプルなツールなので、Houdiniを始めたばかりの方にも作りやすいと思います。
使用するHoudini
シーンはHoudini 18.0.416で作成しましたが、Houdini18であれば同じように作成することが可能です。
下準備
全くHoudiniを触ったことがない方はまずは用語を知るために、下記のチュートリアルを進めてみましょう。
上記に記載されたリンクより日本語チュートリアルテキストをダウンロード可能です。
SideFX Labsをインストール
SideFXが提供している無料ツールSideFX Labsをインストールします。
SideFXLabsツールはApprenticeでもインストールすることが可能です。
使用するデータのダウンロード
Apprenticeの方はこちらからシーンファイルをダウンロード
商用版(HoudiniFX/Core)の方はこちらからシーンファイルをダウンロード
使用したSubstanceをダウンロード
※このSubstaceファイルは512pxで固定されています。またオプションはなく、MetalRoughnessの出力しか持っていません。
ロープの作成
この記事ではシンプルな3つの円柱に絡みつくロープツールをHDAとして作成してみましょう。
- ダウンロードしたシーンファイルを開きます。
円柱が3つ並んだシーンが開きます。
この円柱の周りにロープを張りたいと思います。 - Tabキーを押して、表示されたTab MenuにShrと入力すると、下記のように入力した文字列を含むノードが表示されます。
- 一番上に出ているShrinkwrapノードをクリックし作成します。
- Copytopointsノードの下にある〇をクリックし、次にShrinkwrapの上にある〇をクリックすることでノード同士をつなぎ、ネットワークを作ります。
基本的にノードは上が入力、下が出力になります。 - Shrinkwrapノードの右端をクリックします。
- ネットワークを出力ノードがShrinkwrapノードに設定され、ビューポートにここまでの結果を表示することができました。
Shrinkwrapノードを接続するとその形状全体を囲むように凸状ジオメトリが作成されます。 - 次にロープを張る位置をグリッドで決定します。
TabキーからGridを作成します。 - 作成したGridを選択していると、ビューポートの上部にGridのオプションが表示されます。
Sizeを3、RowsとColumnを2に設定し、グリッドの大きさ、分割数を変更します。 - ビューポートの左側にあるツールから、Show Handleツールを選択すると現在選択しているノードのためのハンドルが表示されます。
- 青色の矢印を使用し、Gridを上に移動します。
緑色の円型のハンドルをドラッグして、回転することも可能です。
このGridの位置にロープを張ることになります。 - Tabキーから、Interと入力します。
一番上に表示されたIntersection Analysisを選択します。
このノードには2つの入力があります。
入力の上にカーソルをおくと、その入力に何を接続すればいいのか教えてくれます。
左側は、赤い下三角アイコンがあり、Requiredと出ているため、必ず計算に必要な入力ということになります。
このノードは、2つの入力の交差した箇所にポイントを配置してくれます。 - GridとShrinkwrapを数と同じように接続します。
intersection analysisノードにネットワークの出力を設定します。
ビューポートで結果を確認すると、GridとShrinkwrapの交差部分にポイントができていることがわかります。 - Intersection Analysisのオプションにて、Output Intersection Segmentsを有効にします。
ポイント同士をつなぐエッジが生成されます。
ここで作成されたカーブが実際に最初の3本の円柱にあっているかを確認したいと思います。 - シーンを開いた時からあったcopytopointノードの右から2つのボタンをクリックします。
この設定は、そのノードをTemplateとして表示することができるフラグです。
ビューポートを確認すると、3本の円柱の外側を通るようにカーブが作成されていることがわかります。 - 作成されたカーブのポイントを表示したいと思います。
ビューポート左側には表示関係の機能がまとめられています。
下記のアイコンをクリックして、ポイント表示をオンにします。 - ここでポイントが重なっていたり、非常に近い位置にポイントがあった場合の事を考え、その部分を1つのポイントに統合する処理を追加します。
ここでのノードの作成と接続を同時に行ってみます。
Intersection Analysisノードの出力をクリックし、引っ張るとノード同士をつなげるためのワイヤーが表示されます。
ワイヤーが表示されている状態で、Tabキーを押し、Fuseと入力してノードを作成します。
作成されたFuseにネットワークの出力フラグを設定します。 - Fuseノードは設定した閾値内のポイントを1つに結合することが可能です。
ビューポートでポイント番号の表示をクリックして有効にします。
FuseノードのオプションにてSnap Distanceを調整することで、この距離より近いポイントが1つに結合されます。
数値の上でマウスの中ボタンを押し続けると、下図のようなメモリが表示されます。
ここで表示されたメモリごとに値を変更することができるたえ、例えば、.01にマウスのカーソルを合わせドラッグしてみてください。
下記のように値を大きくすると、近いポイント同士が結合し、ポイントが少なくなっていることがわかります。 - 現在このカーブはポイント毎に分離されていて、異なるカーブが複数存在する状態です。
そのことを確認するためにカーブの番号を確認してみます。
下記の画像のアイコンをクリックします。
するとポイント間のカーブにそれぞれ異なる番号が表示されます。これはポイントでカーブが切断され、それぞれ別のカーブであることを意味しています。 - 複数のカーブからできているカーブを1つのカーブに結合します。
Fuseノードの出力をクリックして、引っ張りTabキーを押します。
Tabメニューから、PolyPathノードを作成します。
カーブの番号を確認すると0番のみになっており、全てのカーブに1つに結合されたことがわかります。 - 作成したカーブではポイント間の距離が一定ではありません。そこでポイントを等間隔に配置します。
Resampleの出力をクリックして引っ張り、Tabキーからresampleを作成します。
ビューポートを見るとポイントが等間隔に配置されていることがわかります。
ポイント間の距離は、ResampleノードのLengthオプションで設定することができます。
再度中ボタンでメモリを表示し、.01ずつ増やし、必要な滑らかさになるようにLengthを小さくします。
ここでは0.06に設定しました。 - それではこのカーブを使用してロープジオメトリを作成します。
Resampleノードの出力をクリックして引っ張り、Tabキーを押します。
TabメニューからSweepノードを作成してください。
作成したSweepノードにネットワークの出力フラグを合わせます。 - Sweepノードを作成するとノードの左側に大きな赤い三角のアイコンが表示され、!マークが書かれています。このアイコンが表示された時、このノードは計算できていないことを意味します。
ノード情報を確認するには、そのノードを中ボタンでクリックすると、クリックしている間はノードの情報が表示されます。
ここでは、Error No cross section geometry provided.と表示され、ジオメトリを作成するために入力が足りないことがわかります。 - Sweepノードのオプションを確認すると、Surface ShapeがSecond Input Cross Sectionsとなっていることがわかります。
これはジオメトリの断面を2つ目の入力で決定するということなり、2つ目の入力がないためエラーになっています。
そこで、Surface ShapeをRound Tubeに設定します。これはHoudini18から追加されており、2番の入力がなくてもジオメトリを作成することができるようになりました
ビューポートをみると、カーブにそってジオメトリを作成することができました。
Radiusを調整し、ジオメトリの断面の半径を決定します。 - 作成されたジオメトリを異なる角度から見てみるとジオメトリの最初と最後がつながっていないことがわかります。
以前に作成したPolyPathノードを選択します。
Make Isolated Loops Closedを有効にします。
これでカーブを閉じることが可能です。
ビューポートを確認すると、ジオメトリも閉じたことがわかります。 - 次にこのジオメトリにUVを作成します。
まずは、UVをみてみましょう。
ビューポート上にカーソルを置き、Ctrl と2のキーを同時に押すと、下記のようにビューポートを2分割にすることが可能です。
この状態で、Perspビュー以外のビューにカーソルを置き、Spaceと5のキーを同時におします。
すると片方のビューをUV Viewに変更することができます。
ただし、まだUVが作成されていないため、UV ViewにはUVがありません。 - カーブからジオメトリを作成しているSweepを選択します。
オプションにて、UVs and Attributesタブを選択し、Compute UVsを有効にしてください。
UV Viewを確認すると、UVが作成されたことがわかります。 - PerspビューでもUVが現在どのような状態なのか確認したいと思います。
Sweepの出力をクリックして引っ張り、Tabキーを押します。
TabメニューにUVと入力すると、UV関連ノードがフィルタされますので、UV Quick Shadeを作成します。
ビューポートを確認すると、UVを確認するためのチェッカーをジオメトリで表示することができます。
チェックがジオメトリに対し、適切に表示されていることがわかります。
これでUVが作成されたことがわかりますので、Perspビューにマウスのカーソルを置き、Ctrl と1を同時におします。
これで2分割されたビューを再度単一のビューで表示することが可能です。
それではジオメトリにダウンロードしたSubstanceマテリアルを割り当ててみます。 - Sweepの出力をクリックして引っ張り、Tabキーを押します。
TabメニューにSubstanceと入力し、Labs Substance Materialを作成します。
Labs Substance Materialを作成するには、下準備でSideFXLabをインストールしておく必要がありますのでご注意ください。 - 作成したSubstance Materialノードにネットワークの出力フラグを設定します。
- Substance Materialノードのオプションからファイルボタンをクリックします。
ウィンドウが開いたら、ダウンロードしたrope.sbsarを選択します。
Acceptをクリックすると、Substanceファイルがロードされます。
ビューポートを確認すると、ジオメトリにSubstaceから生成されたマテリアルが割り当てられたことがわかります。
※このSubstaceは解像度は512で固定されています。解像度を変えないでください。 - ロープを配置する場所はGridで決めています。
ロープの位置と角度を変えてみましょう。
Gridノードを選択します。
ハンドルツールを使用して、移動や回転を行ってください。
常に3本の円柱に沿った状態でロープが作成されることがわかります。
ここまでで複数のジオメトリを囲むようにロープを張ることができるようになりました。
次回の記事では複雑な形に対応して、ロープが張れるように設定していきましょう!