blenderのpythonTemplatesの1つであるBmesh Simple Editmodeについて解説を行う
基本的な動きについては単純だが要所要所でbpy特有の用語があるためその棚卸を行う。
# This example assumes we have a mesh object in edit-mode
import bpy
import bmesh
# Get the active mesh
obj = bpy.context.edit_object
me = obj.data
# Get a BMesh representation
bm = bmesh.from_edit_mesh(me)
bm.faces.active = None
# Modify the BMesh, can do anything here...
for v in bm.verts:
v.co.x += 1.0
# Show the updates in the viewport
# and recalculate n-gon tessellation.
bmesh.update_edit_mesh(me, loop_triangles=True)
import bpy
bpyのインポートを行っています。
bpyはpythonでblenderを呼び出すことができるAPIのことです。
bpyを用いることでblenderの機能をpythonで制御することができます。
import bmesh
メッシュへのアクセスを提供するAPIです。
メッシュに対して影響を及ぼすことができるようになります。
Introduction
This API gives access the Blender’s internal mesh editing API, featuring geometry connectivity data and access to editing operations such as split, separate, collapse and dissolve.
この API は、ジオメトリ接続データと、分割、分離、折りたたみ、溶解などの編集操作へのアクセスを備えた Blender の内部メッシュ編集 API へのアクセスを提供します。
obj = bpy.context.edit_object
editモードのオブジェクトを選択しobjに格納します。
me = obj.data
対象のデータにへのアクセス
今回は編集モードのオブジェクトに対してそのデータにアクセスされます。
bm = bmesh.from_edit_mesh(me)
エディットモードのメッシュに対する操作を行えるインスタンスを作成します。
for v in bm.verts:
全ての頂点に対してfor文で処理を行う
なおvertsはすべての頂点を表すリストのようなもの。
v.co.x += 1.0
x軸に対して1をインクリメントする。
bmesh.update_edit_mesh(me, loop_triangles=True)
有益な情報が見つけられなかったためgeminiで質問した。
bmesh.update_edit_mesh(me, loop_triangles=True): この行は、BMeshで行った変更を元のメッシュに反映し、ビューポートに表示を更新します。loop_triangles=Trueは、n-gon(多角形)を三角形に分割するオプションです。
実際にこのコードを削ったところ移動は実施されなかったため何らかの反映の更新を行っていると考えられる。