【Blender×Python】面データをメッシュデータから取得する方法について徹底解説

Blender

「bpy」とは、PythonからBlenderの機能を呼び出すことができるBlender Python APIのことです。Blenderはオープンソースの3Dアニメーションソフトウェアであり、「bpy」を使うことでBlenderの様々な機能をPythonスクリプトから呼び出して利用することができます。本記事では、「bpy」を用いた面データをメッシュデータから取得する方法を紹介します。

# polygonsプロパティによるメッシュデータを用いた面データの取得
"Mesh".polygons

下記の様な内容で悩んでいる/困っている場合に使える方法を参考までにご共有させて頂きます。

・Blender上で、どの様にPythonを使うの?
・Blender上のPythonで、どの様に面データをメッシュデータから取得するの?

また、「bpy」を使用する上で基礎的な情報は下記の記事で紹介しております。
他の「bpy」のクラスや関数について気になる方はこちらの記事をご覧ください。

polygonsプロパティによるメッシュデータを用いた面データの取得

“Mesh”.polygonsプロパティの基本構文

"Mesh".polygons
→ MeshPolygons: bpy_prop_collection

“Mesh”.polygonsプロパティの使い方

import bpy

CubeMesh = bpy.data.meshes["Cube"]
CubeMeshFaces = CubeMesh.polygons

for key, value in CubeMeshFaces.items():
    print(f"[{key}] {value}, {value.index}, {value.vertices}, {[vertex_id for vertex_id in value.vertices]}")Cube Mesh Faces:
<bpy_collection[6], MeshPolygons> <class 'bpy_prop_collection'>
Cube Mesh Vertices:
<bpy_collection[8], MeshVertices> <class 'bpy_prop_collection'>
[0] <bpy_struct, MeshPolygon at 0x000001A0376FCFE8>, 0, <bpy_int[4], MeshPolygon.vertices>, [0, 1, 3, 2]
[1] <bpy_struct, MeshPolygon at 0x000001A0376FCFF4>, 1, <bpy_int[4], MeshPolygon.vertices>, [2, 3, 7, 6]
[2] <bpy_struct, MeshPolygon at 0x000001A0376FD000>, 2, <bpy_int[4], MeshPolygon.vertices>, [6, 7, 5, 4]
[3] <bpy_struct, MeshPolygon at 0x000001A0376FD00C>, 3, <bpy_int[4], MeshPolygon.vertices>, [4, 5, 1, 0]
[4] <bpy_struct, MeshPolygon at 0x000001A0376FD018>, 4, <bpy_int[4], MeshPolygon.vertices>, [2, 6, 4, 0]
[5] <bpy_struct, MeshPolygon at 0x000001A0376FD024>, 5, <bpy_int[4], MeshPolygon.vertices>, [7, 3, 1, 5]

まとめ

「bpy」(Blender Python API)は、Pythonを使ったBlenderの開発に非常に役立ちます。この記事では、面データをメッシュデータから取得する方法を紹介しました。ぜひ活用してみてください。

関連検索ワード

How to get a face data from mesh data?

関連キーワード

blender, python, get, face, mesh, 取得, 面, メッシュ