アストラルプリズム

PC、スマホ、ゲームなどの備忘録と日記

Blender python 指定したベクトルの方向に頂点を移動

指定したベクトル(ここではノーマル)の方向に頂点を移動する。
new_locのところまでは頂点の値はグローバル座標なので、マトリックスワールドを逆さ(invert)させたものを掛けてローカル座標に直している

obj=bpy.data.objects['立方体.003']
mw=obj.matrix_world
norm=obj.data.polygons[2].normal @ mw

p1 = mw@obj.data.vertices[6].co

new_loc = p1 + 4 * norm
inv = mw.copy()
inv.invert()
obj.data.vertices[6].co = inv @ new_loc