Guest User

Untitled

a guest
Feb 15th, 2022
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 17.42 KB | None | 0 0
  1. # AdvancedSkeleton
  2. #   Copyright (C) Animation Studios
  3. import unreal
  4. import re
  5.  
  6. asset_name = "ControlRig"
  7. package_path = "/Game"
  8.  
  9. utilityBase = unreal.GlobalEditorUtilityBase.get_default_object()
  10. selectedAssets = utilityBase.get_selected_assets()
  11. if len(selectedAssets)<1:
  12.     raise Exception('Nothing selected, you must select a SkeletalMesh')
  13. selectedAsset = selectedAssets[0]
  14. if selectedAsset.get_class().get_name() != 'ControlRigBlueprint':
  15.     raise Exception('Selected object is not a ControlRigBlueprint, you must select a ControlRigBlueprint')
  16. ControlRigBlueprint = selectedAsset
  17.  
  18. def addASCtrl (name, parent, joint, type, typeEls, gizmoName, size, color, preName):
  19.     HierarchyModifier = ControlRigBlueprint.get_hierarchy_modifier()
  20.     RigVMController = getController()
  21.     RigVMGraph = ControlRigBlueprint.model
  22.     sp = '/Script/ControlRig.RigUnit_'
  23.     numNodes = len(RigVMGraph.get_nodes())
  24.     y = ((numNodes-1)/4)*400
  25.     addASControl (name, parent, gizmoName, size, color, joint)
  26.  
  27.     if name=='Main':
  28.         return
  29.  
  30.     #GTi
  31.     GTi = addNode (sp+'GetTransform','Execute',node_name=name+'_GTi')
  32.     RigVMController.set_node_position (GTi, [-1300, y+25])
  33.     RigVMController.set_pin_default_value(name+'_GTi'+'.Item.Type','Bone')
  34.     RigVMController.set_pin_default_value(name+'_GTi'+'.Item.Name',joint)
  35.     RigVMController.set_pin_default_value(name+'_GTi'+'.bInitial','True')
  36.     #STi
  37.     STi = addNode (sp+'SetTransform','Execute',node_name=name+'_STi')
  38.     RigVMController.set_node_position (STi, [-900, y])
  39.     RigVMController.set_pin_default_value(name+'_STi'+'.Item.Type','Control')
  40.     RigVMController.set_pin_default_value(name+'_STi'+'.Item.Name',name)
  41.     RigVMController.set_pin_default_value(name+'_STi'+'.bPropagateToChildren','True')
  42.     RigVMController.set_pin_default_value(name+'_STi'+'.bInitial','True')
  43.     #GT
  44.     GT = addNode (sp+'GetTransform','Execute',node_name=name+'_GT')
  45.     RigVMController.set_node_position (GT, [-500, y])
  46.     RigVMController.set_pin_default_value(name+'_GT'+'.Item.Type','Control')
  47.     RigVMController.set_pin_default_value(name+'_GT'+'.Item.Name',name)
  48.  
  49.     if type=='FK':
  50.         #CON
  51.         CON = addNode (sp+'TransformConstraintPerItem','Execute',node_name=name+'_CON')
  52.         RigVMController.set_node_position (CON, [100, y-90])
  53.         RigVMController.set_pin_default_value(name+'_CON'+'.Item.Type','Bone')
  54.         RigVMController.set_pin_default_value(name+'_CON'+'.Item.Name',joint)
  55.         RigVMController.add_array_pin(name+'_CON.Targets')
  56.     if type=='IK':
  57.         RigControl = addASControl ('Pole'+name, parent, 'Wedge_Solid', size, color, joint)
  58.         RigControl.set_editor_property('offset_transform', unreal.Transform(location=[float(typeEls[9]),float(typeEls[11]),float(typeEls[10])],scale=[1.0, 1.0, 1.0]))
  59.         HierarchyModifier.set_control (RigControl)
  60.         #Space for IK-end
  61.         HierarchyModifier.add_space ('Space'+typeEls[2])#,parent_name='Main'
  62.         parentNode ('Space'+typeEls[2],'Main')
  63.         #STiSpace
  64.         STiSpace = addNode (sp+'SetTransform','Execute',node_name=name+'_STiSpace')
  65.         RigVMController.set_node_position (STiSpace, [-1300, y])
  66.         RigVMController.set_node_position (GTi, [-1700, y+25])
  67.         RigVMController.set_pin_default_value(name+'_STiSpace'+'.Item.Type','Space')
  68.         RigVMController.set_pin_default_value(name+'_STiSpace'+'.Item.Name','Space'+typeEls[2])
  69.         RigVMController.set_pin_default_value(name+'_STiSpace'+'.bPropagateToChildren','True')
  70.         RigVMController.set_pin_default_value(name+'_STiSpace'+'.bInitial','True')
  71.         #IK(Basic IK)
  72.         IK = addNode (sp+'TwoBoneIKSimplePerItem','Execute',node_name=name+'_IK')
  73.         RigVMController.set_node_position (IK, [600, y-130])
  74.         RigVMController.set_pin_default_value(name+'_IK'+'.ItemA.Name',typeEls[0])
  75.         RigVMController.set_pin_default_value(name+'_IK'+'.ItemB.Name',typeEls[1])
  76.         RigVMController.set_pin_default_value(name+'_IK'+'.EffectorItem.Name',typeEls[2])
  77.         RigVMController.set_pin_default_value(name+'_IK'+'.PrimaryAxis.X',typeEls[3])
  78.         RigVMController.set_pin_default_value(name+'_IK'+'.PrimaryAxis.Y',typeEls[4])
  79.         RigVMController.set_pin_default_value(name+'_IK'+'.PrimaryAxis.Z',typeEls[5])
  80.         RigVMController.set_pin_default_value(name+'_IK'+'.SecondaryAxis.X',typeEls[6])
  81.         RigVMController.set_pin_default_value(name+'_IK'+'.SecondaryAxis.Y',typeEls[7])
  82.         RigVMController.set_pin_default_value(name+'_IK'+'.SecondaryAxis.Z',typeEls[8])
  83.         RigVMController.set_pin_default_value(name+'_IK'+'.PoleVectorKind','Location')
  84.         RigVMController.set_pin_default_value(name+'_IK'+'.PoleVectorSpace.Type','Control')
  85.         RigVMController.set_pin_default_value(name+'_IK'+'.PoleVectorSpace.Name','Pole'+name)
  86.         RigVMController.set_pin_default_value(name+'_IK'+'.bPropagateToChildren','True')
  87.         #GTSpace
  88.         GTSpace = addNode (sp+'GetTransform','Execute',node_name=name+'_GTSpace')
  89.         RigVMController.set_node_position (GTSpace, [1000, y])
  90.         RigVMController.set_pin_default_value(name+'_GTSpace'+'.Item.Type','Bone')
  91.         RigVMController.set_pin_default_value(name+'_GTSpace'+'.Item.Name',typeEls[2])
  92.         #CON (for IK this is Space)
  93.         CON = addNode (sp+'TransformConstraintPerItem','Execute',node_name=name+'_CON')
  94.         RigVMController.set_node_position (CON, [1350, y-90])
  95.         RigVMController.set_pin_default_value(name+'_CON'+'.Item.Type','Space')
  96.         RigVMController.set_pin_default_value(name+'_CON'+'.Item.Name','Space'+typeEls[2])
  97.         RigVMController.add_array_pin(name+'_CON.Targets')
  98.         RigVMController.set_pin_default_value(name+'_CON'+'.Targets.0.bMaintainOffset','False')
  99.  
  100.     #Links
  101.     if name=='Main' or name=='RootX_M':
  102.         RigVMController.add_link(name+'_GTi.Transform.translation' , name+'_STi.Transform.translation')
  103.     else:
  104.         RigVMController.add_link(name+'_GTi.Transform' , name+'_STi.Transform')
  105.     if type=='FK':
  106.         RigVMController.add_link(name+'_GT.Transform' , name+'_CON.Targets.0.Transform')
  107.     if type=='IK':
  108.         RigVMController.add_link(name+'_GTi.Transform' , name+'_STiSpace.Transform')
  109.         RigVMController.add_link(name+'_GT.Transform' , name+'_IK.Effector')
  110.         RigVMController.add_link(name+'_GTSpace.Transform' , name+'_CON.Targets.0.Transform')
  111.  
  112.     #ExecuteContext
  113.     if numNodes==2:
  114.         RigVMController.add_link('RigUnit_BeginExecution.ExecuteContext' , name+'_CON.ExecuteContext')
  115.         RigVMController.add_link('RigUnit_PrepareForExecution.ExecuteContext' , name+'_STi.ExecuteContext')
  116.     else:
  117.         if type=='FK':
  118.             RigVMController.add_link(preName+'_CON.ExecuteContext' , name+'_CON.ExecuteContext')
  119.             RigVMController.add_link(preName+'_STi.ExecuteContext' , name+'_STi.ExecuteContext')
  120.         if type=='IK':
  121.             RigVMController.add_link(preName+'_CON.ExecuteContext' , name+'_IK.ExecuteContext')
  122.             RigVMController.add_link(name+'_IK.ExecuteContext' , name+'_CON.ExecuteContext')
  123.             RigVMController.add_link(preName+'_STi.ExecuteContext' , name+'_STiSpace.ExecuteContext')
  124.             RigVMController.add_link(name+'_STiSpace.ExecuteContext' , name+'_STi.ExecuteContext')
  125.  
  126.  
  127. def addASControl (name, parent, gizmoName, size, color, joint):
  128.     HierarchyModifier = ControlRigBlueprint.get_hierarchy_modifier()
  129.     RigVMController = getController()
  130.     x = re.search("^Space.*", parent)
  131.     if x:
  132.         key = HierarchyModifier.add_control (name,space_name=parent)
  133.     else:
  134.         key = HierarchyModifier.add_control (name,parent_name=parent)
  135.     RigControl = HierarchyModifier.get_control (key)
  136.     RigControl.set_editor_property('gizmo_name',gizmoName)
  137.     s = 0.01*size
  138.     RigControl.set_editor_property('gizmo_transform', unreal.Transform(scale=[s,s,s]))
  139.  
  140.     if name!='Main' and name!='RootX_M':
  141.         RigControl.set_editor_property('gizmo_transform', unreal.Transform(rotation=[90,0,0],scale=[s,s,s]))
  142.  
  143.     Color = unreal.Color(b=color[2]*255, g=color[1]*255, r=color[0]*255, a=0)
  144.     LinearColor = unreal.LinearColor()
  145.     LinearColor.set_from_srgb(Color)
  146.     RigControl.set_editor_property('gizmo_color',LinearColor)
  147.     HierarchyModifier.set_control (RigControl)
  148.     return RigControl
  149.  
  150. def parentNode (child,parent):
  151.     HierarchyModifier = ControlRigBlueprint.get_hierarchy_modifier()
  152.     RigElementKeys = HierarchyModifier.get_elements()
  153.     for key in RigElementKeys:
  154.         if (key.name == child):
  155.             childKey = key
  156.     for key in RigElementKeys:
  157.         if (key.name == parent):
  158.             parentKey = key
  159.     HierarchyModifier.reparent_element (childKey, parentKey)
  160.  
  161. def addNode (script_struct_path, method_name, node_name):
  162.     #RigVMController.
  163.     #add_struct_node_from_struct_path UE4
  164.     #add_unit_node_from_struct_path UE5
  165.     RigVMController = getController()
  166.     try:
  167.         node = RigVMController.add_struct_node_from_struct_path(script_struct_path,method_name,node_name=node_name) #UE4
  168.     except:
  169.         node = RigVMController.add_unit_node_from_struct_path(script_struct_path,method_name,node_name=node_name) #UE5
  170.     return node
  171.  
  172. def getController ():
  173.     try:
  174.         RigVMController = ControlRigBlueprint.get_editor_property('controller') #UE4
  175.     except:
  176.         RigVMController = ControlRigBlueprint.get_controller() #UE5
  177.     return RigVMController
  178.  
  179. def main ():
  180.     HierarchyModifier = ControlRigBlueprint.get_hierarchy_modifier()
  181.     RigVMController = getController()
  182.     RigElementKeys = HierarchyModifier.get_elements()
  183.     RigVMGraph = ControlRigBlueprint.model
  184.  
  185.     #Clear out existing rig-setup
  186.     nodes = RigVMGraph.get_nodes()
  187.     for node in nodes:
  188.         RigVMController.remove_node(node)
  189.     #Clear out existing controllers
  190.     for key in RigElementKeys:
  191.         if key.type != 1: #BONE
  192.             try:
  193.                 HierarchyModifier.remove_element(key)
  194.             except:
  195.                 pass
  196.  
  197.     BeginExecutionNode = addNode ('/Script/ControlRig.RigUnit_BeginExecution','Execute',node_name='RigUnit_BeginExecution')
  198.     RigVMController.set_node_position (BeginExecutionNode, [-300, -100])
  199.     PrepareExecutionNode = addNode ('/Script/ControlRig.RigUnit_PrepareForExecution','Execute',node_name='RigUnit_PrepareForExecution')
  200.     RigVMController.set_node_position (PrepareExecutionNode, [-600, -100])
  201.     OutSpaceKey = HierarchyModifier.add_space ('OutSpace')#needed for other spaces to work with custom parents
  202.  
  203.     #//-- ASControllers Starts Here --//
  204.     addASCtrl ('Main','','DeformationSystem','Main',[],'Circle_Thick',109.0651636,[0, 0.2549999952, 0.6000000238, 1.0],'')
  205.     addASCtrl ('RootX_M','Main','Root_M','FK',[],'Arrow4_Thin',113.7993234,[0, 0.2549999952, 0.6000000238, 1.0],'Main')
  206.  
  207.     addASCtrl ('FKRoot_M','RootX_M','Root_M','FK',[],'Circle_Thick',69.60995856,[0.3919999897, 0.8629999757, 1, 1.0],'RootX_M')
  208.     addASCtrl ('IKLeg_L','Main','Ankle_L','IK',['Hip_L','Knee_L','Ankle_L','-1','-0','-0','0','1','0','19.51839615','26.60204951','51.38115196'],'Box_Thick',43.3796025,[1, 0, 0, 1.0],'FKRoot_M')
  209.     addASCtrl ('FKToes_L','SpaceAnkle_L','Toes_L','FK',[],'Circle_Thick',31.35710166,[0.3919999897, 0.8629999757, 1, 1.0],'IKLeg_L')
  210.     addASCtrl ('FKSpine1_M','FKRoot_M','Spine1_M','FK',[],'Circle_Thick',67.2020233,[0.3919999897, 0.8629999757, 1, 1.0],'FKToes_L')
  211.     addASCtrl ('FKChest_M','FKSpine1_M','Chest_M','FK',[],'Circle_Thick',84.77685534,[0.3919999897, 0.8629999757, 1, 1.0],'FKSpine1_M')
  212.     addASCtrl ('FKScapula_L','FKChest_M','Scapula_L','FK',[],'Circle_Thick',67.93802755,[1, 1, 0.3880000114, 1.0],'FKChest_M')
  213.     addASCtrl ('FKShoulder_L','FKScapula_L','Shoulder_L','FK',[],'Circle_Thick',66.7038256,[0.3919999897, 0.8629999757, 1, 1.0],'FKScapula_L')
  214.     addASCtrl ('FKElbow_L','FKShoulder_L','Elbow_L','FK',[],'Circle_Thick',37.52736712,[0.3919999897, 0.8629999757, 1, 1.0],'FKShoulder_L')
  215.     addASCtrl ('FKWrist_L','FKElbow_L','Wrist_L','FK',[],'Circle_Thick',44.73973494,[0.3919999897, 0.8629999757, 1, 1.0],'FKElbow_L')
  216.     addASCtrl ('FKCup_L','FKWrist_L','Cup_L','FK',[],'Circle_Thick',35.30348506,[0.3919999897, 0.8629999757, 1, 1.0],'FKWrist_L')
  217.     addASCtrl ('FKRingFinger1_L','FKCup_L','RingFinger1_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKCup_L')
  218.     addASCtrl ('FKRingFinger2_L','FKRingFinger1_L','RingFinger2_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKRingFinger1_L')
  219.     addASCtrl ('FKRingFinger3_L','FKRingFinger2_L','RingFinger3_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKRingFinger2_L')
  220.     addASCtrl ('FKPinkyFinger1_L','FKCup_L','PinkyFinger1_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKRingFinger3_L')
  221.     addASCtrl ('FKPinkyFinger2_L','FKPinkyFinger1_L','PinkyFinger2_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKPinkyFinger1_L')
  222.     addASCtrl ('FKPinkyFinger3_L','FKPinkyFinger2_L','PinkyFinger3_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKPinkyFinger2_L')
  223.     addASCtrl ('FKIndexFinger1_L','FKWrist_L','IndexFinger1_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKPinkyFinger3_L')
  224.     addASCtrl ('FKIndexFinger2_L','FKIndexFinger1_L','IndexFinger2_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKIndexFinger1_L')
  225.     addASCtrl ('FKIndexFinger3_L','FKIndexFinger2_L','IndexFinger3_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKIndexFinger2_L')
  226.     addASCtrl ('FKThumbFinger1_L','FKWrist_L','ThumbFinger1_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKIndexFinger3_L')
  227.     addASCtrl ('FKThumbFinger2_L','FKThumbFinger1_L','ThumbFinger2_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKThumbFinger1_L')
  228.     addASCtrl ('FKThumbFinger3_L','FKThumbFinger2_L','ThumbFinger3_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKThumbFinger2_L')
  229.     addASCtrl ('FKMiddleFinger1_L','FKWrist_L','MiddleFinger1_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKThumbFinger3_L')
  230.     addASCtrl ('FKMiddleFinger2_L','FKMiddleFinger1_L','MiddleFinger2_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKMiddleFinger1_L')
  231.     addASCtrl ('FKMiddleFinger3_L','FKMiddleFinger2_L','MiddleFinger3_L','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKMiddleFinger2_L')
  232.     addASCtrl ('FKNeck_M','FKChest_M','Neck_M','FK',[],'Circle_Thick',56.49939058,[0.3919999897, 0.8629999757, 1, 1.0],'FKMiddleFinger3_L')
  233.     addASCtrl ('FKHead_M','FKNeck_M','Head_M','FK',[],'Circle_Thick',54.92711264,[0.3919999897, 0.8629999757, 1, 1.0],'FKNeck_M')
  234.     addASCtrl ('FKHair_M','FKHead_M','Hair_M','FK',[],'Circle_Thick',52.43528856,[0.3919999897, 0.8629999757, 1, 1.0],'FKHead_M')
  235.     addASCtrl ('FKScapula_R','FKChest_M','Scapula_R','FK',[],'Circle_Thick',67.93802754,[1, 1, 0.3880000114, 1.0],'FKHair_M')
  236.     addASCtrl ('FKShoulder_R','FKScapula_R','Shoulder_R','FK',[],'Circle_Thick',66.7038256,[0.3919999897, 0.8629999757, 1, 1.0],'FKScapula_R')
  237.     addASCtrl ('FKElbow_R','FKShoulder_R','Elbow_R','FK',[],'Circle_Thick',37.52736712,[0.3919999897, 0.8629999757, 1, 1.0],'FKShoulder_R')
  238.     addASCtrl ('FKWrist_R','FKElbow_R','Wrist_R','FK',[],'Circle_Thick',44.73973494,[0.3919999897, 0.8629999757, 1, 1.0],'FKElbow_R')
  239.     addASCtrl ('FKCup_R','FKWrist_R','Cup_R','FK',[],'Circle_Thick',35.30348506,[0.3919999897, 0.8629999757, 1, 1.0],'FKWrist_R')
  240.     addASCtrl ('FKRingFinger1_R','FKCup_R','RingFinger1_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKCup_R')
  241.     addASCtrl ('FKRingFinger2_R','FKRingFinger1_R','RingFinger2_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKRingFinger1_R')
  242.     addASCtrl ('FKRingFinger3_R','FKRingFinger2_R','RingFinger3_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKRingFinger2_R')
  243.     addASCtrl ('FKPinkyFinger1_R','FKCup_R','PinkyFinger1_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKRingFinger3_R')
  244.     addASCtrl ('FKPinkyFinger2_R','FKPinkyFinger1_R','PinkyFinger2_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKPinkyFinger1_R')
  245.     addASCtrl ('FKPinkyFinger3_R','FKPinkyFinger2_R','PinkyFinger3_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKPinkyFinger2_R')
  246.     addASCtrl ('FKIndexFinger1_R','FKWrist_R','IndexFinger1_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKPinkyFinger3_R')
  247.     addASCtrl ('FKIndexFinger2_R','FKIndexFinger1_R','IndexFinger2_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKIndexFinger1_R')
  248.     addASCtrl ('FKIndexFinger3_R','FKIndexFinger2_R','IndexFinger3_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKIndexFinger2_R')
  249.     addASCtrl ('FKThumbFinger1_R','FKWrist_R','ThumbFinger1_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKIndexFinger3_R')
  250.     addASCtrl ('FKThumbFinger2_R','FKThumbFinger1_R','ThumbFinger2_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKThumbFinger1_R')
  251.     addASCtrl ('FKThumbFinger3_R','FKThumbFinger2_R','ThumbFinger3_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKThumbFinger2_R')
  252.     addASCtrl ('FKMiddleFinger1_R','FKWrist_R','MiddleFinger1_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKThumbFinger3_R')
  253.     addASCtrl ('FKMiddleFinger2_R','FKMiddleFinger1_R','MiddleFinger2_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKMiddleFinger1_R')
  254.     addASCtrl ('FKMiddleFinger3_R','FKMiddleFinger2_R','MiddleFinger3_R','FK',[],'Circle_Thick',15.9579963,[0.3919999897, 0.8629999757, 1, 1.0],'FKMiddleFinger2_R')
  255.     addASCtrl ('IKLeg_R','Main','Ankle_R','IK',['Hip_R','Knee_R','Ankle_R','1','0','0','-0','-1','-0','-19.51839615','26.60204951','51.38115196'],'Box_Thick',43.3796025,[1, 0, 0, 1.0],'FKMiddleFinger3_R')
  256.     addASCtrl ('FKToes_R','SpaceAnkle_R','Toes_R','FK',[],'Circle_Thick',31.35710167,[0.3919999897, 0.8629999757, 1, 1.0],'IKLeg_R')
  257.     #//-- ASControllers Ends Here --//
  258. #   HierarchyModifier.remove_element (OutSpaceKey) #UE5 issue with removing this
  259.     print ("ControlRig created")
  260.  
  261. if __name__ == "__main__":
  262.     main()
Advertisement
Add Comment
Please, Sign In to add comment