Added blender scripts
This commit is contained in:
188
assets/blender/scripts/vrm/VroidMixamoRename.py
Normal file
188
assets/blender/scripts/vrm/VroidMixamoRename.py
Normal file
@@ -0,0 +1,188 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user