複数モデル同士の干渉を調べる、Collision Many|Manyの使い方について解説します。


グラスホッパー上では上の2つのどちらかで表されます。
複数のモデル同士が干渉しているかを調べる
Collision Many|Manyを使うことで、複数のモデル同士が干渉しているかを調べることができます。

今回の例として、上の画像の4つの立方体を使います。
立方体のインデックス番号(順番の番号)は、表示されている通りです。

使用コンポーネント:①Brep ②Collision Many|Many
今回は、4つの立方体を、Brepに格納しています。
Brepを、Collision Many|Manyにつなげます。
すると、上の画像のように、Collision Many|Many(C)から、True、もしくはFalseの情報が出力されます。
入力したモデルが干渉している場合、Trueが表示されます。
入力したモデルが干渉していない場合、Falseが表示されます。
今回の場合、インデックス番号が0~3のモデルが干渉しているので、0~3はTrueと表示されています。
一方、干渉していない4番は、Falseと表示されています。

追加コンポーネント:①Dispatch
TrueとFalseの情報で場合分けをするDispatchを使ってみます。
Collision Many|Many(C)を、Dispatch(P)につなげます。
そして、Dispatch(AとB)に、Brepをつなげます。

すると、Dispatch(A)からは、Trueの干渉しているモデルが出力されます。
Dispatch(B)からは、Falseの干渉していないモデルが出力されます。

Collision Many|Many(I)からは、どのモデルと最初に干渉したかのインデックス番号(順番の番号)が出力されます。
モデルが干渉していない場合、-1と表示されます。

追加コンポーネント:①List Item
Collision Many|Many(I)の一番最初のインデックス番号0を見てみます。
一番最初のインデックス番号0のデータは、1となっています。
これは、0番目のモデルは、1番目のモデルと最初に干渉していることを意味しています。
Brepを、2つのList Item(L)につなぎ、0と1をList Item(i)につないで、0番目と1番目のモデルを取得してみます。

すると、上の画像のように、0番目のモデルは、1番目のモデルと干渉していることが分かります。

一方、1番目のモデルは、0と2番目のモデルと干渉していますが、インデックス番号1のデータには、0と表示されています。
これは、干渉している最初のモデルのインデックス番号のみを表示しているためです。
0と2の場合、0の方が最初に干渉していると判定されるため、0と表示されます。
0番目のモデルの干渉を解消すると、2と表示されるようになります。
Collision Many|Manyコンポーネントを使用しているグラスホッパー記事はこちら↓
Comment