チャットでBlenderのモディファイアを付けた状態のメッシュを作成する話題があったのでメモ
因みに単純にモディファイアを適用したメッシュを取得したいだけなら
オブジェクトメニューの変換>メッシュで 「オリジナルを保持」をチェックして変換するのが楽
アクティブオブジェクトのモディファイアを適用したオブジェクトを作成したい場合
import bpy
obj = bpy.context.active_object
depsgraph = bpy.context.evaluated_depsgraph_get()
modified = obj.evaluated_get(depsgraph)
mesh = bpy.data.meshes.new_from_object(modified)
new_obj = bpy.data.objects.new( "new_obj", mesh)
bpy.context.scene.collection.objects.link(new_obj)
スクリプト内で変換した頂点データ等を取得する場合のコード
(modifiedはMeshのデータなもののデータブロックは作成されない)
import bpy
def getModifiedMesh28(obj):
depsgraph = bpy.context.evaluated_depsgraph_get()
modified = obj.evaluated_get(depsgraph).to_mesh
return(modified)
obj = bpy.context.active_object
modified = getModifiedMesh28(obj)
Blender2.8以降で変更になった部分で
他サイトを参考に以前のコードと挙動を揃えるために使ったことがあるだけなので
細かいことはちょっとわかってない・・・ので単なるメモ