Digital Asset: Create Proxy Model
最近はよく衝突判定等を利用したFXに触れる機会が多くなった。しかも数をこなすということが前提なので、Proxy ModelもProceduralにやっていくことが望ましいということでこんなアセットを作ってみた。
現在はSubnetwrokパッケージだけれども、今後拡張する可能性があるのでこのまま流用している。ある程度固まったらor他のユーザーが使い始めたらDigital Assetとしてラップする感じ。
Version
Houdini : 14.0.361
Parameter
まずはパラメーターについて簡単に。
今回はラジオボタンでの切り替えで、どの選択肢があって、今どれを選択しているのか明示的にUI上で示すためにラジオボタンタブを使ってる。
そのラジオボタンの上にあるのはFile Cache SOPのRenderやLoadまわりの設定を引っ張ってきてる。内部から掘り出して作り直すのもいいけれど、今回は素直にFile Cache SOPを使ってみた。
Volume
この選択肢はこちらでも同じようなプロセスで作成されているが、今回はOpen VDBを使っていく手を使った。
この方法の利用法を先に説明しておくと、確かにRBDやBulletなどでのStaticとしての利用もあるが、出来上がるのはほぼ少し太らせ気味のモデルなので、それを利用してインメッシュでの範囲選択型の衝突判定に利用する方法もある。
ネットワークの手順を説明すると、まずはScatter SOPで分布させMetaballでなるべく1メッシュのMetaballオブジェクトを作成する。それをConvert SOPでPolygonとして変換する。次にVDB from PolygonでVDBに変換し、VDB Smoothで整理をしたあとConvert VDBでPolygonに落とし直す。さらに増えてしまったPolygon CountをReduce Polyで削減し軽量化する。
Parameterにはそれぞれ重要要素を引っこ抜いてきてUI化しているが、多分これで事足りるだろう。
Sphere
ぶっちゃけて言えば、単にSphereを分布させたScatterにコピーさせただけのもの。多分使用頻度は一番低い…。
しかしながら、ポポンと一番簡単に作れるやつなのでSphereの数の調整とかは一度これでみてみると良いかもという事で残している。
Point Cloud
上記二つでの問題があるとすれば、やはり毎フレームごとにメッシュ構造や配置が変わってしまうこと。これらはBulletや寄りショットなどの精細なシミュレーションをするにはトラブルを起こすことがある。
なので、その問題を解決するために利用したのが「本来ジオメトリが持つVertex」をCopy参照先にしてしまうこと。
という事でAdd SOPを利用してPrimitiveを全て消してしまい、それに対してSort SOPでIDをランダム化。そしてそれをDelete SOPによって数を削って軽くするというもの。
Copy SOPを使っているのもあり、あまり軽いモデルとは言い難いが、元のHiPolyモデルを使うよりかは軽く(Cacheとれば断然軽い)、精度もそこそこに使えるオプションになってると思う。
*Alembicの読み込みタイプにはPoint Cloudがあるのでそれを流用する事も可能。(というか本来はそっちを使う事前提のもの)
最終的な内部ネットワークはこんな感じ
おまけ: ラジオボタンタブの作成方法
ラジオボタンタブを利用するのは割と勘でいけるでしょ。とか思ってたけれども…。結局調べる事になってしまったのでメモを。
ラジオボタンタブを作成するにはEdit Parameter Interfaceでまずは以下画像の様に利用するFolderを準備する。
FolderのNameアトリビュートは任意に変えて良いが解りやすい様に type などとしておく。
そして内部に使用するSwitch SOPに以下のエクスプレッションを埋め込む。
以上
Sample File
Download Sample File
[References]
- [Houdini] Fluid用衝突ジオメトリの作成
現在はSubnetwrokパッケージだけれども、今後拡張する可能性があるのでこのまま流用している。ある程度固まったらor他のユーザーが使い始めたらDigital Assetとしてラップする感じ。
Version
Houdini : 14.0.361
Parameter
まずはパラメーターについて簡単に。
今回はラジオボタンでの切り替えで、どの選択肢があって、今どれを選択しているのか明示的にUI上で示すためにラジオボタンタブを使ってる。
そのラジオボタンの上にあるのはFile Cache SOPのRenderやLoadまわりの設定を引っ張ってきてる。内部から掘り出して作り直すのもいいけれど、今回は素直にFile Cache SOPを使ってみた。
Volume
この選択肢はこちらでも同じようなプロセスで作成されているが、今回はOpen VDBを使っていく手を使った。
この方法の利用法を先に説明しておくと、確かにRBDやBulletなどでのStaticとしての利用もあるが、出来上がるのはほぼ少し太らせ気味のモデルなので、それを利用してインメッシュでの範囲選択型の衝突判定に利用する方法もある。
ネットワークの手順を説明すると、まずはScatter SOPで分布させMetaballでなるべく1メッシュのMetaballオブジェクトを作成する。それをConvert SOPでPolygonとして変換する。次にVDB from PolygonでVDBに変換し、VDB Smoothで整理をしたあとConvert VDBでPolygonに落とし直す。さらに増えてしまったPolygon CountをReduce Polyで削減し軽量化する。
Parameterにはそれぞれ重要要素を引っこ抜いてきてUI化しているが、多分これで事足りるだろう。
Sphere
ぶっちゃけて言えば、単にSphereを分布させたScatterにコピーさせただけのもの。多分使用頻度は一番低い…。
しかしながら、ポポンと一番簡単に作れるやつなのでSphereの数の調整とかは一度これでみてみると良いかもという事で残している。
Point Cloud
上記二つでの問題があるとすれば、やはり毎フレームごとにメッシュ構造や配置が変わってしまうこと。これらはBulletや寄りショットなどの精細なシミュレーションをするにはトラブルを起こすことがある。
なので、その問題を解決するために利用したのが「本来ジオメトリが持つVertex」をCopy参照先にしてしまうこと。
という事でAdd SOPを利用してPrimitiveを全て消してしまい、それに対してSort SOPでIDをランダム化。そしてそれをDelete SOPによって数を削って軽くするというもの。
Copy SOPを使っているのもあり、あまり軽いモデルとは言い難いが、元のHiPolyモデルを使うよりかは軽く(Cacheとれば断然軽い)、精度もそこそこに使えるオプションになってると思う。
*Alembicの読み込みタイプにはPoint Cloudがあるのでそれを流用する事も可能。(というか本来はそっちを使う事前提のもの)
最終的な内部ネットワークはこんな感じ
おまけ: ラジオボタンタブの作成方法
ラジオボタンタブを利用するのは割と勘でいけるでしょ。とか思ってたけれども…。結局調べる事になってしまったのでメモを。
ラジオボタンタブを作成するにはEdit Parameter Interfaceでまずは以下画像の様に利用するFolderを準備する。
FolderのNameアトリビュートは任意に変えて良いが解りやすい様に type などとしておく。
そして内部に使用するSwitch SOPに以下のエクスプレッションを埋め込む。
ch("../type1")ここで "type1"とした理由は、このtypeといいったパスが「連番番号を持っている」という事を知らせるため。なので実は2などでもいいのだが、僕はいつも1を入れる様にしている。
以上
Sample File
Download Sample File
[References]
- [Houdini] Fluid用衝突ジオメトリの作成
コメント
コメントを投稿