本日は Blender2.8 の調査枠です。
Blender 2.8 の Python API ドキュメントを少しずつ読みつつ試していきます。
前回記事の続きです。
bluebirdofoz.hatenablog.com
Blender 2.8 Python API Documentation
以下のページを日本語訳しつつ実際に試して記事を進めていきます。
docs.blender.org
docs.blender.org
今日は「落とし穴」の「Nゴンとテッセレーション」です。
Nゴンとテッセレーション
バージョン2.63からNゴンがサポートされています。
一部のエクスポーターなど三角ポリゴンにアクセスする必要がある場合があるため、これにより複雑さが増します。
※ Nゴン:5つ以上の頂点で生成されるポリゴン(面)のこと。
面にアクセスするには、次の3つの方法があります。
・bpy.types.MeshPolygon:オブジェクトモードで面を保存するデータ構造(mesh.facesではなくmesh.polygonsでアクセス)
・bpy.types.MeshLoopTriangle:ポリゴンを三角形にモザイク化した結果(mesh.loop_trianglesでアクセスする)
・bmesh.types.BMFace:編集モードで使用されるポリゴン。
以降はこれらをそれぞれポリゴン、Tessfaces、bmesh-facesと呼びます。
5つ以上の頂点で生成されるポリゴンは ngons として参照されます。
作成(インポート)
3つのデータ型はすべて、面の作成に使用できます。
ポリゴン
ポリゴンは面を作成する最も効率的な方法です。
しかし、データ構造は柔軟性がないため、すべての頂点と面を準備して一度に作成する必要があります。
各ポリゴンが独自の頂点を格納せず、固定配列であるインデックスとサイズを bpy.types.Mesh.loops で参照する形となるため、更に複雑になります。
bmesh-faces
bmesh-faces は新しいスクリプトがフェースを作成する最も簡単な方法である可能性が高いです。
面は1つずつ追加でき、APIにはメッシュ操作用の機能があるためです。
bmesh.types.BMesh より多くのメモリを使用しますが、一度に1つのメッシュのみを操作することで管理できます。
編集
編集では、3つのデータタイプの扱いが最も異なります。
ポリゴン
ポリゴンは、編集、マテリアルの変更、スムーズのオプションが非常に制限されています。柔軟性が低く、保管のみを目的としています。
Tessfaces
Tessfaces は既存の ngons がテッセレーションされるため、ジオメトリの編集には使用しないでください。
bmesh-faces
BMesh-Faces は、ジオメトリを操作する最良の方法です。
出力(エクスポート)
3つのデータタイプはすべてエクスポートに使用できます。
選択肢は主に、ターゲットフォーマットが ngons をサポートしているかどうかによって異なります。
ポリゴン
ポリゴンは出力形式に変換できるのであれば、最も直接的で効率的なエクスポート方法です。
Tessfaces
Tessfacesは、ngons をサポートしていない形式へのエクスポートに適しています。使用が推奨される唯一の事例です。
bmesh-faces
BMesh-Facesはエクスポートにも機能します。しかし、オブジェクトモードのネイティブストレージ形式ではないため、bmeshを使用するとオーバーヘッドが発生します。このため、ポリゴンを使用できる場合は必要ありません。