loose create polygons about Animation Nodes
概要
Animation Nodes
だけを用いて下図のようなシンプルな形でポリゴンを生成する。
当たり前といえば当たり前すぎる操作だが、いざやってみると色々手順が面倒なので覚えておく必要がある。
手順
- 頂点を作成する
- ポリゴン用のインデックスを生成する
- エッジ用のインデックスを生成する
- 表示する
頂点を作成する
ポリゴンを生成するにあたっては、なにはともあれポリゴン位置を決定するための頂点が最低でも 3 点すなわち三角ポリゴンが必要となる。
頂点座標は [x, y, z, (w)]
のベクトル形式となっているので、まずはそこからのスタートとなる。
頂点座標となる数値を作成する方法はいくつかあるが、一番手っ取り早いのは下図のように頂点となるベクトル型データのリストを Vector List
で作成する方法になる。
モデルデータの情報量が増えれば頂点数は増大するだけではなく、頂点座標の構造も複雑になるためこの方法は使えなくなる点には注意。
ポリゴン用のインデックスを作成する
blender
はポリゴンを作成するために前述で作成した頂点座標データとは別に、頂点インデックスと参照データを必要とする。
幸い Animation Nodes
は頂点データを渡せば頂点インデックスを作成してくれる Cleate Polygon Indices
ノードがあるためそれを利用する。
下図の A
では、作成した頂点データそれぞれに Cleate Polygon Indices
ノードが頂点インデックスを作成している。
ただし、 Cleate Polygon Indices
ノードが作成しいてくれるのは頂点インデックスだけである。これだけではポリゴンは作成できない。
ポリゴンを作成するために、どの頂点インデックスを利用するかを指定するための参照データも必要となる。
ポリゴンは三角ポリゴンを無数に組み合わせて一つのメッシュを構築するため、どういった組み合わせで頂点インデックスをつなげるのかという指示が必要となる。
上図の B
にある Create Polygon Indicies List
ノードがが参照する頂点の組み合わせを作成している。
ノードに繋げているビューワでは [(0, 1, 2)]
と表示されているのが分かる。
これによって 頂点インデックスの 0, 1, 2 を使って三角ポリゴンを生成する という流れになる。
エッジ用のインデックスを作成する
ポリゴンを作成するために専用のインデックスを作成する必要があるのと同じで、エッジを生成するためのインデックスも必要となる。
幸いこの機能も Animation Nodes
が標準搭載しているので、それを利用する。
上図では先ほど作成したポリゴン用のインデックスを使い、 Edges of Polygons
ノードでエッジ用のインデックスを生成している。
エッジは 2 点間で生成するものなので、 [(1, 2), (0, 2), (0,1)]
という3つの組み合わせが生成された。
表示する
頂点、頂点インデックス、エッジ用のインデックス、ポリゴン用のインデックスの生成が終わったのでようやくポリゴンを表示できるようになった。
下図の Combine Mesh
ノードを使えば、これまでに作成したデータでポリゴンを生成してくる。
ただしこのノードはビューポート上への表示機能を有していないので、 Mesh Output Object
ノードでメッシュをビューポート上で表示することを忘れずに。