ニッチなblender手記

世の中には自分に似た人が3人いるとされています。その人達へと情報共有するために主にblenderの記事を書いていきます。

loose create polygons about Animation Nodes

概要

Animation Nodes だけを用いて下図のようなシンプルな形でポリゴンを生成する。
当たり前といえば当たり前すぎる操作だが、いざやってみると色々手順が面倒なので覚えておく必要がある。

f:id:r9aArrowhead:20201222143424p:plain

手順

  1. 頂点を作成する
  2. ポリゴン用のインデックスを生成する
  3. エッジ用のインデックスを生成する
  4. 表示する

頂点を作成する

ポリゴンを生成するにあたっては、なにはともあれポリゴン位置を決定するための頂点が最低でも 3 点すなわち三角ポリゴンが必要となる。
頂点座標は [x, y, z, (w)] のベクトル形式となっているので、まずはそこからのスタートとなる。

頂点座標となる数値を作成する方法はいくつかあるが、一番手っ取り早いのは下図のように頂点となるベクトル型データのリストを Vector List で作成する方法になる。

モデルデータの情報量が増えれば頂点数は増大するだけではなく、頂点座標の構造も複雑になるためこの方法は使えなくなる点には注意。

f:id:r9aArrowhead:20201222143431p:plain

ポリゴン用のインデックスを作成する

blender はポリゴンを作成するために前述で作成した頂点座標データとは別に、頂点インデックスと参照データを必要とする。

幸い Animation Nodes は頂点データを渡せば頂点インデックスを作成してくれる Cleate Polygon Indices ノードがあるためそれを利用する。
下図の A では、作成した頂点データそれぞれに Cleate Polygon Indices ノードが頂点インデックスを作成している。

f:id:r9aArrowhead:20201222143436p:plain

ただし、 Cleate Polygon Indices ノードが作成しいてくれるのは頂点インデックスだけである。これだけではポリゴンは作成できない。
ポリゴンを作成するために、どの頂点インデックスを利用するかを指定するための参照データも必要となる。
ポリゴンは三角ポリゴンを無数に組み合わせて一つのメッシュを構築するため、どういった組み合わせで頂点インデックスをつなげるのかという指示が必要となる。

上図の B にある Create Polygon Indicies List ノードがが参照する頂点の組み合わせを作成している。
ノードに繋げているビューワでは [(0, 1, 2)] と表示されているのが分かる。
これによって 頂点インデックスの 0, 1, 2 を使って三角ポリゴンを生成する という流れになる。

エッジ用のインデックスを作成する

ポリゴンを作成するために専用のインデックスを作成する必要があるのと同じで、エッジを生成するためのインデックスも必要となる。
幸いこの機能も Animation Nodes が標準搭載しているので、それを利用する。

f:id:r9aArrowhead:20201222143445p:plain

上図では先ほど作成したポリゴン用のインデックスを使い、 Edges of Polygons ノードでエッジ用のインデックスを生成している。
エッジは 2 点間で生成するものなので、 [(1, 2), (0, 2), (0,1)] という3つの組み合わせが生成された。

表示する

頂点、頂点インデックス、エッジ用のインデックス、ポリゴン用のインデックスの生成が終わったのでようやくポリゴンを表示できるようになった。

下図の Combine Mesh ノードを使えば、これまでに作成したデータでポリゴンを生成してくる。
ただしこのノードはビューポート上への表示機能を有していないので、 Mesh Output Object ノードでメッシュをビューポート上で表示することを忘れずに。

f:id:r9aArrowhead:20201222143452p:plain