def execute(self, context):
obj_curr = context.active_object
mesh = obj_curr.data
bm = bmesh.from_edit_mesh(mesh)
normal_buffer = self.addon.preferences.normal_buffer
vertex_normal_weight_layer = bm.verts.layers.int['vertex-normal-weight']
vertex_normal_x_layer = bm.verts.layers.float['vertex-normal-x']
vertex_normal_y_layer = bm.verts.layers.float['vertex-normal-y']
vertex_normal_z_layer = bm.verts.layers.float['vertex-normal-z']
# Assign stored world space normal vector to all selected vertices.
vertex_normal = obj_curr.matrix_world.inverted() * normal_buffer
for v in [v for v in bm.verts if v.select]:
v[vertex_normal_weight_layer] = self.vertex_normal_weight_map['UNWEIGHTED']
v[vertex_normal_x_layer] = vertex_normal.x
v[vertex_normal_y_layer] = vertex_normal.y
v[vertex_normal_z_layer] = vertex_normal.z
# Update the mesh.
bpy.ops.mesh.yavne_update_vertex_normals()
bmesh.update_edit_mesh(mesh)
return {'FINISHED'}
评论列表
文章目录