diff --git a/__init__.py b/__init__.py index 7c4db565..d3240bd9 100644 --- a/__init__.py +++ b/__init__.py @@ -160,6 +160,7 @@ def start_lab_session(): mblab_humanoid.update_character(mode="update_all") algorithms.deselect_all_objects() + algorithms.remove_censors() @persistent diff --git a/addon_updater_ops.py b/addon_updater_ops.py index 62f0bca7..be0e86d9 100644 --- a/addon_updater_ops.py +++ b/addon_updater_ops.py @@ -1270,7 +1270,7 @@ def register(bl_info): #updater.addon = # define at top of module, MUST be done first # Website for manual addon download, optional but recommended to set - updater.website = "https://mb-lab-community.github.io/MB-Lab.github.io/" + updater.website = "https://mblab.dev" # Addon subfolder path # "sample/path/to/addon" diff --git a/algorithms.py b/algorithms.py index b4614538..6f091fe5 100644 --- a/algorithms.py +++ b/algorithms.py @@ -1156,3 +1156,45 @@ def move_down_modifier(obj, modifier): set_active_object(obj) for n in range(len(obj.modifiers)): bpy.ops.object.modifier_move_down(modifier=modifier_name) + +def swap_material(old_mat_name, new_mat_name, char_name): + + #Get Object if it doesn't exist return none + obj = bpy.data.objects[char_name] + if obj == None: + return None + + #Try and get materials if either does not exist return None + + try: + + mat_old = bpy.data.materials[old_mat_name] + mat_new = bpy.data.materials[new_mat_name] + + except: + logger.debug("Material not found") + return None + + + #Assign new material to old material slot + materialslen = len(obj.data.materials) + for i in range(0,materialslen): + if obj.data.materials[i] == mat_old: + obj.data.materials[i] = mat_new + + return None + +def remove_censors(): + + my_prefs = bpy.context.preferences.addons.get(__package__, None) + if (not my_prefs.preferences.use_censors): + is_char = looking_for_humanoid_obj() + if is_char[0] == "FOUND": + char_name = is_char[1] + if char_name in("f_an01","f_an02","m_an01","m_an02"): + swap_material("MBlab_generic", "MBLab_anime_skin",char_name) + else: + swap_material("MBlab_generic", "MBLab_skin2",char_name) + + + return None diff --git a/data/face_rig/face_rig_lib.blend b/data/face_rig/face_rig_lib.blend new file mode 100644 index 00000000..417d0c47 Binary files /dev/null and b/data/face_rig/face_rig_lib.blend differ diff --git a/data/face_rig/facial_rig.blend b/data/face_rig/facial_rig.blend new file mode 100644 index 00000000..335d863e Binary files /dev/null and b/data/face_rig/facial_rig.blend differ diff --git a/preferences.py b/preferences.py index dc83651f..7be6e88c 100644 --- a/preferences.py +++ b/preferences.py @@ -66,11 +66,19 @@ class MBPreferences(bpy.types.AddonPreferences): max=59 ) + use_censors = bpy.props.BoolProperty( + name='censors', + description="Use censors to cover genitals and breasts", + default=True + ) + def draw(self, context): layout = self.layout # col = layout.column() # works best if a column, or even just self.layout mainrow = layout.row() col = mainrow.column() + #add censor preference here + col.prop(self, 'use_censors') # updater draw function addon_updater_ops.update_settings_ui(self, context)