entagmaのケーブルチュートリアルを追う①
entagmaで2024/12/09 に公開された無料チュートリアルの「Space Filling Cable Generator」が、 ゲリラゲームスが公開しているゲームに利用される目的のワイヤーを作成したという情報から最新のHoudiniの機能を利用すればもっと簡単に作成できます、という事例。 実際にゲーム開発で利用されたワイヤージェネレータの再現なのでゲーム開発に利用できると思い学習目的でチュートリアルを追っていく。

元動画
- Entagma「Houdini Tutorial: Space Filling Cable Generator」
https://www.youtube.com/watch?v=yhTMKMBpOXg - 動画内で紹介しているゲリラゲームスのインタビュー記事
https://www.sidefx.com/community/horizon-zero-dawn-guerrilla-games/
基本構成の作成
ベースとなるケーブルの形状を作成していく
経路探索用のpoint群を作成する
ケーブルを作成したい範囲のメッシュを作成し、ポイントフロムボリュームで作成範囲にポイントが沢山存在している状態にする。


ケーブルの始点と終点用のpoint群を作成する
始点に該当する範囲のメッシュと終点に該当する範囲のメッシュを分離し、スキャッターでポイントに変換、始点グループ、終点グループででまとめて作成範囲全体のポイントとマージする

ケーブルの経路探索元となるスプラインを作成する
mergeしたpointにConnectAdjastPiecesを接続し、ConnectionTypeをAdjacent Pointsに変更する

ケーブルのベースとなるスプラインを作成する
ForLoopWithFeedbackを作成し、その中にFindShortesrPathノードで始点から終点への最短経路探索でラインを作成する処理をループさせる構成を作成する。
Smoothも作成し、できたスプラインをスムースする。動画ではstrengthは20にしていた。

ケーブル用スプライン周辺の経路探索用スプラインを距離でグループ化し、削除する
group expressionとdeleteノードを作成し、Loopブロックの入力を第1入力、FindShortesrPathを第2入力に接続する。
GroupVexPressionを追加して nearpoint(1, v@P, chf("Radius")) != -1
と入力し削除用のグループを作成する。
Radiusスライダーを調整すると第2入力近辺の最短距離探索用のパスを削除でき、ループごとに作成したパス近辺を除く経路でパス作成を行うことの可能な構成が完成する。


ケーブルメッシュを作成
経路探索でできたメッシュをcableという名称でグループを作成する。
cableグループを部分をsplitし、経路探索後にマージする構成を作成し、ループ終了後にdeleteでcableグループ以外を削除してスイープすることで基本のメッシュが完成。

次回はケーブルのねじれ部分の制御や径のランダム化などのディテールアップの部分を追う

fish_ball
プロシージャル魚類