Houdiniの破壊回りを試しつつ使いまわせるセットアップを作ろう第1回
破壊元のビルはSideFX Labs ToolsにあるBuilding Generatorでざっくり簡易的に作成。
ガラスの破壊に関してちょっとまとめ
そもそもHoudini 17からRBD Materila Fractureがはいったのでコンクリ、ガラス、木っぽく割ることができるようになった
と思いきやこいつが割と曲者で、処理が重かったり複数の方向を向いた面を手軽に割ることができない あとディテールもちょっと重い
精度は多少落ちても、この辺を解消してもうちょい軽めなセットアップを作りたかった ちなみに参考画像はScatterのSeedが固定されてしまっている…
ネットワーク全体
想定した条件
- 窓ガラスなので、四角くXYZどれかが薄い
- 元のUVを保持する
- Mayaへ持っていけるように再分割する
- ディテールの後調整はしない = ディテール調整したくなったら別の仕組み
- Seedガチャができる処理速度
- パッと見なんかそれっぽければ見た目はOK
判明している注意
- insideのUVは別途作成する必要がある
- nameはないのでAssemble等で再作成する
- Remeshの値がスケールに影響されるのですごく重くなることがある
- Scatterのポイントなどのスケールは手動調整
- 一度つぶしている関係上、破片に斜めの分割線が入る
- ディテールは全てScatter任せなので微妙な手直しはできない
- Scatterのポイントが少ないとそれっぽく見えない
- RBDのセットアップとともにシムでの使用はまだテスト中
仕組み
1.あとで使えるように元の形状をRestで保存
2.BoundノードのOriented Bounding Boxと、Transform Attributeを使用してBBOXを作る
3.2で作ったBBOX利用して各ピースの一番大きい面の向きをNに保存
4.set_switch部分でBBOXのNを使用し、X,Y,Zどの軸を向いているかを判定
5.Transform by AttributeでBBOXのxformを使用して元オブジェクトを原点に戻す
6.X,Y,Zそれぞれ違う向きを向いているのでset_switchで作ったswitchを利用して全てのピースが同じ向きを向くようにする
7.すべて同じ向きを向いているはずなので1軸だけScaleを0にして平面にする
8.PackとPoint Jitterで中心点をずらしたPointを作成し、Circleをコピーする
9.作成したCircleにつぶしたピースをRayする。この際に必ず外側にメッシュが残るようにする。
10.Voronoi用のPointを作成する。8で作成した円の中心ほどPointが多いとそれっぽくなる
11.Voronoiで分割する
12.1で作ったRestを使用して元の形状、位置に戻す。
13.RemeshしてNを再度作成する