diff --git a/animation_add_corrective_shape_key.py b/animation_add_corrective_shape_key.py index 92a685ea485c797cc8167ed0fe7109f6be14f9c3..6e02d092af0d0f5c2374b1d9393f808a503cfd00 100644 --- a/animation_add_corrective_shape_key.py +++ b/animation_add_corrective_shape_key.py @@ -177,15 +177,15 @@ def func_add_corrective_pose_shape( source, target): if epsilon < threshold: epsilon = 0.0 - dx[0] += [x[i] + 0.5*epsilon*mathutils.Vector([1, 0, 0])] - dx[1] += [x[i] + 0.5*epsilon*mathutils.Vector([-1, 0, 0])] - dx[2] += [x[i] + 0.5*epsilon*mathutils.Vector([0, 1, 0])] - dx[3] += [x[i] + 0.5*epsilon*mathutils.Vector([0, -1, 0])] - dx[4] += [x[i] + 0.5*epsilon*mathutils.Vector([0, 0, 1])] - dx[5] += [x[i] + 0.5*epsilon*mathutils.Vector([0, 0, -1])] + dx[0] += [x[i] + 0.5 * epsilon * mathutils.Vector((1, 0, 0))] + dx[1] += [x[i] + 0.5 * epsilon * mathutils.Vector((-1, 0, 0))] + dx[2] += [x[i] + 0.5 * epsilon * mathutils.Vector((0, 1, 0))] + dx[3] += [x[i] + 0.5 * epsilon * mathutils.Vector((0, -1, 0))] + dx[4] += [x[i] + 0.5 * epsilon * mathutils.Vector((0, 0, 1))] + dx[5] += [x[i] + 0.5 * epsilon * mathutils.Vector((0, 0, -1))] for j in range(0, 6): - applyX(ob_1, mesh_1_key_verts, dx[j] ) + applyX(ob_1, mesh_1_key_verts, dx[j]) dx[j] = extractMappedX(ob_1, mesh_1_key_verts) # take a step in the direction of the gradient @@ -193,13 +193,13 @@ def func_add_corrective_pose_shape( source, target): epsilon = (targetx[i] - mapx[i]).length if epsilon >= threshold: - Gx = list((dx[0][i] - dx[1][i])/epsilon) - Gy = list((dx[2][i] - dx[3][i])/epsilon) - Gz = list((dx[4][i] - dx[5][i])/epsilon) + Gx = list((dx[0][i] - dx[1][i]) / epsilon) + Gy = list((dx[2][i] - dx[3][i]) / epsilon) + Gz = list((dx[4][i] - dx[5][i]) / epsilon) G = mathutils.Matrix((Gx, Gy, Gz)) G = flip_matrix_direction(G) - x[i] += (targetx[i] - mapx[i]) * G + x[i] += G * (targetx[i] - mapx[i]) applyX(ob_1, mesh_1_key_verts, x ) @@ -224,24 +224,22 @@ class add_corrective_pose_shape(bpy.types.Operator): return context.active_object != None def execute(self, context): - - if len(context.selected_objects) > 2: - print("Select source and target objects please") - return {'FINISHED'} - selection = context.selected_objects + if len(selection) != 2: + self.report({'ERROR'}, "Select source and target objects") + return {'CANCELLED'} + target = context.active_object if context.active_object == selection[0]: source = selection[1] else: source = selection[0] - #~ print(source) - #~ print(target) func_add_corrective_pose_shape( source, target) return {'FINISHED'} + def func_object_duplicate_flatten_modifiers(ob, scene): mesh = ob.to_mesh( bpy.context.scene, True, 'PREVIEW' ) name = ob.name + "_clean"