def _set_name(prop, value): mmd_root = prop.id_data.mmd_root #morph_type = mmd_root.active_morph_type morph_type = '%s_morphs' % prop.bl_rna.identifier[:-5].lower() #assert(prop.bl_rna.identifier.endswith('Morph')) #print('_set_name:', prop, value, morph_type) prop_name = prop.get('name', None) if prop_name == value: return used_names = {x.name for x in getattr(mmd_root, morph_type) if x != prop} value = utils.uniqueName(value, used_names) if prop_name is not None: if morph_type == 'vertex_morphs': kb_list = {} for mesh in FnModel(prop.id_data).meshes(): for kb in getattr(mesh.data.shape_keys, 'key_blocks', ()): kb_list.setdefault(kb.name, []).append(kb) if prop_name in kb_list: value = utils.uniqueName(value, used_names | kb_list.keys()) for kb in kb_list[prop_name]: kb.name = value elif morph_type == 'uv_morphs': vg_list = {} for mesh in FnModel(prop.id_data).meshes(): for vg, n, x in FnMorph.get_uv_morph_vertex_groups(mesh): vg_list.setdefault(n, []).append(vg) if prop_name in vg_list: value = utils.uniqueName(value, used_names | vg_list.keys()) for vg in vg_list[prop_name]: vg.name = vg.name.replace(prop_name, value) if 1: #morph_type != 'group_morphs': for m in mmd_root.group_morphs: for d in m.data: if d.name == prop_name and d.morph_type == morph_type: d.name = value frame_facial = mmd_root.display_item_frames.get(u'表情') for item in getattr(frame_facial, 'data', []): if item.name == prop_name and item.morph_type == morph_type: item.name = value break obj = FnModel(prop.id_data).morph_slider.placeholder() if obj and value not in obj.data.shape_keys.key_blocks: kb = obj.data.shape_keys.key_blocks.get(prop_name, None) if kb: kb.name = value prop['name'] = value
def _setNameJ(prop, value): old_value = prop.get('name_j') prop_value = value if prop_value and prop_value != old_value: root = Model.findRoot(bpy.context.active_object) if root: rig = Model(root) prop_value = utils.uniqueName(value, [mat.mmd_material.name_j for mat in rig.materials()]) else: prop_value = utils.uniqueName(value, [mat.mmd_material.name_j for mat in bpy.data.materials]) prop['name_j'] = prop_value
def __fixRepeatedMorphName(self): used_names_map = {} for m in self.__model.morphs: #used_names = used_names_map.setdefault('all', set()) used_names = used_names_map.setdefault(type(m), set()) m.name = utils.uniqueName(m.name, used_names) used_names.add(m.name)
def _set_name(prop, value): mmd_root = prop.id_data.mmd_root #morph_type = mmd_root.active_morph_type morph_type = '%s_morphs' % prop.bl_rna.identifier[:-5].lower() #assert(prop.bl_rna.identifier.endswith('Morph')) #print('_set_name:', prop, value, morph_type) prop_name = prop.get('name', None) if prop_name == value: return used_names = set(x.name for x in getattr(mmd_root, morph_type)) value = utils.uniqueName(value, used_names) if prop_name is not None: if morph_type == 'vertex_morphs': kb_list = {} for mesh in FnModel(prop.id_data).meshes(): shape_keys = mesh.data.shape_keys if shape_keys: for kb in shape_keys.key_blocks: kb_list.setdefault(kb.name, []).append(kb) if prop_name in kb_list: value = utils.uniqueName(value, used_names | kb_list.keys()) for kb in kb_list[prop_name]: kb.name = value if 1: #morph_type != 'group_morphs': for m in mmd_root.group_morphs: for d in m.data: if d.name == prop_name and d.morph_type == morph_type: d.name = value for item in mmd_root.display_item_frames[u'表情'].items: if item.name == prop_name and item.morph_type == morph_type: item.name = value break prop['name'] = value
def __fixRepeatedMorphName(self): used_names = set() for m in self.__model.morphs: m.name = utils.uniqueName(m.name or 'Morph', used_names) used_names.add(m.name)