diff options
author | mifth <paulgeraskin@gmail.com> | 2014-06-19 14:13:46 +0400 |
---|---|---|
committer | mifth <paulgeraskin@gmail.com> | 2014-06-19 14:13:46 +0400 |
commit | 79d158f49f6a11b569e97d86506d0562dd60c886 (patch) | |
tree | e8957bed15857e593d7ee874308470b1daf15cb2 /uv_texture_atlas.py | |
parent | afb042b87dec03a558ec7c52205cbb6e0c9c2aaf (diff) |
[TextureAtlas] small refactoring
Diffstat (limited to 'uv_texture_atlas.py')
-rw-r--r-- | uv_texture_atlas.py | 143 |
1 files changed, 72 insertions, 71 deletions
diff --git a/uv_texture_atlas.py b/uv_texture_atlas.py index df630ca8..afbfd318 100644 --- a/uv_texture_atlas.py +++ b/uv_texture_atlas.py @@ -187,19 +187,21 @@ class TexAtl_RunStart(Operator): if bpy.ops.object.mode_set.poll(): bpy.ops.object.mode_set(mode='OBJECT', toggle=False) - if group.bake is True and bpy.data.groups[group.name].objects and bpy.data.objects.get(group.name + "_mergedObject") is None: + if group.bake is True and bpy.data.groups[group.name].objects: # Check if objects are all on the visible Layers. isAllObjVisible = check_all_objects_visible(self, context) - if isAllObjVisible is True: + if bpy.data.objects.get(group.name + "_mergedObject") is not None: + self.report({'INFO'}, "Old Merged Object Exists!!!") + elif isAllObjVisible is False: + self.report({'INFO'}, "Not All Objects Are Visible!!!") + else: res = int(group.resolution) bpy.ops.object.ms_create_lightmap( group_name=group.name, resolution=res) bpy.ops.object.ms_merge_objects( group_name=group.name, unwrap=False) - else: - self.report({'INFO'}, "Not All Objects Are Visible!!!") context.area.type = old_context @@ -551,11 +553,11 @@ class TexAtl_MergeObjects(Operator): # objToDelete = None bpy.ops.object.select_all(action='DESELECT') - for obj in scene.objects: - if obj.name == self.group_name + "_mergedObject": - obj.select = True - scene.objects.active = obj - bpy.ops.object.delete(use_global=False) + ob_merged_old = bpy.data.objects.get(self.group_name + "_mergedObject") + if ob_merged_old is not None: + ob_merged_old.select = True + scene.objects.active = ob_merged_old + bpy.ops.object.delete(use_global=True) me = bpy.data.meshes.new(self.group_name + '_mergedObject') ob_merge = bpy.data.objects.new(self.group_name + '_mergedObject', me) @@ -615,7 +617,7 @@ class TexAtl_MergeObjects(Operator): vgroup.add( list(range(len(activeNowObject.data.vertices))), weight=1.0, type='ADD') - # save object name and object location in merged object + # save object name in merged object item = ob_merge.ms_merged_objects.add() item.name = object.name @@ -675,73 +677,72 @@ class TexAtl_SeparateObjects(Operator): def execute(self, context): scene = context.scene - for obj in scene.objects: - if obj.name == self.group_name + "_mergedObject": + ob_merged = bpy.data.objects.get(self.group_name + "_mergedObject") + if ob_merged is not None: - # if scene.objects.active is not None: - # bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + # if scene.objects.active is not None: + # bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + bpy.ops.object.select_all(action='DESELECT') + ob_merged.hide = False + ob_merged.select = True + groupSeparate = bpy.data.groups.new(ob_merged.name) + groupSeparate.objects.link(ob_merged) + ob_merged.select = False + + doUnhidePolygons = False + for ms_obj in ob_merged.ms_merged_objects: + # select vertex groups and separate group from merged + # object bpy.ops.object.select_all(action='DESELECT') - ob_merged = obj - obj.hide = False ob_merged.select = True - groupSeparate = bpy.data.groups.new(ob_merged.name) - groupSeparate.objects.link(ob_merged) - ob_merged.select = False - - doUnhidePolygons = False - for ms_obj in ob_merged.ms_merged_objects: - # select vertex groups and separate group from merged - # object - bpy.ops.object.select_all(action='DESELECT') - ob_merged.select = True - scene.objects.active = ob_merged - - bpy.ops.object.mode_set(mode='EDIT') - if doUnhidePolygons is False: - # Unhide Polygons only once - bpy.ops.mesh.reveal() - doUnhidePolygons = True - - bpy.ops.mesh.select_all(action='DESELECT') - ob_merged.vertex_groups.active_index = ob_merged.vertex_groups[ - ms_obj.name].index - bpy.ops.object.vertex_group_select() - bpy.ops.mesh.separate(type='SELECTED') - bpy.ops.object.mode_set(mode='OBJECT', toggle=False) - # scene.objects.active.select = False - - # find separeted object - ob_separeted = None - for obj in groupSeparate.objects: - if obj != ob_merged: - ob_separeted = obj - break - - # Copy UV Coordinates to the original mesh - if ms_obj.name in scene.objects: - ob_merged.select = False - ob_original = scene.objects[ms_obj.name] - isOriginalToSelect = ob_original.hide_select - ob_original.hide_select = False - ob_original.hide = False - ob_original.select = True - scene.objects.active = ob_separeted - bpy.ops.object.join_uvs() - ob_original.hide_render = False - ob_original.select = False - ob_original.hide_select = isOriginalToSelect - ob_original.data.update() - - # delete separeted object - bpy.ops.object.select_all(action='DESELECT') - ob_separeted.select = True - bpy.ops.object.delete(use_global=False) - - # delete duplicated object + scene.objects.active = ob_merged + + bpy.ops.object.mode_set(mode='EDIT') + if doUnhidePolygons is False: + # Unhide Polygons only once + bpy.ops.mesh.reveal() + doUnhidePolygons = True + + bpy.ops.mesh.select_all(action='DESELECT') + ob_merged.vertex_groups.active_index = ob_merged.vertex_groups[ + ms_obj.name].index + bpy.ops.object.vertex_group_select() + bpy.ops.mesh.separate(type='SELECTED') + bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + # scene.objects.active.select = False + + # find separeted object + ob_separeted = None + for obj in groupSeparate.objects: + if obj != ob_merged: + ob_separeted = obj + break + + # Copy UV Coordinates to the original mesh + if ms_obj.name in scene.objects: + ob_merged.select = False + ob_original = scene.objects[ms_obj.name] + isOriginalToSelect = ob_original.hide_select + ob_original.hide_select = False + ob_original.hide = False + ob_original.select = True + scene.objects.active = ob_separeted + bpy.ops.object.join_uvs() + ob_original.hide_render = False + ob_original.select = False + ob_original.hide_select = isOriginalToSelect + ob_original.data.update() + + # delete separeted object bpy.ops.object.select_all(action='DESELECT') - ob_merged.select = True + ob_separeted.select = True bpy.ops.object.delete(use_global=False) + # delete duplicated object + bpy.ops.object.select_all(action='DESELECT') + ob_merged.select = True + bpy.ops.object.delete(use_global=False) + return{'FINISHED'} |