HOME

Maneki Pipeline

ゲーム開発のためのプロシージャル

Group Expand を利用した交差判定のオブジェクト単位への拡張

交差判定などをおこなった頂点グループを拡張することでオブジェクト単位での交差判定などに利用できる

環境

HoudiniFX 20.5.613

GroupExpand

GroupExpandノードを使うとGroupの範囲をコンポーネントの接続状態に合わせて範囲を拡張、縮小することができる。

GroupExpandを使った隣接コンポーネントへの範囲拡張

この時、設定項目である、「Flood Fill Connected Geometry」を有効にすると接続しているコンポーネントに対して一律でGroup範囲の拡張を行うことができる。

隣接コンポーネント全体への範囲拡張

選択範囲をオブジェクト範囲へ拡張

この機能を利用することで、Groupノードによる交差判定を行った頂点に対して範囲拡張を行うとその頂点をもつメッシュ単位で交差判定を行うことができる。

交差判定を行いたいコンポーネント(ポリライン)

交差判定の範囲としたいオブジェクト

GroupNodeでBoundingObjctを有効にして範囲内にあるpointをGroup化する

Groupノードで第2入力内に存在するpointをGroup化

GroupExpandで「Flood Fill to Connected Geometry」を有効にすると範囲内にあるpointとつながるコンポーネントすべてをGroup化することができる。

GroupExpandで交差グループをオブジェクト全体に拡張

注意点

面に対するGroupノードによる交差判定の注意点
GroupExpandの注意点ではなくGroupの注意点。
ポリライン以外でも判定、拡張の流れは可能だがGroupノードによる交差判定は頂点が範囲に含まれるかどうかでしか判定できないのでポリゴンなどで実行する場合は分割数などに注意が必要になる。(ポリラインは面をもたないため、resampleのみで済むので楽)

Groupノードによる交差判定はpointのみが対象なのでポリゴン面の交差は拾うことができない

判定時のメッシュ解像度を変更
対策として、判定するタイミングのみRemeshやSubdivideなどで分割数を増やしたメッシュに対して交差判定を行い、そのGroupを拡張した後にGroupTransferで転送、改めてグループの拡張を行うと判定できる。

交差判定を行うタイミングでポリゴンの解像度を増やすと判定対象にできる。

とはいえ、原理としてpointを対象にしているので解像度の制限があるのとremeshなど挟むと厳密に元形状とは異なるものになる点だけ留意が必要。


Groupノードによる交差判定はポリゴンというよりはポリラインに適した交差判定で、面があると破綻しやすいのでポリゴンで使いたい場合は交差判定部分の流れを考え直した方が良さそう。
(今回はポリラインに対して実行したかったので調べていませんが、ポリゴンに対する適切な交差判定も調べるとどこかしらで出てくると思います。)

fish_ball

プロシージャル魚類