ニッチなblender手記

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

loose create quad poly about Animation Nodes

概要

単一のポリゴンを作成することができたので、次は複数のポリゴンを生成する。

今回はシンプルに隣接する2つの三角ポリゴンを生成して、 Quad に見えるようにした。

f:id:r9aArrowhead:20201222165548p:plain

手順

  1. 三角ポリゴンを2つ作る
  2. 2つの三角ポリゴンを一つにまとめる
  3. 不要なポリゴンを削除する
    1. メッシュデータを BMesh 型へ変換する
    2. 重複しているデータを削除する
    3. BMesh 型のデータを Mesh 型へ変換する
  4. 表示する

三角ポリゴンを2つ作る

まずは独立した三角ポリゴンを2つ用意する。 三角ポリゴンを作る手順は以前作成したので割愛。

f:id:r9aArrowhead:20201222165555p:plain

2つの三角ポリゴンを一つにまとめる

下図のように、Animation Nodes は複数のメッシュを個別にビューポートへ出力することができない。
そのため、ノード上に独立したメッシュが複数存在する場合はこれを一つにまとめる必要がある。

f:id:r9aArrowhead:20201222165601p:plain

Animation Nodes には生成したメッシュを一つにまとめる機能があるので、それを利用する。
特に難しい操作は必要なく、下図のように Create Mesh List で複数のメッシュを含んだリスト型データを用意して、 join Mesh List でまとめれば完了する。

f:id:r9aArrowhead:20201222165607p:plain

不要なポリゴンを削除する

ポリゴンを表示するだけならば、前操作までで完了しているのでビューポート上に個別に作成した三角ポリゴンがそれぞれ表示されているのが分かる。
しかし、下図のようにオブジェクトの情報を見てみるとピンとくると思うが、見た目と頂点数が一致していない。

f:id:r9aArrowhead:20201222165613p:plain

それぞれ個別に頂点を作成したので、頂点の座標が重複している状態になっている。
用途によっては三角ポリゴン同士に分かれている方がいい場合もあるが、今回は頂点をマージして重複した頂点は削除したい。

マージするためには、 Animation Nodes が用意している BMesh APIのラッパーノードを利用する必要がある。

BMesh についてはここでは割愛。

メッシュデータを BMesh 型へ変換する

作成したメッシュデータを BMesh データへ変換するためには、 Create BMesh ノードを利用するだけでいい。

f:id:r9aArrowhead:20201222165654p:plain

重複しているデータを削除する

BMesh へデータ変換できたなら、以後も Animation Nodes が提供している機能を利用することとなる。
Remove Double ノードで重複を削除する。

Remove Double ノードは blender APIremove_doubles のラッパー

f:id:r9aArrowhead:20201222165701p:plain

BMesh 型のデータを Mesh 型へ変換する

マージが終わったデータは、そのままでは表示できない。
BMeshMesh はデータ型が異なるため、 Animation Nodes が提供している Mesh Object Output へ入力できないようになっている。
ビューポートへ表示するためには、一度 BMesh 型へ変換したデータを改めて Mesh データ型へ再変換する必要がある。

f:id:r9aArrowhead:20201222165708p:plain

Mesh 型への変換には、 Create BMesh ノードのようなワンタッチでできるノードは用意されていない。 幸い BMesh 型からは 頂点データからメッシュを作成した時のように、頂点データ・エッジインデックス・ポリゴンインデックスを出力できる BMesh Mesh ノードが用意されている。
BMesh Mesh ノードを利用すれば Combine Mesh ノードで改めてメッシュを生成することができる。

f:id:r9aArrowhead:20201222165716p:plain

表示する

マージしたメッシュを表示すれば、重複していた頂点が削除されていることが確認できる。

f:id:r9aArrowhead:20201222165723p:plain

参考

Animation Nodes - Doc - Create BMesh

Blender python API - BMesh Module (bmesh)

Blender python API - BMesh Operators - Remove Double