本日は Blender の技術調査枠です。
Blenderで利用可能なpythonスクリプトを作ります。
bluebirdofoz.hatenablog.com
メッシュ情報から特定座標の頂点を選択する
bmesh をインポートしてメッシュ情報にアクセスできます。
頂点の座標情報を取得してX軸がマイナス値の頂点を選択状態にします。
・mesh_verts_check.py
# bpyインポート import bpy import bmesh # X軸がマイナス値の頂点を選択状態にする # 引数 arg_objectname:指定オブジェクト名 # 戻り値 def mesh_verts_check(arg_objectname='Default'): # 指定オブジェクトを取得する selectob = bpy.data.objects[arg_objectname] # 変更オブジェクトをアクティブに変更する bpy.context.scene.objects.active = selectob # 編集モードであることを確認する if selectob.mode == 'EDIT': # メッシュデータを取得する meshdata = bmesh.from_edit_mesh(selectob.data) # 頂点を走査する for v in meshdata.verts: # X軸の値が -0.001 以下の頂点を取得する if v.co.x < -0.001: # 頂点位置の情報をコンソールに表示する print(v.co) # 頂点を選択状態にする v.select = True else: # 頂点を非選択状態にする v.select = False return # 関数の実行例 mesh_verts_check('Sphere')
X軸がマイナス値の頂点を削除してミラーモディファイアを設定する
頂点選択からの削除とモディファイア設定を組み合わせた処理です。
X軸がマイナス値の頂点を削除してミラーモディファイアを設定します。
・set_mirror_modifier.py
# bpyインポート import bpy import bmesh # X軸がマイナス値の頂点を削除してミラーモディファイアを設定する # 引数 arg_objectname:指定オブジェクト名 # 戻り値 def set_mirror_modifier(arg_objectname='Default'): # 指定オブジェクトを取得する selectob = bpy.data.objects[arg_objectname] # 変更オブジェクトをアクティブに変更する bpy.context.scene.objects.active = selectob # 編集モードに移行する bpy.ops.object.mode_set(mode='EDIT', toggle=False) # メッシュデータを取得する meshdata = bmesh.from_edit_mesh(selectob.data) # 頂点を走査する for v in meshdata.verts: # X軸の値が -0.001 以下の頂点を取得する if v.co.x < -0.001: # 頂点を選択状態にする v.select = True else: # 頂点を非選択状態にする v.select = False # 選択した頂点を削除する bpy.ops.mesh.delete(type='VERT') # オブジェクトモードに移行する bpy.ops.object.mode_set(mode='OBJECT', toggle=False) # 「ミラー」モディファイアを追加する bpy.ops.object.modifier_add(type='MIRROR') # 作成モディファイアを取得する selectmod = selectob.modifiers['Mirror'] # X軸でミラー selectmod.use_x = True selectmod.use_y = False selectmod.use_z = False # オブション設定(結合,クリッピング,頂点グループ) selectmod.use_mirror_merge = True selectmod.use_clip = True selectmod.use_mirror_vertex_groups = True # 結合距離 selectmod.merge_threshold = 0.001 return # 関数の実行例 set_mirror_modifier('Sphere')