Files
streaming_world/assets/blender/scripts/vrm/VroidMixamoRename.py
2025-01-28 11:30:59 +03:00

189 lines
9.1 KiB
Python

bl_info = {
"name": "Vroid To Mixamo Rename",
"author": "Artificial Light",
"version": (1, 0),
"blender": (2, 80, 0),
"location": "View3D > N",
"description": "Renames Vrm importer bones to mixamo add-on and changes the bone roll so that Mixamo add-on works with Vroid models",
"warning": "",
"doc_url": "",
"category": "",
}
import bpy
from bpy.types import (Panel,Operator)
import math
class Button(bpy.types.Operator):
"""Make Sure to Select the Armature"""
bl_idname = "rnm.1"
bl_label = "RENAME AND ROLL"
def execute(self, context):
context = bpy.context
obj = context.object
namelist = [
("J_Bip_C_Chest", "mixamorig:Spine1"),
("J_Bip_C_UpperChest","mixamorig:Spine2"),
("J_Bip_C_Head","mixamorig:Head"),
("J_Bip_C_Neck","mixamorig:Neck"),
("J_Bip_C_Spine","mixamorig:Spine"),
("J_Bip_C_Hips","mixamorig:Hips"),
("J_Bip_L_UpperLeg","mixamorig:LeftUpLeg"),
("J_Bip_R_UpperLeg","mixamorig:RightUpLeg"),
("J_Bip_L_LowerLeg","mixamorig:LeftLeg"),
("J_Bip_R_LowerLeg","mixamorig:RightLeg"),
("J_Bip_R_Foot","mixamorig:RightFoot"),
("J_Bip_L_Foot","mixamorig:LeftFoot"),
("J_Bip_R_ToeBase","mixamorig:RightToeBase"),
("J_Bip_L_ToeBase","mixamorig:LeftToeBase"),
("J_Bip_L_Shoulder","mixamorig:LeftShoulder"),
("J_Bip_R_Shoulder","mixamorig:RightShoulder"),
("J_Bip_L_UpperArm","mixamorig:LeftArm"),
("J_Bip_R_UpperArm","mixamorig:RightArm"),
("J_Bip_L_LowerArm","mixamorig:LeftForeArm"),
("J_Bip_R_LowerArm","mixamorig:RightForeArm"),
("J_Bip_L_Hand","mixamorig:LeftHand"),
("J_Bip_R_Hand","mixamorig:RightHand"),
("J_Bip_L_Thumb1","mixamorig:LeftHandThumb1"),
("J_Bip_R_Thumb1","mixamorig:RightHandThumb1"),
("J_Bip_L_Thumb2","mixamorig:LeftHandThumb2"),
("J_Bip_R_Thumb2","mixamorig:RightHandThumb2"),
("J_Bip_L_Thumb3","mixamorig:LeftHandThumb3"),
("J_Bip_R_Thumb3","mixamorig:RightHandThumb3"),
("J_Bip_L_Index1","mixamorig:LeftHandIndex1"),
("J_Bip_R_Index1","mixamorig:RightHandIndex1"),
("J_Bip_L_Index2","mixamorig:LeftHandIndex2"),
("J_Bip_R_Index2","mixamorig:RightHandIndex2"),
("J_Bip_L_Index3","mixamorig:LeftHandIndex3"),
("J_Bip_R_Index3","mixamorig:RightHandIndex3"),
("J_Bip_L_Middle1","mixamorig:LeftHandMiddle1"),
("J_Bip_R_Middle1","mixamorig:RightHandMiddle1"),
("J_Bip_L_Middle2","mixamorig:LeftHandMiddle2"),
("J_Bip_R_Middle2","mixamorig:RightHandMiddle2"),
("J_Bip_L_Middle3","mixamorig:LeftHandMiddle3"),
("J_Bip_R_Middle3","mixamorig:RightHandMiddle3"),
("J_Bip_L_Ring1","mixamorig:LeftHandRing1"),
("J_Bip_R_Ring1","mixamorig:RightHandRing1"),
("J_Bip_L_Ring2","mixamorig:LeftHandRing2"),
("J_Bip_R_Ring2","mixamorig:RightHandRing2"),
("J_Bip_L_Ring3","mixamorig:LeftHandRing3"),
("J_Bip_R_Ring3","mixamorig:RightHandRing3"),
("J_Bip_L_Little1","mixamorig:LeftHandPinky1"),
("J_Bip_R_Little1","mixamorig:RightHandPinky1"),
("J_Bip_L_Little2","mixamorig:LeftHandPinky2"),
("J_Bip_R_Little2","mixamorig:RightHandPinky2"),
("J_Bip_L_Little3","mixamorig:LeftHandPinky3"),
("J_Bip_R_Little3","mixamorig:RightHandPinky3"),
("J_Adj_L_FaceEye","Eye.L"),
("J_Adj_R_FaceEye","Eye.R"),
("J_Sec_L_Bust1","Bust1.L"),
("J_Sec_R_Bust1","Bust1.R"),
("J_Sec_L_Bust2","Bust2.L"),
("J_Sec_R_Bust2","Bust2.R"),
]
for name, newname in namelist:
# get the pose bone with name
pb = obj.pose.bones.get(name)
# continue if no bone of that name
if pb is None:
continue
# rename
pb.name = newname
bpy.ops.object.mode_set(mode = 'EDIT')
bpy.context.object.data.edit_bones['mixamorig:LeftShoulder'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftArm'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftForeArm'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHand'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightShoulder'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightArm'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightForeArm'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHand'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftUpLeg'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightUpLeg'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftLeg'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightLeg'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftFoot'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftToeBase'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightFoot'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightToeBase'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandThumb1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandThumb2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandThumb3'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandThumb1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandThumb2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandThumb3'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandIndex1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandIndex2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandIndex3'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandIndex1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandIndex2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandIndex3'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandMiddle1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandMiddle2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandMiddle3'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandMiddle1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandMiddle2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandMiddle3'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandRing1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandRing2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandRing3'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandRing1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandRing2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandRing3'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandPinky1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandPinky2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:LeftHandPinky3'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandPinky1'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandPinky2'].roll=+math.radians(180)
bpy.context.object.data.edit_bones['mixamorig:RightHandPinky3'].roll=+math.radians(180)
bpy.ops.object.mode_set(mode='OBJECT')
return {'FINISHED'}
class Panel(bpy.types.Panel):
bl_label = "Rename Vroid Bones for Mixamo and Change Bone Roll"
bl_idname = "OBJECT_PT_Rename"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "Rename Vroid Bones and change Roll"
def draw(self, context):
layout = self.layout
obj = context.object
row = layout.row()
row.operator(Button.bl_idname,text="RENAME AND ROLL", icon='MENU_PANEL')
from bpy.utils import register_class, unregister_class
_classes=[
Button,
Panel
]
def register():
for cls in _classes:
register_class(cls)
def unregister():
for cls in _classes:
unregister_class(cls)
if __name__ == "__main__":
register()