2024年12月25日水曜日

樹木からワイヤーを作る

 この記事はHoudini アドベントカレンダー2024↓の24日目の記事です。
 https://qiita.com/advent-calendar/2024/houdini

この記事は、Speed Tree等の樹木生成ソフトなどで作った木のデータからワイヤーを作るTipsです。ワイヤーを作成できるとシミュレーション使えたり、
このワイヤーを元にローポリモデルを簡単に作れたりと何かと便利です。

木のデータは、以下からダウンロードしました。
https://www.cgtrader.com/free-3d-models/plant/conifer/american-elm-tree-78c0a9f7-078f-40cf-bbd9-236c991cb019

前提として、樹木生成ソフトで作った木のデータは、どの枝(幹)も多少の違いはあれど円柱をベースとした頂点番号の並びになっています。
なので、どの枝も同じような頂点番号の並びの円柱の集まりなので、ルールを把握し枝毎に一本エッジを取り出し、中心に配置という処理を構築出来れば、あとはFor Loopで回せば木全体のワイヤーを作ることができます。

というわけで、手動モデリングした木のデータなどにはこの手法は使えないのでご注意を。

以下、手順です。

まずは、木のデータ(FBX)をインポートし、以下の様に下準備。


以下は、枝毎にエッジを一本取り出し、枝の中心に配置する処理です。


以下はFor Loopの各ステップのビューポート。
For Loopの一番始め(上図のforeach_begin1)

上図の2番(get_edge)エッジを一本とりだす。

上図の3番。エッジを枝(幹)の中心に移動。


どの枝も円柱ベースで、同じルールで頂点番号が並んでいるので上図2,3の様な
処理でエッジを取り出したり、中心座標を計算できます。


For Loopを抜け出すと、完成です。

以上で、解説は終わりです。

この木のデータではこの手法が有効でしたが、別ソフトで作られた場合はルールが変わります。ですが、どの樹木生成ソフトも枝や幹は円柱がベースになっているので少し改造するだけで同じことができるかと思います。

hipファイルはこちら

今年も本家もApprenticeもどちらのHoudiniアドベントカレンダーを盛況ですね。
素晴らしいです。過去にも多くの有用な記事あるので是非見てみてください。
以下からアクセスできます!







0 件のコメント :