Skip to content

Commit

Permalink
Handle targets with deleted helpers, for issue #72
Browse files Browse the repository at this point in the history
  • Loading branch information
joepal1976 committed Dec 23, 2022
1 parent c720da8 commit de220ea
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
31 changes: 21 additions & 10 deletions src/mpfb/services/targetservice.py
Expand Up @@ -258,16 +258,17 @@ def _target_string_to_shape_key_info(target_string, shape_key_name, blender_obje
profiler.leave("-- parse_target_line")
profiler.enter("-- insert_target_line")
if not blender_object is None:
vert = blender_object.data.vertices[index]
if index < len(blender_object.data.vertices):
vert = blender_object.data.vertices[index]

diff = vert_info["coordinate_difference"]
profiler.enter("copy_vert")
bco = vert.co.copy()
tco = [bco[0] + diff[0], bco[1] + diff[1], bco[2] + diff[2]]
profiler.leave("copy_vert")
diff = vert_info["coordinate_difference"]
profiler.enter("copy_vert")
bco = vert.co.copy()
tco = [bco[0] + diff[0], bco[1] + diff[1], bco[2] + diff[2]]
profiler.leave("copy_vert")

vert_info["basis_coordinates"] = bco
vert_info["target_coordinates"] = tco
vert_info["basis_coordinates"] = bco
vert_info["target_coordinates"] = tco
else:
vert_info["basis_coordinates"] = [0.0, 0.0, 0.0] # We have no info about the mesh here
vert_info["target_coordinates"] = [0.0, 0.0, 0.0] # We have no info about the mesh here
Expand Down Expand Up @@ -309,7 +310,8 @@ def target_string_to_shape_key(target_string, shape_key_name, blender_object):
profiler.enter("-- apply_verts")
for vertex in shape_key_info["vertices"]:
index = vertex["index"]
mesh.verts[index][target] = vertex["target_coordinates"]
if index < len(mesh.verts):
mesh.verts[index][target] = vertex["target_coordinates"]
profiler.leave("-- apply_verts")

profiler.enter("-- apply_bmesh")
Expand Down Expand Up @@ -510,7 +512,8 @@ def bulk_load_targets(blender_object, target_stack, encode_target_names=False):
_LOG.debug("bmesh, target", (mesh, target))
for vertex in shape_key_info["vertices"]:
index = vertex["index"]
mesh.verts[index][target] = vertex["target_coordinates"]
if index < len(mesh.verts):
mesh.verts[index][target] = vertex["target_coordinates"]
profiler.leave(" -- bulk load -> populate shape keys")
profiler.enter("- apply_shape_key_info")

Expand Down Expand Up @@ -818,6 +821,14 @@ def get_current_macro_targets(basemesh, decode_names=True):
_MACLOG.dump("get_current_macro_targets", macro_targets)
return macro_targets

@staticmethod
def reapply_all_details(basemesh, remove_zero_weight_targets=True):
target_stack = TargetService.get_target_stack(basemesh, exclude_starts_with="$md")
TargetService.reapply_macro_details(basemesh, remove_zero_weight_targets)
for tinfo in target_stack:
TargetService.set_target_value(basemesh, tinfo['target'], 0.0, delete_target_on_zero=True)
TargetService.bulk_load_targets(basemesh, target_stack, encode_target_names=False)

@staticmethod
def reapply_macro_details(basemesh, remove_zero_weight_targets=True):
profiler = PrimitiveProfiler("TargetService")
Expand Down
5 changes: 5 additions & 0 deletions src/mpfb/ui/basemeshops/operators/deletehelpers.py
Expand Up @@ -85,6 +85,11 @@ def execute(self, context):

self.report({'INFO'}, "Helper geometry deleted")

TargetService.reapply_all_details(obj)

obj.select_set(True)
ObjectService.activate_blender_object(obj)

return {'FINISHED'}

ClassManager.add_class(MPFB_OT_Delete_Helpers_Operator)

0 comments on commit de220ea

Please sign in to comment.