ポリゴンメッシュの角を見つけるには?頂点の隣接数カウントで簡単判定
四角形のオブジェクトの角を取得したい場合は、各ポイント(頂点)に隣接しているポイントの数を調べることで判別できます。
例えば、2x4(Row=2, Col=3)のポイント構成で作られた四角形を考えると、隣接するポイントの数は以下のようになります。
- 四隅のポイントは 2 個
- 外周の辺上(角以外)のポイントは 3 個
- 内部のポイントは 4 個
下の画像を例に、ポイント P1 を見てみましょう。
P1 に隣接するポイントは P2 と P5 の2つです。
「P6 も隣接しているのでは?」と思うかもしれませんが、P6 とはエッジ(辺)を共有していないため、ポリゴンメッシュの構造上「隣接頂点」とは見なされません。
実装例
Grid ノードに Attribute Wrangle を接続します。
次の VEX を記述します。
if neighbourcount(0, @ptnum) == 2){
@Cd = set(1, 0, 0);
}
Rows や Columns の値を変えても、四隅だけが赤くなることを確認できるはずです。
この考え方を使えば、立方体になった場合でも同様に四隅(角)の頂点を取得することができます。立方体の各角は、3 本のエッジだけを持つため、隣接する頂点の数が 3 になります。したがって、neighbourcount() の結果が 3 のポイントを抽出すれば、立方体の8つの角を特定できます。
if neighbourcount(0, @ptnum) == 3){
@Cd = set(1, 0, 0);
}
参考: 挫折させないHoudiniドリル
ディスカッション
コメント一覧
まだ、コメントがありません