try (CloseRolloutFloater RolloutAutoRig_1) catch() ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --CREA LA COLUMNA ( fn creaPuntos bn_spine= ( dist_Points= bn_spine CreaPunto1= point box:true cross:true size:20 name:"Punto1" pos: [0,0,0] CreaPunto2= point box:true cross:true size:20 name:"Punto2" pos:[dist_Points,0,0] --global rotacion_Selection= selection[1].rotation creaPunto1.wirecolor= green creaPunto2.wirecolor= green $punto2.parent= $punto1 ) fn creaCadena UI_numeroHuesos Punto1 Punto2 ancho alto cantidadControles TamanoControl tipoLink BnReferencia Bn_Rot NombreBn = ( --CREA LOS HUESOS ENTRE LOS PUNTOS DEL INICIO Y EL FINAL DEL TENTACULO NumberBones= UI_numeroHuesos CreaPunto1= Punto1 CreaPunto2= Punto2 InitialPose= CreaPunto1.pos.x Long= length(CreaPunto1.pos-CreaPunto2.pos) vecDir= normalize (CreaPunto2.pos-CreaPunto1.pos) BoneLength= Long/NumberBones huesos =#() puntos = #() helpersitos= #() --CREA LOS HUESOS ENRE LOS DOS PUNTOS SELECCIONADOS for i = 1 to NumberBones do ( creaHueso= bonesys.createbone [((i-1)*BoneLength)+InitialPose,Punto1.pos.y,Punto1.pos.z] [(i*BoneLength)+InitialPose,Punto1.pos.y,Punto1.pos.z] [0,0,1] creaHueso.Width=ancho creaHueso.Height=alto creaHueso.parent= Punto1 --creaHueso.wirecolor= colorsito creaHueso.name= "huesoMain_"+i as string helpersHueso= point box:true cross:false size: 5 cross: false axistripod= true helpersHueso.name= "HelperChain_"+i as string helpersHueso.wirecolor= blue helpersHueso.pos= creaHueso.pos creaHueso.position.controller =position_constraint() creaHueso.position.controller.appendtarget helpersHueso 100 append huesos creaHueso append puntos helpersHueso Punto2.parent= puntos[puntos.count] ) --CREACION ULTIMO HUESO creaUltimoHueso = bonesys.createbone (CreaPunto2.pos) (CreaPunto2.pos) [0,0,1] creaUltimoHueso.name = ("huesoMain_"+(huesos.count +1) as string ) creaUltimoHueso.Width=ancho creaUltimoHueso.Height=alto --creaUltimoHueso.wirecolor= colorsito creaUltimoPunto = point box:true cross:false size: 5 cross: false axistripod= true creaUltimoPunto.name = ("HelperChain_"+(puntos.count +1) as string) creaUltimoPunto.pos = CreaPunto2.pos creaUltimoHueso.position.controller = position_constraint() creaUltimoHueso.position.controller.appendtarget creaUltimoPunto 100 append huesos creaUltimoHueso append puntos creaUltimoPunto --EMPARENTA CADA HUESO A SU HUESO ANTERIOR Y CREA EL LOOK AT CONSTRAINT for o in 1 to huesos.count do ( if huesos[o].name != "huesoMain_1"then huesos[o].parent = huesos[o-1] else huesos [o].parent = CreaPunto1 if puntos[o] != puntos[1] then puntos[o].parent = puntos[o-1] else puntos[o].parent = Punto1 if huesos[o] != huesos[huesos.count] then huesos[o].rotation.controller =lookAt_constraint target_axis:0 upnode_axis:2 StoUP_axis:2 lookat_vector_length:0 if huesos[o] != huesos[huesos.count] then huesos[o].rotation.controller.appendtarget puntos[o+1] 100 else 0 if huesos[o] != huesos[huesos.count] then huesos[o].rotation.controller.pickupnode=puntos[o+1] else 0 if huesos[o] != huesos[huesos.count] then huesos[o].rotation.controller.upnode_world=false else 0 ) if $splineColumna == undefined then (--CREA LA SPLINE PARA EL SKIN ss = SplineShape pos:Punto1.pos name:"splineColumna" render_useViewportSettings:false render_displayRenderMesh:true render_thickness:0.01 addNewSpline ss ss.wirecolor= blue cantidad =cantidadControles --Cantidad de puntos en la linea dependiendo de la longitud de la misma longitud=length (Punto2.pos-Punto1.pos) --longitud del vector entre las dos selecciones vectorsito= (Punto2.pos-Punto1.pos)-- vector generado entre ambas selecciones direccion= vectorsito/longitud --direccion del vector normalizando vectorsito posiciones= longitud/cantidad --division para obtener la longitud de cada segmento dentro de la linea addKnot ss 1 #corner #line Punto1.pos --Añade el primer punto en la seleccion numero 1 for o = 1 to cantidadControles do ( -- añade los nuevos puntos dentro de la linea dependiendo de la cantidad proporcionada en la interfaz addKnot ss 1 #smooth #curve ((direccion* (posiciones*o))+Punto1.pos) print posiciones ) updateShape ss ss ) else 0 --CREA EL PATH CONSTRAINT EN LOS PUNTOS porcentajePath= 100.0/(puntos.count-1) -- for o in 1 to huesos.count do ( ControladorPath= Path_Constraint follow:on puntos[o].pos.controller = controladorPath puntos[o].pos.controller.path = $splineColumna porcentajes= porcentajePath*(o-1) puntos[o].pos.controller.percent = porcentajes deleteKeys puntos ) --AÑADE EL PATH CONSTRAINT A LOS PUNTO1 Y PUNTO2 ControladorPath1= Path_Constraint follow:on Punto1.pos.controller = controladorPath1 Punto1.pos.controller.path = $splineColumna Punto1.pos.controller.percent=0 ControladorPath2= Path_Constraint follow:on Punto2.pos.controller = controladorPath2 Punto2.pos.controller.path = $splineColumna Punto2.pos.controller.percent=100 deleteKeys $Punto1 deleteKeys $Punto2 --CREACION DEL PUNTO CONTROL GENERAL if $controlGral == undefined then ( PUNTO_CTRL= point name:"controlGral" size: 25 pos: punto1.pos box: true PUNTO_CTRL.wirecolor= red --PUNTO_CTRL.rotation = rotacion_Selection ) else ( 0 )-- select $splineColumna -- splineSkin= Spline_IK_Control() addmodifier $splineColumna (Spline_IK_Control ()) $splineColumna.modifiers[#Spline_IK_Control].linkTypes = tipoLink $splineColumna.modifiers[#Spline_IK_Control].createHelper ((cantidadControles)+1) -- RENOMBRA LOS HELPERS for i = 1 to $splineColumna.modifiers[#Spline_IK_Control].getKnotCount() do ( $splineColumna.modifiers[#Spline_IK_Control].helper_list[i].name = ("helpersito"+i as string) $splineColumna.modifiers[#Spline_IK_Control].helper_list[i].wirecolor= green $splineColumna.modifiers[#Spline_IK_Control].helper_list[i].size= TamanoControl -- if $splineColumna.modifiers[#Spline_IK_Control].helper_list[i]!=$splineColumna.modifiers[#Spline_IK_Control].helper_list[1] then ( --$splineColumna.modifiers[#Spline_IK_Control].helper_list[i].parent = $splineColumna.modifiers[#Spline_IK_Control].helper_list[i-1] 0 ) else ( $splineColumna.modifiers[#Spline_IK_Control].helper_list[i].parent = $controlGral ) ) Punto1.parent=PUNTO_CTRL $splineColumna.parent= PUNTO_CTRL Helpersitos = $helpersito* as array --AÑADE EL ORIENTATION CONSTRAINT A LOS HELPER CHAIN for i in 1 to puntos.count do ( puntos[i].rotation.controller= rotation_list() puntos[i].rotation.controller.Available.controller= Orientation_Constraint() puntos[i].rotation.controller.Orientation_Constraint.controller.appendtarget Helpersitos[1] (100*(UI_numeroHuesos-i)/(UI_numeroHuesos-1) as float) puntos[i].rotation.controller.Orientation_Constraint.controller.appendTarget Helpersitos[Helpersitos.count] (100*(i-1)/(UI_numeroHuesos-1) as float) ) PUNTO_CTRL.pos = BnReferencia in coordsys Bn_Rot PUNTO_CTRL.rotation = eulerangles 0 0 0 --PUNTO_CTRL.parent = Bn_Rot for o = 1 to huesos.count do ( huesos[o].name = (NombreBn + "BoneSpine" + o as string) ) for o = 1 to puntos.count do ( puntos[o].name = (NombreBn + "Pt_Spine" + o as string) ) for o = 1 to helpersitos.count do ( helpersitos[o].name = (NombreBn + "Hlp_Spine" + o as string) ) hide puntos PUNTO_CTRL.name= (NombreBn + "Pt_Control" + o as string) ) fn RenombrarCadena NombrePT= ( $punto1.name = (NombrePT + "PT_1") $punto2.name = (NombrePT + "PT_2") $SplineColumna.name = (NombrePT + "Spline_Columna") ) try(destroyDialog RL_SPINE_ON_BONE)catch() rollout RL_SPINE_ON_BONE "SPINE" width:190 height:350 ( pickbutton BoneSpine "¡¡¡PICK BONE!!!" group "CHAIN NAME"( edittext UI_EditText "Prefix:" --button UI_Rename "Put Prefix" ) group "BONE PROPERTIES" ( --groupBox grp_BoneProperties "BoneProperties" pos:[11,12] width:133 height:108 --label UI_SpaceLabelTitulo "" spinner UI_numeroHuesos "Numof Bones" width:96 height:16 range: [2,100,2] type: #integer align: #left spinner UI_Width "Bone Width" width:88 height:16 range:[0.5,100,10] type:#float align: #left spinner UI_Height "Bone Height" width:96 height:16 range:[0.5,100,10] type:#float align: #left ) group "CONTROL PROPERTIES"( --groupBox grp_SplineProperties "Controls Number" pos:[8,128] width:133 height:70 label UI_SpaceLabel "" spinner UI_cantidadControles "Numb of Ctrls" width:96 height:16 range: [2,100,2] type:#integer align: #left spinner UI_ControlSize "Controls Size" width:96 height:16 range: [1,100,20] type:#float align: #left --button UI_crearPuntos "CreateGuides" width:88 height:24 align: #left button UI_CreateBones "CreateBones" width:88 height:24 align: #left button UI_DeleteBones "DeleteBones" width:88 height:24 align: #left checkbox UI_CheckLinks "Parented" checked:true ) on BoneSpine picked objeto do ( BoneSpine.text= objeto.name global Objeto_Padre= BoneSpine.object ) on UI_crearPuntos pressed do with undo on ( creaPuntos (BoneSpine.object.length) ) on UI_CreateBones pressed do with undo on ( creaPuntos (BoneSpine.object.length) if UI_CheckLinks.checked then ( creaCadena (UI_numeroHuesos.value) $Punto1 $Punto2 (UI_Width.value) (UI_Height.value) (UI_cantidadControles.value) (UI_ControlSize.value) 0 (BoneSpine.object.pos) (BoneSpine.object) (UI_EditText.text+"_" ) ) else ( creaCadena (UI_numeroHuesos.value) $Punto1 $Punto2 (UI_Width.value) (UI_Height.value) (UI_cantidadControles.value) (UI_ControlSize.value) 2 (BoneSpine.object.pos) (BoneSpine.object) (UI_EditText.text+"_" ) ) $Punto1.size=5 $Punto2.size=5 RenombrarCadena (UI_EditText.text+"_" ) ) on UI_DeleteBones pressed do with undo on ( --delete $huesoMain_* --delete $HelperChain_* delete (BoneSpine.object) ) on UI_Rename pressed do with undo on ( for o in selection do o.name = UI_EditText.text+"_" +o.name ) ) ) ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --CREA EL BRAZO ( rollout AutoBrazo "ARMS" width:162 height:300 ( group "ARMS NAME" ( label lb_prefijo "Prefijo" width:78 height:12 align:#right editText UI_Prefijo "" height:20 align:#right ) radioButtons UI_Arms "Arms" width:69 height:46 labels:#("Arm Right", "Arm Left") default:1 columns:1 align:#left group "ARMS CREATION"( pickbutton btn_PARENT_Arms "ARMS PARENT" button UI_createPoints "Create Points" width:88 height:24 button UI_CreateArm "Create Arm" width:88 height:24 ) on UI_Arms changed stat do ( ) on UI_createPoints pressed do with undo on ( if UI_Prefijo.text.count != 0 then ( case UI_Arms.state of ( 1: ( --CREACION DE LOS PUNTOS DEL BRAZO Global claviculaD= point pos:[0,0,0] name:(UI_Prefijo.text + "_"+"Clavicula_D") box:true size:5 claviculaD.wirecolor= green Global hombroD= point pos:[10,0,0] name:(UI_Prefijo.text + "_"+"Hombro_D") box:true size:5 hombroD.parent= claviculaD hombroD.wirecolor= green Global CodoD= point pos:[40,10,0] name:(UI_Prefijo.text + "_"+"Codo_D") box:true size:5 CodoD.parent = hombroD CodoD.wirecolor= green Global MunecaD=point pos:[80,0,0] name:(UI_Prefijo.text + "_"+ "Muñeca_D") box:true size:5 MunecaD.parent = CodoD MunecaD.wirecolor= green Global MunecaD_2= point pos:[90,0,0] name:(UI_Prefijo.text + "_" +"Muñeca_D_2") box:true size:5 MunecaD_2.parent = MunecaD MunecaD_2.wirecolor= green --CREACION DE LOS DEDOS 1 global Dedo1_D= #() Global Dedo_1_1_D= point pos:[92,0,0] name: (UI_Prefijo.text + "_" +"Dedo_1_1_D") box: true size:3 Dedo_1_1_D.parent = MunecaD_2 Dedo_1_1_D.wirecolor = red append Dedo1_D Dedo_1_1_D Global Dedo_1_2_D= point pos:[97,0,0] name: (UI_Prefijo.text + "_" +"Dedo_1_2_D") box: true size:3 Dedo_1_2_D.parent = Dedo_1_1_D Dedo_1_2_D.wirecolor = red append Dedo1_D Dedo_1_2_D Global Dedo_1_3_D= point pos:[102,0,0] name: (UI_Prefijo.text + "_" +"Dedo_1_3_D") box: true size:3 Dedo_1_3_D.parent = Dedo_1_2_D Dedo_1_3_D.wirecolor = red append Dedo1_D Dedo_1_3_D Global Dedo_1_4_D= point pos:[107,0,0] name: (UI_Prefijo.text + "_" +"Dedo_1_4_D") box: true size:3 Dedo_1_4_D.parent = Dedo_1_3_D Dedo_1_4_D.wirecolor = red append Dedo1_D Dedo_1_4_D --CREACION DE LOS DEDOS 2 global Dedo2_D= #() Global Dedo_2_1_D= point pos:[92,5,0] name: (UI_Prefijo.text + "_" +"Dedo_2_1_D") box: true size:3 Dedo_2_1_D.parent = MunecaD_2 Dedo_2_1_D.wirecolor = red append Dedo2_D Dedo_2_1_D Global Dedo_2_2_D= point pos:[97,5,0] name: (UI_Prefijo.text + "_" +"Dedo_2_2_D") box: true size:3 Dedo_2_2_D.parent = Dedo_2_1_D Dedo_2_2_D.wirecolor = red append Dedo2_D Dedo_2_2_D Global Dedo_2_3_D= point pos:[102,5,0] name: (UI_Prefijo.text + "_" +"Dedo_2_3_D") box: true size:3 Dedo_2_3_D.parent = Dedo_2_2_D Dedo_2_3_D.wirecolor = red append Dedo2_D Dedo_2_3_D Global Dedo_2_4_D= point pos:[107,5,0] name: (UI_Prefijo.text + "_" +"Dedo_2_4_D") box: true size:3 Dedo_2_4_D.parent = Dedo_2_3_D Dedo_2_4_D.wirecolor = red append Dedo2_D Dedo_2_4_D --CREACION DE LOS DEDOS 3 global Dedo3_D= #() Global Dedo_3_1_D= point pos:[92,-5,0] name: (UI_Prefijo.text + "_" +"Dedo_3_1_D") box: true size:3 Dedo_3_1_D.parent = MunecaD_2 Dedo_3_1_D.wirecolor = red append Dedo3_D Dedo_3_1_D Global Dedo_3_2_D= point pos:[97,-5,0] name: (UI_Prefijo.text + "_" +"Dedo_3_2_D") box: true size:3 Dedo_3_2_D.parent = Dedo_3_1_D Dedo_3_2_D.wirecolor = red append Dedo3_D Dedo_3_2_D Global Dedo_3_3_D= point pos:[102,-5,0] name: (UI_Prefijo.text + "_" +"Dedo_3_3_D") box: true size:3 Dedo_3_3_D.parent = Dedo_3_2_D Dedo_3_3_D.wirecolor = red append Dedo3_D Dedo_3_3_D Global Dedo_3_4_D= point pos:[107,-5,0] name: (UI_Prefijo.text + "_" +"Dedo_3_4_D") box: true size:3 Dedo_3_4_D.parent = Dedo_3_3_D Dedo_3_4_D.wirecolor = red append Dedo3_D Dedo_3_4_D --CREACION DE LOS DEDOS 4 global Dedo4_D= #() Global Dedo_4_1_D= point pos:[92,10,0] name: (UI_Prefijo.text + "_" +"Dedo_4_1_D") box: true size:3 Dedo_4_1_D.parent = MunecaD_2 Dedo_4_1_D.wirecolor = red append Dedo4_D Dedo_4_1_D Global Dedo_4_2_D= point pos:[97,10,0] name: (UI_Prefijo.text + "_" +"Dedo_4_2_D") box: true size:3 Dedo_4_2_D.parent = Dedo_4_1_D Dedo_4_2_D.wirecolor = red append Dedo4_D Dedo_4_2_D Global Dedo_4_3_D= point pos:[102,10,0] name: (UI_Prefijo.text + "_" +"Dedo_4_3_D") box: true size:3 Dedo_4_3_D.parent = Dedo_4_2_D Dedo_4_3_D.wirecolor = red append Dedo4_D Dedo_4_3_D Global Dedo_4_4_D= point pos:[107,10,0] name: (UI_Prefijo.text + "_" +"Dedo_4_4_D") box: true size:3 Dedo_4_4_D.parent = Dedo_4_3_D Dedo_4_4_D.wirecolor = red append Dedo4_D Dedo_4_4_D --CREACION DE LOS DEDOS 5 global Dedo5_D= #() Global Dedo_5_1_D= point pos:[92,15,0] name: (UI_Prefijo.text + "_" +"Dedo_5_1_D") box: true size:3 Dedo_5_1_D.parent = MunecaD_2 Dedo_5_1_D.wirecolor = red append Dedo5_D Dedo_5_1_D Global Dedo_5_2_D= point pos:[97,15,0] name: (UI_Prefijo.text + "_" +"Dedo_5_2_D") box: true size:3 Dedo_5_2_D.parent = Dedo_5_1_D Dedo_5_2_D.wirecolor = red append Dedo5_D Dedo_5_2_D Global Dedo_5_3_D= point pos:[102,15,0] name: (UI_Prefijo.text + "_" +"Dedo_5_3_D") box: true size:3 Dedo_5_3_D.parent = Dedo_5_2_D Dedo_5_3_D.wirecolor = red append Dedo5_D Dedo_5_3_D Global Dedo_5_4_D= point pos:[107,15,0] name: (UI_Prefijo.text + "_" +"Dedo_5_4_D") box: true size:3 Dedo_5_4_D.parent = Dedo_5_3_D Dedo_5_4_D.wirecolor = red append Dedo5_D Dedo_5_4_D --ArmPuntosD= #(hombroD,CodoD,MunecaD,MunecaD_2) ) 2: ( Global claviculaI= point rotation:ClaviculaD.rotation pos:ClaviculaD.pos name:(UI_Prefijo.text + "_"+"Clavicula_I") box:true size:5 claviculaI.wirecolor= green Global hombroI= point rotation:hombroD.rotation pos:hombroD.pos name:(UI_Prefijo.text + "_"+"Hombro_I") box:true size:5 hombroI.wirecolor= blue hombroI.parent = claviculaI global CodoI= point rotation:CodoD.rotation pos:CodoD.pos name:(UI_Prefijo.text + "_"+"Codo_I") box:true size:5 CodoI.parent = hombroI CodoI.wirecolor= blue global MunecaI=point rotation:MunecaD.rotation pos:MunecaD.pos name:(UI_Prefijo.text + "_"+ "Muñeca_I") box:true size:5 MunecaI.parent = CodoI MunecaI.wirecolor= blue global MunecaI_2= point rotation:MunecaD_2.rotation pos:MunecaD_2.pos name:(UI_Prefijo.text + "_" +"Muñeca_I_2") box:true size:5 MunecaI_2.parent = MunecaI MunecaI_2.wirecolor= blue --CREACION DE LOS DEDOS 1 global Dedo1_I= #() Global Dedo_1_1_I= point rotation:Dedo_1_1_D.rotation pos:Dedo_1_1_D.pos name: (UI_Prefijo.text + "_" +"Dedo_1_1_I") box: true size:3 Dedo_1_1_I.parent = MunecaI_2 Dedo_1_1_I.wirecolor = red append Dedo1_I Dedo_1_1_I Global Dedo_1_2_I= point rotation:Dedo_1_2_D.rotation pos:Dedo_1_2_D.pos name: (UI_Prefijo.text + "_" +"Dedo_1_2_I") box: true size:3 Dedo_1_2_I.parent = Dedo_1_1_I Dedo_1_2_I.wirecolor = red append Dedo1_I Dedo_1_2_I Global Dedo_1_3_I= point rotation:Dedo_1_3_D.rotation pos:Dedo_1_3_D.pos name: (UI_Prefijo.text + "_" +"Dedo_1_3_I") box: true size:3 Dedo_1_3_I.parent = Dedo_1_2_I Dedo_1_3_I.wirecolor = red append Dedo1_I Dedo_1_3_I Global Dedo_1_4_I= point rotation:Dedo_1_4_D.rotation pos:Dedo_1_4_D.pos name: (UI_Prefijo.text + "_" +"Dedo_1_4_I") box: true size:3 Dedo_1_4_I.parent = Dedo_1_3_I Dedo_1_4_I.wirecolor = red append Dedo1_I Dedo_1_4_I ( for i = 1 to Dedo1_I.count do print Dedo1_I[i] as string ) --CREACION DE LOS DEDOS 2 global Dedo2_I = #() Global Dedo_2_1_I= point rotation:Dedo_2_1_D.rotation pos:Dedo_2_1_D.pos name: (UI_Prefijo.text + "_" +"Dedo_2_1_I") box: true size:3 Dedo_2_1_I.parent = MunecaI_2 Dedo_2_1_I.wirecolor = red append Dedo2_I Dedo_2_1_I Global Dedo_2_2_I= point rotation:Dedo_2_2_D.rotation pos:Dedo_2_2_D.pos name: (UI_Prefijo.text + "_" +"Dedo_2_2_I") box: true size:3 Dedo_2_2_I.parent = Dedo_2_1_I Dedo_2_2_I.wirecolor = red append Dedo2_I Dedo_2_2_I Global Dedo_2_3_I= point rotation:Dedo_2_3_D.rotation pos:Dedo_2_3_D.pos name: (UI_Prefijo.text + "_" +"Dedo_2_3_I") box: true size:3 Dedo_2_3_I.parent = Dedo_2_2_I Dedo_2_3_I.wirecolor = red append Dedo2_I Dedo_2_3_I Global Dedo_2_4_I= point rotation:Dedo_2_4_D.rotation pos:Dedo_2_4_D.pos name: (UI_Prefijo.text + "_" +"Dedo_2_4_I") box: true size:3 Dedo_2_4_I.parent = Dedo_2_3_I Dedo_2_4_I.wirecolor = red append Dedo2_I Dedo_2_4_I --CREACION DE LOS DEDOS 3 global Dedo3_I = #() Global Dedo_3_1_I= point rotation:Dedo_3_1_D.rotation pos:Dedo_3_1_D.pos name: (UI_Prefijo.text + "_" +"Dedo_3_1_I") box: true size:3 Dedo_3_1_I.parent = MunecaI_2 Dedo_3_1_I.wirecolor = red append Dedo3_I Dedo_3_1_I Global Dedo_3_2_I= point rotation:Dedo_3_2_D.rotation pos:Dedo_3_2_D.pos name: (UI_Prefijo.text + "_" +"Dedo_3_2_I") box: true size:3 Dedo_3_2_I.parent = Dedo_3_1_I Dedo_3_2_I.wirecolor = red append Dedo3_I Dedo_3_2_I Global Dedo_3_3_I= point rotation:Dedo_3_3_D.rotation pos:Dedo_3_3_D.pos name: (UI_Prefijo.text + "_" +"Dedo_3_3_I") box: true size:3 Dedo_3_3_I.parent = Dedo_3_2_I Dedo_3_3_I.wirecolor = red append Dedo3_I Dedo_3_3_I Global Dedo_3_4_I= point rotation:Dedo_3_4_D.rotation pos:Dedo_3_4_D.pos name: (UI_Prefijo.text + "_" +"Dedo_3_4_I") box: true size:3 Dedo_3_4_I.parent = Dedo_3_3_I Dedo_3_4_I.wirecolor = red append Dedo3_I Dedo_3_4_I --CREACION DE LOS DEDOS 4 global Dedo4_I= #() Global Dedo_4_1_I= point rotation:Dedo_4_1_D.rotation pos:Dedo_4_1_D.pos name: (UI_Prefijo.text + "_" +"Dedo_4_1_I") box: true size:3 Dedo_4_1_I.parent = MunecaI_2 Dedo_4_1_I.wirecolor = red append Dedo4_I Dedo_4_1_I Global Dedo_4_2_I= point rotation:Dedo_4_2_D.rotation pos:Dedo_4_2_D.pos name: (UI_Prefijo.text + "_" +"Dedo_4_2_I") box: true size:3 Dedo_4_2_I.parent = Dedo_4_1_I Dedo_4_2_I.wirecolor = red append Dedo4_I Dedo_4_2_I Global Dedo_4_3_I= point rotation:Dedo_4_3_D.rotation pos:Dedo_4_3_D.pos name: (UI_Prefijo.text + "_" +"Dedo_4_3_I") box: true size:3 Dedo_4_3_I.parent = Dedo_4_2_I Dedo_4_3_I.wirecolor = red append Dedo4_I Dedo_4_3_I Global Dedo_4_4_I= point rotation:Dedo_4_4_D.rotation pos:Dedo_4_4_D.pos name: (UI_Prefijo.text + "_" +"Dedo_4_4_I") box: true size:3 Dedo_4_4_I.parent = Dedo_4_3_I Dedo_4_4_I.wirecolor = red append Dedo4_I Dedo_4_4_I --CREACION DE LOS DEDOS 5 global Dedo5_I= #() Global Dedo_5_1_I= point pos:Dedo_5_1_D.pos name: (UI_Prefijo.text + "_" +"Dedo_5_1_I") box: true size:3 Dedo_5_1_I.parent = MunecaI_2 Dedo_5_1_I.wirecolor = red append Dedo5_I Dedo_5_1_I Global Dedo_5_2_I= point pos:Dedo_5_2_D.pos name: (UI_Prefijo.text + "_" +"Dedo_5_2_I") box: true size:3 Dedo_5_2_I.parent = Dedo_5_1_I Dedo_5_2_I.wirecolor = red append Dedo5_I Dedo_5_2_I Global Dedo_5_3_I= point pos:Dedo_5_3_D.pos name: (UI_Prefijo.text + "_" +"Dedo_5_3_I") box: true size:3 Dedo_5_3_I.parent = Dedo_5_2_I Dedo_5_3_I.wirecolor = red append Dedo5_I Dedo_5_3_I Global Dedo_5_4_I= point pos:Dedo_5_4_D.pos name: (UI_Prefijo.text + "_" +"Dedo_5_4_I") box: true size:3 Dedo_5_4_I.parent = Dedo_5_3_I Dedo_5_4_I.wirecolor = red append Dedo5_I Dedo_5_4_I ClaviculaI.transform = ClaviculaI.transform * (ScaleMatrix [-1,1,1]) ) ) ) else messagebox "Inserte un Prefijo" ) on UI_CreateArm pressed do with undo on ( case UI_Arms.state of ( 1:(--CREA LA CLAVICULA D Bn_ClaviculaD= bonesys.createbone (ClaviculaD.pos) (HombroD.pos) (cross ClaviculaD.dir [1,0,0]) Bn_ClaviculaD.name=(UI_Prefijo.text + "_"+"Clavicula_D_") Bn_ClaviculaD.parent = btn_PARENT_Arms.object --CREA LA CADENA DE HUESOS FK global UpperArmD_FK= bonesys.createbone (hombroD.pos) (CodoD.pos) (cross hombroD.dir [1,0,0]) UpperArmD_FK.sidefins =false UpperArmD_FK.frontfin= true UpperArmD_FK.backfin=true UpperArmD_FK.name = (UI_Prefijo.text + "_"+"UpperArmD_FK") UpperArmD_FK.Taper=0 UpperArmD_FK.wirecolor=blue UpperArmD_FK.boxmode=on global LowerArmD_FK= bonesys.createbone (CodoD.POS) (MunecaD.pos) (cross codoD.dir [1,0,0]) LowerArmD_FK.parent= UpperArmD_FK LowerArmD_FK.name= (UI_Prefijo.text + "_"+"LowerArmD_FK") LowerArmD_FK.sidefins= false LowerArmD_FK.frontfin= true LowerArmD_FK.backfin= true LowerArmD_FK.taper=0 LowerArmD_FK.wirecolor= blue LowerArmD_FK.boxmode= on global HandD_FK= bonesys.createbone (MunecaD.pos) (MunecaD_2.pos) (cross MunecaD.dir [1,0,0]) HandD_FK.parent= LowerArmD_FK HandD_FK.name= (UI_Prefijo.text + "_"+"HandD_FK") HandD_FK.sidefins =false HandD_FK.frontfin= true HandD_FK.backfin=true HandD_FK.taper=0 HandD_FK.wirecolor= blue HandD_FK.boxmode = on HandD_FK.height = 10 global HOMBRO_POINT= point pos:hombroD.pos rotation:UpperArmD_FK.rotation name:(UI_Prefijo.text + "_"+"HOMBRO_POINT_D") HOMBRO_POINT.pos = hombroD.pos HOMBRO_POINT.parent = Bn_ClaviculaD global SNAP_PT_FK_D= point rotation:HandD_FK.rotation pos:HandD_FK.pos name:(UI_Prefijo.text + "_"+"SNAP_PT_FK_D") size: 5 SNAP_PT_FK_D.parent = HandD_FK UpperArmD_FK.parent = HOMBRO_POINT global SwivelFK_D= point pos: LowerArmD_FK.pos name:(UI_Prefijo.text + "_"+"SwivelFK_D") size: 5 move SwivelFK_D [0,30,0] SwivelFK_D.parent = LowerArmD_FK --freeze SwivelFK_D --CREACION DE LOS DEDOS ( (--CREACION DE LOS DEDOS 1 D Dedo_1_bones= #() for i = 1 to Dedo1_D.count-1 do ( crearDedos_1_D= bonesys.createbone (Dedo1_D[i].pos) (Dedo1_D[i+1].pos) (cross Dedo1_D[i].dir [1,0,0]) crearDedos_1_D.name = (UI_Prefijo.text + "_"+"Dedos_1_D"+ i as string) crearDedos_1_D.width = 1 crearDedos_1_D.Height = 1 append Dedo_1_bones crearDedos_1_D ) for i = 1 to Dedo_1_bones.count do ( if Dedo_1_bones[i] != Dedo_1_bones[1] then Dedo_1_bones[i].parent = Dedo_1_bones[i-1] ) ) (--CREACION DE LOS DEDOS 2 D Dedo_2_bones= #() for i = 1 to Dedo2_D.count-1 do ( crearDedos_2_D= bonesys.createbone (Dedo2_D[i].pos) (Dedo2_D[i+1].pos) (cross Dedo2_D[i].dir [1,0,0]) crearDedos_2_D.name = (UI_Prefijo.text + "_"+"Dedos_2_D"+ i as string) crearDedos_2_D.width = 1 crearDedos_2_D.Height = 1 append Dedo_2_bones crearDedos_2_D ) for i = 1 to Dedo_1_bones.count do ( if Dedo_2_bones[i] != Dedo_2_bones[1] then Dedo_2_bones[i].parent = Dedo_2_bones[i-1] ) ) (--CREACION DE LOS DEDOS 3 D Dedo_3_bones= #() for i = 1 to Dedo3_D.count-1 do ( crearDedos_3_D= bonesys.createbone (Dedo3_D[i].pos) (Dedo3_D[i+1].pos) (cross Dedo3_D[i].dir [1,0,0]) crearDedos_3_D.name = (UI_Prefijo.text + "_"+"Dedos_3_D"+ i as string) crearDedos_3_D.width = 1 crearDedos_3_D.Height = 1 append Dedo_3_bones crearDedos_3_D ) for i = 1 to Dedo_3_bones.count do ( if Dedo_3_bones[i] != Dedo_3_bones[1] then Dedo_3_bones[i].parent = Dedo_3_bones[i-1] ) ) (--CREACION DE LOS DEDOS 4 D Dedo_4_bones= #() for i = 1 to Dedo4_D.count-1 do ( crearDedos_4_D= bonesys.createbone (Dedo4_D[i].pos) (Dedo4_D[i+1].pos) (cross Dedo4_D[i].dir [1,0,0]) crearDedos_4_D.name = (UI_Prefijo.text + "_"+"Dedos_4_D"+ i as string) crearDedos_4_D.width = 1 crearDedos_4_D.Height = 1 append Dedo_4_bones crearDedos_4_D ) for i = 1 to Dedo_4_bones.count do ( if Dedo_4_bones[i] != Dedo_4_bones[1] then Dedo_4_bones[i].parent = Dedo_4_bones[i-1] ) ) (--CREACION DE LOS DEDOS 5 D Dedo_5_bones= #() for i = 1 to Dedo5_D.count-1 do ( crearDedos_5_D= bonesys.createbone (Dedo5_D[i].pos) (Dedo5_D[i+1].pos) (cross Dedo5_D[i].dir [1,0,0]) crearDedos_5_D.name = (UI_Prefijo.text + "_"+"Dedos_5_D"+ i as string) crearDedos_5_D.width = 1 crearDedos_5_D.Height = 1 append Dedo_5_bones crearDedos_5_D ) for i = 1 to Dedo_5_bones.count do ( if Dedo_5_bones[i] != Dedo_5_bones[1] then Dedo_5_bones[i].parent = Dedo_5_bones[i-1] ) ) ) --CREA LA CADENA DE HUESOS IK global UpperArmD_IK=copy UpperArmD_FK name:(UI_Prefijo.text + "_"+"UpperArmD_IK") UpperArmD_IK.sidefins =false UpperArmD_IK.frontfin= false UpperArmD_IK.backfin=false UpperArmD_IK.Taper=90 UpperArmD_IK.wirecolor= red UpperArmD_IK.boneEnable=true global LowerArmD_IK=copy LowerArmD_FK name:(UI_Prefijo.text + "_"+"LowerArmD_IK") LowerArmD_IK.parent= UpperArmD_IK LowerArmD_IK.sidefins= false LowerArmD_IK.frontfin= false LowerArmD_IK.backfin= false LowerArmD_IK.taper=90 LowerArmD_IK.wirecolor=red LowerArmD_IK.boneEnable=true global HandD_IK=copy HandD_FK name:(UI_Prefijo.text + "_"+"HandD_IK") HandD_IK.parent= LowerArmD_IK HandD_IK.sidefins =false HandD_IK.frontfin= false HandD_IK.backfin=false HandD_IK.taper=90 HandD_IK.wirecolor= red HandD_IK.boneEnable=true UpperArmD_IK.parent = HOMBRO_POINT global SwivelIK_D= circle pos: LowerArmD_FK.pos name:(UI_Prefijo.text + "_"+"SwivelIK_D") radius: 5 move SwivelIK_D [0,30,0] global snapIK_D = point rotation:HandD_IK.rotation pos:HandD_IK.pos name:(UI_Prefijo.text + "_"+"SNAP_PT_IK_D") size: 8 snapIK_D.parent= HandD_IK snapIK_D.wirecolor=blue --CREA EL IK SOLVER IK_ARM_D = IKSys.ikChain UpperArmD_IK HandD_IK "IKHISolver" IK_ARM_D.name = (UI_Prefijo.text + "_"+"IK_ARM_D") IK_ARM_D.transform.controller.VHTarget = SwivelIK_D --freeze IK_ARM_D --CREA LA CADENA DE HUESOS MAIN UpperArmD_MAIN=copy UpperArmD_FK name:(UI_Prefijo.text + "_"+"UpperArmD_MAIN") UpperArmD_MAIN.sidefins =false UpperArmD_MAIN.frontfin= false UpperArmD_MAIN.backfin=false UpperArmD_MAIN.Taper=50 UpperArmD_MAIN.wirecolor= green UpperArmD_MAIN.boneEnable=true LowerArmD_MAIN=copy LowerArmD_FK name:(UI_Prefijo.text + "_"+"LowerArmD_MAIN") LowerArmD_MAIN.parent= UpperArmD_MAIN LowerArmD_MAIN.sidefins= false LowerArmD_MAIN.frontfin= false LowerArmD_MAIN.backfin= false LowerArmD_MAIN.taper=50 LowerArmD_MAIN.wirecolor= green LowerArmD_MAIN.boneEnable=true HandD_MAIN=copy HandD_FK name:(UI_Prefijo.text + "_"+"HandD_MAIN") HandD_MAIN.parent= LowerArmD_MAIN HandD_MAIN.sidefins =false HandD_MAIN.frontfin= false HandD_MAIN.backfin=false HandD_MAIN.taper=50 HandD_MAIN.wirecolor=green HandD_MAIN.boneEnable=true UpperArmD_MAIN.parent = HOMBRO_POINT --EMPARENTA LOS DEDOS A LA MANO MAIN Dedo_1_bones[1].parent = HandD_MAIN Dedo_2_bones[1].parent = HandD_MAIN Dedo_3_bones[1].parent = HandD_MAIN Dedo_4_bones[1].parent = HandD_MAIN Dedo_5_bones[1].parent = HandD_MAIN --BORRAMOS LOS PUNTOS DE REFERENCIA PARA LOS DEDOS delete Dedo1_D delete Dedo2_D delete Dedo3_D delete Dedo4_D delete Dedo5_D --CREA CONTROL DEL IK global CTRL_IK_D= circle radius:10 pos:HandD_FK.pos name:(UI_Prefijo.text + "_"+"Ctrl_IK_D") in coordsys HandD_FK CTRL_IK_D.rotation = eulerangles 0 0 0 IK_ARM_D.parent = CTRL_IK_D SwivelIK_D.parent = CTRL_IK_D --AÑADE EL ORIENTATION CONSTRAINT A LA MANO IK orientacion_Hand_ik = Orientation_Constraint() handD_IK.rotation.controller = orientacion_Hand_ik controlHAND_D= HandD_IK.rotation.controller controlHAND_D.appendTarget CTRL_IK_D 1 --BORRA LOS PUNTOS INICIALES Delete ClaviculaD Delete HombroD Delete MunecaD Delete CodoD Delete MunecaD_2 --AÑADE LOS CUSTOM ATTRIBUTES ModificadorD= emptymodifier() addmodifier CTRL_IK_D ModificadorD addmodifier UpperArmD_FK ModificadorD addmodifier LowerArmD_FK ModificadorD addmodifier HandD_FK ModificadorD addmodifier SwivelIK_D ModificadorD --CREA EL EXPOSE TM EXPOSE_Arm_D = exposeTM pos:[0,50,0] name:(UI_Prefijo.text + "_"+"EXPOSE_Arm_D") isSelected:on useParent:off EXPOSE_Arm_D.exposeNode = HOMBRO_POINT EXPOSE_Arm_D.localReferenceNode = IK_ARM_D ArmAttributes_Plantilla_D =attributes ArmAttributes_D ( --los parametros van en esta parte, para poder acceder a ellos luego parameters Pr_ArmControls rollout:ArmControls_D ( Pr_blending type:#float ui:UI_blending default:0 Pr_Autostretch type:#float ui:UI_Autostretch default:0 Pr_StretchFactor type:#float ui:UI_StretchFactor default:0 Pr_FK_Stretch type:#float ui:UI_FK_Stretch default:0 UpperArmD_FK type:#maxObject LowerArmD_FK type:#maxObject HandD_FK type:#maxObject SNAP_PT_FK_D type:#maxObject SwivelFK_D type:#maxObject UpperArmD_IK type:#maxObject LowerArmD_IK type:#maxObject HandD_IK type:#maxObject SwivelIK_D type:#maxObject CTRL_IK_D type:#maxObject snapIK_D type:#maxObject EXPOSE_Arm_D type:#maxObject ) --El rollout es la interfaz grafica que el animador va a usar rollout ArmControls_D "ARM_CONTROLS" width:160 height:320 ( GroupBox Grp_Blending "LegControls" pos:[8,8] width:144 height:160 button UI_Btn_ik "IK" pos:[19,51] width:48 height:16 button UI_Btn_FK "FK" pos:[18,30] width:48 height:16 button btn_ResetValues "ResetValues" pos:[74,30] width:73 height:38 spinner UI_blending "FK/IK Blending" pos:[41,73] width:104 height:16 range:[0,1,1] spinner UI_Autostretch "AutoStretch" pos:[57,96] width:88 height:16 range:[0,1,0] spinner UI_StretchFactor "StretchFactor" pos:[49,120] width:96 height:16 range:[0,1,0] spinner UI_FK_Stretch "FK_Stretch" pos:[49,140] width:96 height:16 range:[0,100,0] on btn_ResetValues pressed do ( UI_blending.value =0 UI_Autostretch.value =0 UI_StretchFactor.value=0 ) on UI_Btn_ik pressed do with undo on ( --Alinea Posicion de MainControlerIK a Fk CTRL_IK_D.node.position=SNAP_PT_FK_D.node.position --Alinea Rotacion de MainControler Ik a FK in Coordsys SNAP_PT_FK_D.node CTRL_IK_D.node.rotation = eulerangles 0 0 0 --Alinea Posicion del swivel Angle SwivelIK_D.node.position = SwivelFK_D.node.position --convierte los valores de FK_IKBlend a 100 CTRL_IK_D.node.modifiers[#Attribute_Holder].ArmAttributes_D.Pr_blending =1 CTRL_IK_D.node.modifiers[#Attribute_Holder].ArmAttributes_D.Pr_FK_Stretch = 0 ) on UI_Btn_FK pressed do with undo on ( --Convierte los valores de FK_IKBlend a 0 -- CTRL_IK_D.node.modifiers[#Attribute_Holder].ArmAttributes_D.Pr_blending =0 --CTRL_IK_D.node.modifiers[#Attribute_Holder].ArmAttributes_D.Pr_Autostretch =0 --alinea rotacion de UpperlegFK A IK in Coordsys UpperArmD_IK.node UpperArmD_FK.node.rotation =eulerangles 0 0 0 --alinea rotacion de lowerLegFK a IK in Coordsys LowerArmD_IK.node LowerArmD_FK.node.rotation = eulerangles 0 0 0 --alinea Ball to ballIK in Coordsys snapIK_D.node HandD_FK.node.rotation = eulerangles 0 0 0 -- if EXPOSE_Arm_D.node.distance > (UpperArmD_FK.node.length + LowerArmD_FK.node.length) then ( -- CTRL_IK_D.node.modifiers[#Attribute_Holder].ArmAttributes_D.Pr_FK_Stretch = (EXPOSE_Arm_D.node.distance-(UpperArmD_FK.node.length + LowerArmD_FK.node.length))/2) -- else 0 ) ) ) --esta es la funcion para añadir el rollout al modificador del objeto control custAttributes.add CTRL_IK_D.attribute_Holder ArmAttributes_Plantilla_D custAttributes.add UpperArmD_FK.attribute_Holder ArmAttributes_Plantilla_D custAttributes.add LowerArmD_FK.attribute_Holder ArmAttributes_Plantilla_D custAttributes.add HandD_FK.attribute_Holder ArmAttributes_Plantilla_D custAttributes.add SwivelIK_D.attribute_Holder ArmAttributes_Plantilla_D -- ModificadorD.UpperArmD_FK =(nodeTransformMonitor node:UpperArmD_FK forwardTransformChangeMsgs:false) ModificadorD.LowerArmD_FK =(nodeTransformMonitor node:LowerArmD_FK forwardTransformChangeMsgs:false) ModificadorD.HandD_FK =(nodeTransformMonitor node:HandD_FK forwardTransformChangeMsgs:false) ModificadorD.SNAP_PT_FK_D =(nodeTransformMonitor node:SNAP_PT_FK_D forwardTransformChangeMsgs:false) ModificadorD.SwivelFK_D =(nodeTransformMonitor node:SwivelFK_D forwardTransformChangeMsgs:false) ModificadorD.LowerArmD_IK =(nodeTransformMonitor node:LowerArmD_IK forwardTransformChangeMsgs:false) ModificadorD.HandD_IK =(nodeTransformMonitor node:HandD_IK forwardTransformChangeMsgs:false) ModificadorD.SwivelIK_D =(nodeTransformMonitor node:SwivelIK_D forwardTransformChangeMsgs:false) ModificadorD.CTRL_IK_D =(nodeTransformMonitor node:CTRL_IK_D forwardTransformChangeMsgs:false) ModificadorD.UpperArmD_IK = (nodeTransformMonitor node:UpperArmD_IK forwardTransformChangeMsgs:false) ModificadorD.snapIK_D= (nodeTransformMonitor node:snapIK_D forwardTransformChangeMsgs:false) ModificadorD.EXPOSE_Arm_D = (nodeTransformMonitor node:EXPOSE_Arm_D forwardTransformChangeMsgs:false) --AÑADE EL ORIENTATION COSNTRAINT AL UPPERARM MAIN orientacionUpperArm= orientation_Constraint() UpperArmD_MAIN.rotation.controller = orientacionUpperArm controlUpperArm_D= UpperArmD_MAIN.rotation.controller controlUpperArm_D.appendTarget UpperArmD_IK 1 controlUpperArm_D.appendTarget UpperArmD_FK 1 paramWire.connect CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_blending] UpperArmD_MAIN.rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_blending] UpperArmD_MAIN.rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL LOWERRARM MAIN orientacionLowerArm= orientation_Constraint() LowerArmD_MAIN.rotation.controller = orientacionLowerArm controlLowerArm_D= LowerArmD_MAIN.rotation.controller controlLowerArm_D.appendTarget LowerArmD_IK 1 controlLowerArm_D.appendTarget LowerArmD_FK 1 paramWire.connect CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_blending] LowerArmD_MAIN.rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_blending] LowerArmD_MAIN.rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL HandD_MAIN orientacionHandD= orientation_Constraint() HandD_MAIN.rotation.controller = orientacionHandD controlHandD_MAIN= HandD_MAIN.rotation.controller controlHandD_MAIN.appendTarget HandD_IK 1 controlHandD_MAIN.appendTarget HandD_FK 1 paramWire.connect CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_blending] HandD_MAIN.rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_blending] HandD_MAIN.rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE LOS FLOAT SCRIPT PARA EL AUTOSTRETCH Float_list_D= float_list() Stretch_UpperArm_D = float_script() Stretch_UpperArm_D.addTarget "Pr_blending" CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_blending] Stretch_UpperArm_D.addTarget "Pr_Autostretch" CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_Autostretch] Stretch_UpperArm_D.addConstant "b1_d" UpperArmD_FK.length Stretch_UpperArm_D.addConstant "b2_d" LowerArmD_FK.length Stretch_UpperArm_D.addTarget "dist_d" EXPOSE_Arm_D.distance.controller Stretch_UpperArm_D.script= "if dist_d > (b1_d + b2_d) then ((( dist_d - (b1_d+b2_d))/2)) * Pr_Autostretch * Pr_Blending else 0 " LowerArmD_IK.transform.controller.FK_Sub_Control.controller.Position.controller.X_Position.controller = Float_list() LowerArmD_IK.transform.controller.FK_Sub_Control.controller.Position.controller.X_Position.controller.Available.controller = Stretch_UpperArm_D HandD_IK.transform.controller.FK_Sub_Control.controller.Position.controller.X_Position.controller = Float_list() HandD_IK.transform.controller.FK_Sub_Control.controller.Position.controller.X_Position.controller.Available.controller = Stretch_UpperArm_D LowerArmD_MAIN.pos.controller.X_Position.controller = Float_list() LowerArmD_MAIN.pos.controller.X_Position.controller.Available.controller = Stretch_UpperArm_D HandD_MAIN.pos.controller.X_Position.controller = Float_list() HandD_MAIN.pos.controller.X_Position.controller.Available.controller = Stretch_UpperArm_D --AÑADE LOS FLOAT SCRIPT PARA EL FK_STRETCH Float_List_FK_D= float_list() FK_Stretch_UpperArm_D = float_script() FK_Stretch_UpperArm_D.addConstant "b1_d" UpperArmD_FK.length FK_Stretch_UpperArm_D.addConstant "b2_d" LowerArmD_FK.length FK_Stretch_UpperArm_D.addTarget "Pr_blending" CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_blending] FK_Stretch_UpperArm_D.addTarget "Pr_FK_Stretch" CTRL_IK_D.modifiers[#Attribute_Holder].ArmAttributes_D[#Pr_FK_Stretch] FK_Stretch_UpperArm_D.addConstant "dist_d" EXPOSE_Arm_D.distance FK_Stretch_UpperArm_D.script= "(((b1_d + b2_d) - (b1_d + b2_d))/2)+ Pr_FK_Stretch " LowerArmD_FK.pos.controller.X_Position.controller = Float_list() LowerArmD_FK.pos.controller.X_Position.controller.Available.controller = FK_Stretch_UpperArm_D HandD_FK.pos.controller.X_Position.controller = Float_list() HandD_FK.pos.controller.X_Position.controller.Available.controller = FK_Stretch_UpperArm_D LowerArmD_MAIN.pos.controller.X_Position.controller.Available.controller = FK_Stretch_UpperArm_D HandD_MAIN.pos.controller.X_Position.controller.Available.controller = FK_Stretch_UpperArm_D ) 2: ( --CREA LA CLAVICULA D Bn_ClaviculaI= bonesys.createbone (ClaviculaI.pos) (HombroI.pos) (cross ClaviculaI.dir [1,0,0]) Bn_ClaviculaI.name=(UI_Prefijo.text + "_"+"Clavicula_I_") Bn_ClaviculaI.parent = btn_PARENT_Arms.object --CREA LA CADENA DE HUESOS FK global UpperArmI_FK= bonesys.createbone (hombroI.pos) (CodoI.pos) (cross hombroI.dir [1,0,0]) UpperArmI_FK.sidefins =false UpperArmI_FK.frontfin= true UpperArmI_FK.backfin=true UpperArmI_FK.name = (UI_Prefijo.text + "_"+"UpperArmI_FK") UpperArmI_FK.Taper=0 UpperArmI_FK.wirecolor=blue UpperArmI_FK.boxmode=on UpperArmI_FK.boneEnable=true global LowerArmI_FK= bonesys.createbone (CodoI.POS) (MunecaI.pos) (cross CodoI.dir [1,0,0]) LowerArmI_FK.parent= UpperArmI_FK LowerArmI_FK.name= (UI_Prefijo.text + "_"+"LowerArmI_FK") LowerArmI_FK.sidefins= false LowerArmI_FK.frontfin= true LowerArmI_FK.backfin= true LowerArmI_FK.taper=0 LowerArmI_FK.wirecolor= blue LowerArmI_FK.boxmode= on LowerArmI_FK.boneEnable=true global HandI_FK= bonesys.createbone (MunecaI.pos) (MunecaI_2.pos) (cross MunecaI.dir [1,0,0]) HandI_FK.parent= LowerArmI_FK HandI_FK.name= (UI_Prefijo.text + "_"+"HandI_FK") HandI_FK.sidefins =false HandI_FK.frontfin= true HandI_FK.backfin=true HandI_FK.taper=0 HandI_FK.wirecolor= blue HandI_FK.boxmode = on HandI_FK.height = 10 HandI_FK.boneEnable=true global HOMBRO_POINT_I= point pos:hombroI.pos rotation:UpperArmI_FK.rotation name:(UI_Prefijo.text + "_"+"HOMBRO_POINT_I") HOMBRO_POINT_I.pos = hombroI.pos HOMBRO_POINT_I.parent = Bn_ClaviculaI global SNAP_PT_FK_I= point rotation:HandI_FK.rotation pos:HandI_FK.pos name:(UI_Prefijo.text + "_"+"SNAP_PT_FK_I") size: 5 SNAP_PT_FK_I.parent = HandI_FK UpperArmI_FK.parent = HOMBRO_POINT_I global SwivelFK_I= point pos: LowerArmI_FK.pos name:(UI_Prefijo.text + "_"+"SwivelFK_I") size: 5 move SwivelFK_I [0,30,0] SwivelFK_I.parent = LowerArmI_FK --freeze SwivelFK_I --CREACION DE LOS DEDOS ( (--CREACION DE LOS DEDOS 1 I Dedo_1_bones_I= #() for i = 1 to Dedo1_I.count-1 do ( crearDedos_1_I= bonesys.createbone (Dedo1_I[i].pos) (Dedo1_I[i+1].pos) (cross Dedo1_I[i].dir [1,0,0]) crearDedos_1_I.name = (UI_Prefijo.text + "_"+"Dedos_1_I"+ i as string) crearDedos_1_I.width = 1 crearDedos_1_I.Height = 1 append Dedo_1_bones_I crearDedos_1_I ) for i = 1 to Dedo_1_bones_I.count do ( if Dedo_1_bones_I[i] != Dedo_1_bones_I[1] then Dedo_1_bones_I[i].parent = Dedo_1_bones_I[i-1] ) ) (--CREACION DE LOS DEDOS 2 D Dedo_2_bones_I= #() for i = 1 to Dedo2_I.count-1 do ( crearDedos_2_I= bonesys.createbone (Dedo2_I[i].pos) (Dedo2_I[i+1].pos) (cross Dedo2_I[i].dir [1,0,0]) crearDedos_2_I.name = (UI_Prefijo.text + "_"+"Dedos_2_I"+ i as string) crearDedos_2_I.width = 1 crearDedos_2_I.Height = 1 append Dedo_2_bones_I crearDedos_2_I ) for i = 1 to Dedo_2_bones_I.count do ( if Dedo_2_bones_I[i] != Dedo_2_bones_I[1] then Dedo_2_bones_I[i].parent = Dedo_2_bones_I[i-1] ) ) (--CREACION DE LOS DEDOS 3 D Dedo_3_bones_I= #() for i = 1 to Dedo3_I.count-1 do ( crearDedos_3_I= bonesys.createbone (Dedo3_I[i].pos) (Dedo3_I[i+1].pos) (cross Dedo3_I[i].dir [1,0,0]) crearDedos_3_I.name = (UI_Prefijo.text + "_"+"Dedos_3_I"+ i as string) crearDedos_3_I.width = 1 crearDedos_3_I.Height = 1 append Dedo_3_bones_I crearDedos_3_I ) for i = 1 to Dedo_3_bones_I.count do ( if Dedo_3_bones_I[i] != Dedo_3_bones_I[1] then Dedo_3_bones_I[i].parent = Dedo_3_bones_I[i-1] ) ) (--CREACION DE LOS DEDOS 4 D Dedo_4_bones_I= #() for i = 1 to Dedo4_I.count-1 do ( crearDedos_4_I= bonesys.createbone (Dedo4_I[i].pos) (Dedo4_I[i+1].pos) (cross Dedo4_I[i].dir [1,0,0]) crearDedos_4_I.name = (UI_Prefijo.text + "_"+"Dedos_4_I"+ i as string) crearDedos_4_I.width = 1 crearDedos_4_I.Height = 1 append Dedo_4_bones_I crearDedos_4_I ) for i = 1 to Dedo_4_bones_I.count do ( if Dedo_4_bones_I[i] != Dedo_4_bones_I[1] then Dedo_4_bones_I[i].parent = Dedo_4_bones_I[i-1] ) ) (--CREACION DE LOS DEDOS 5 D Dedo_5_bones_I= #() for i = 1 to Dedo5_I.count-1 do ( crearDedos_5_I= bonesys.createbone (Dedo5_I[i].pos) (Dedo5_I[i+1].pos) (cross Dedo5_I[i].dir [1,0,0]) crearDedos_5_I.name = (UI_Prefijo.text + "_"+"Dedos_5_I"+ i as string) crearDedos_5_I.width = 1 crearDedos_5_I.Height = 1 append Dedo_5_bones_I crearDedos_5_I ) for i = 1 to Dedo_5_bones_I.count do ( if Dedo_5_bones_I[i] != Dedo_5_bones_I[1] then Dedo_5_bones_I[i].parent = Dedo_5_bones_I[i-1] ) ) ) --CREA LA CADENA DE HUESOS IK global UpperArmI_IK=copy UpperArmI_FK name:(UI_Prefijo.text + "_"+"UpperArmI_IK") UpperArmI_IK.sidefins =false UpperArmI_IK.frontfin= false UpperArmI_IK.backfin=false UpperArmI_IK.Taper=90 UpperArmI_IK.wirecolor= red UpperArmI_IK.boneEnable=true global LowerArmI_IK=copy LowerArmI_FK name:(UI_Prefijo.text + "_"+"LowerArmI_IK") LowerArmI_IK.parent= UpperArmI_IK LowerArmI_IK.sidefins= false LowerArmI_IK.frontfin= false LowerArmI_IK.backfin= false LowerArmI_IK.taper=90 LowerArmI_IK.wirecolor=red LowerArmI_IK.boneEnable=true global HandI_IK=copy HandI_FK name:(UI_Prefijo.text + "_"+"HandI_IK") HandI_IK.parent= LowerArmI_IK HandI_IK.sidefins =false HandI_IK.frontfin= false HandI_IK.backfin=false HandI_IK.taper=90 HandI_IK.wirecolor= red HandI_IK.boneEnable=true UpperArmI_IK.parent = HOMBRO_POINT_I global SwivelIK_I= circle pos: LowerArmI_FK.pos name:(UI_Prefijo.text + "_"+"SwivelIK_I") radius: 5 move SwivelIK_I [0,30,0] global snapIK_I = point rotation:HandI_IK.rotation pos:HandI_IK.pos name:(UI_Prefijo.text + "_"+"SNAP_PT_IK_I") size: 8 snapIK_I.parent= HandI_IK snapIK_I.wirecolor=blue --CREA EL IK SOLVER IK_ARM_I = IKSys.ikChain UpperArmI_IK HandI_IK "IKHISolver" IK_ARM_I.name = (UI_Prefijo.text + "_"+"IK_ARM_I") IK_ARM_I.transform.controller.VHTarget = SwivelIK_I --freeze IK_ARM_I --CREA LA CADENA DE HUESOS MAIN UpperArmI_MAIN=copy UpperArmI_FK name:(UI_Prefijo.text + "_"+"UpperArmI_MAIN") UpperArmI_MAIN.sidefins =false UpperArmI_MAIN.frontfin= false UpperArmI_MAIN.backfin=false UpperArmI_MAIN.Taper=50 UpperArmI_MAIN.wirecolor= green UpperArmI_MAIN.boneEnable=true LowerArmI_MAIN=copy LowerArmI_FK name:(UI_Prefijo.text + "_"+"LowerArmI_MAIN") LowerArmI_MAIN.parent= UpperArmI_MAIN LowerArmI_MAIN.sidefins= false LowerArmI_MAIN.frontfin= false LowerArmI_MAIN.backfin= false LowerArmI_MAIN.taper=50 LowerArmI_MAIN.wirecolor= green LowerArmI_MAIN.boneEnable=true HandI_MAIN=copy HandI_FK name:(UI_Prefijo.text + "_"+"HandI_MAIN") HandI_MAIN.parent= LowerArmI_MAIN HandI_MAIN.sidefins =false HandI_MAIN.frontfin= false HandI_MAIN.backfin=false HandI_MAIN.taper=50 HandI_MAIN.wirecolor=green HandI_MAIN.boneEnable=true UpperArmI_MAIN.parent = HOMBRO_POINT_I --EMPARENTA LOS DEDOS I A LA MANO MAIN IZQUIERDA Dedo_1_bones_I[1].parent = HandI_MAIN Dedo_2_bones_I[1].parent = HandI_MAIN Dedo_3_bones_I[1].parent = HandI_MAIN Dedo_4_bones_I[1].parent = HandI_MAIN Dedo_5_bones_I[1].parent = HandI_MAIN --BORRAMOS LOS PUNTOS DE REFERENCIA PARA LOS DEDOS delete Dedo1_I delete Dedo2_I delete Dedo3_I delete Dedo4_I delete Dedo5_I --CREA CONTROL DEL IK global CTRL_IK_I= circle radius:10 pos:HandI_FK.pos name:(UI_Prefijo.text + "_"+"Ctrl_IK_I") in coordsys HandI_FK CTRL_IK_I.rotation = eulerangles 0 0 0 IK_ARM_I.parent = CTRL_IK_I SwivelIK_I.parent = CTRL_IK_I --AÑADE EL ORIENTATION CONSTRAINT A LA MANO IK orientacion_Hand_ik = Orientation_Constraint() HandI_IK.rotation.controller = orientacion_Hand_ik controlHAND_I= HandI_IK.rotation.controller controlHAND_I.appendTarget CTRL_IK_I 1 --BORRA LOS PUNTOS INICIALES Delete ClaviculaI Delete HombroI Delete MunecaI Delete CodoI Delete MunecaI_2 --AÑADE LOS CUSTOM ATTRIBUTES ModificadorI= emptymodifier() addmodifier CTRL_IK_I ModificadorI addmodifier UpperArmI_FK ModificadorI addmodifier LowerArmI_FK ModificadorI addmodifier HandI_FK ModificadorI addmodifier SwivelIK_I ModificadorI ArmAttributes_Plantilla_I =attributes ArmAttributes_I ( --los parametros van en esta parte, para poder acceder a ellos luego parameters Pr_ArmControls rollout:ArmControls_I ( Pr_blending type:#float ui:UI_blending default:0 Pr_Autostretch type:#float ui:UI_Autostretch default:0 Pr_StretchFactor type:#float ui:UI_StretchFactor default:0 Pr_FK_Stretch type:#float ui:UI_FK_Stretch default:0 UpperArmI_FK type:#maxObject LowerArmI_FK type:#maxObject HandI_FK type:#maxObject SNAP_PT_FK_I type:#maxObject SwivelFK_I type:#maxObject UpperArmI_IK type:#maxObject LowerArmI_IK type:#maxObject HandI_IK type:#maxObject SwivelIK_I type:#maxObject CTRL_IK_I type:#maxObject snapIK_I type:#maxObject ) --El rollout es la interfaz grafica que el animador va a usar rollout ArmControls_I "ARM_CONTROLS" width:160 height:320 ( GroupBox Grp_Blending "LegControls" pos:[8,8] width:144 height:160 button UI_Btn_ik "IK" pos:[19,51] width:48 height:16 button UI_Btn_FK "FK" pos:[18,30] width:48 height:16 button btn_ResetValues "ResetValues" pos:[74,30] width:73 height:38 spinner UI_blending "FK/IK Blending" pos:[41,73] width:104 height:16 range:[0,1,1] spinner UI_Autostretch "AutoStretch" pos:[57,96] width:88 height:16 range:[0,1,0] spinner UI_StretchFactor "StretchFactor" pos:[49,120] width:96 height:16 range:[0,1,0] spinner UI_FK_Stretch "FK_Stretch" pos:[49,140] width:96 height:16 range:[0,100,0] on btn_ResetValues pressed do ( UI_blending.value =0 UI_Autostretch.value =0 UI_StretchFactor.value=0 ) on UI_Btn_ik pressed do with undo on ( --Alinea Posicion de MainControlerIK a Fk CTRL_IK_I.node.position=SNAP_PT_FK_I.node.position --Alinea Rotacion de MainControler Ik a FK in Coordsys SNAP_PT_FK_I.node CTRL_IK_I.node.rotation = eulerangles 0 0 0 --Alinea Posicion del swivel Angle SwivelIK_I.node.position = SwivelFK_I.node.position --convierte los valores de FK_IKBlend a 100 CTRL_IK_I.node.modifiers[#Attribute_Holder].ArmAttributes_I.Pr_blending =1 --CTRL_IK_I.node.modifiers[#Attribute_Holder].ArmAttributes_D.Pr_FK_Stretch = 0 ) on UI_Btn_FK pressed do with undo on ( --Convierte los valores de FK_IKBlend a 0 -- CTRL_IK_I.node.modifiers[#Attribute_Holder].ArmAttributes_I.Pr_blending =0 --alinea rotacion de UpperlegFK A IK in Coordsys UpperArmI_IK.node UpperArmI_FK.node.rotation =eulerangles 0 0 0 --alinea rotacion de lowerLegFK a IK in Coordsys LowerArmI_IK.node LowerArmI_FK.node.rotation = eulerangles 0 0 0 --alinea Ball to ballIK in Coordsys snapIK_I.node HandI_FK.node.rotation = eulerangles 0 0 0 --if EXPOSE_Arm_D.node.distance > (UpperArmD_FK.node.length + LowerArmD_FK.node.length) then ( -- CTRL_IK_D.node.modifiers[#Attribute_Holder].ArmAttributes_D.Pr_FK_Stretch = (EXPOSE_Arm_D.node.distance-(UpperArmD_FK.node.length + LowerArmD_FK.node.length))/2) -- else 0 ) ) ) --esta es la funcion para añadir el rollout al modificador del objeto control custAttributes.add CTRL_IK_I.attribute_Holder ArmAttributes_Plantilla_I custAttributes.add UpperArmI_FK.attribute_Holder ArmAttributes_Plantilla_I custAttributes.add LowerArmI_FK.attribute_Holder ArmAttributes_Plantilla_I custAttributes.add HandI_FK.attribute_Holder ArmAttributes_Plantilla_I custAttributes.add SwivelIK_I.attribute_Holder ArmAttributes_Plantilla_I ModificadorI.UpperArmI_FK =(nodeTransformMonitor node:UpperArmI_FK forwardTransformChangeMsgs:false) ModificadorI.LowerArmI_FK =(nodeTransformMonitor node:LowerArmI_FK forwardTransformChangeMsgs:false) ModificadorI.HandI_FK =(nodeTransformMonitor node:HandI_FK forwardTransformChangeMsgs:false) ModificadorI.SNAP_PT_FK_I =(nodeTransformMonitor node:SNAP_PT_FK_I forwardTransformChangeMsgs:false) ModificadorI.SwivelFK_I =(nodeTransformMonitor node:SwivelFK_I forwardTransformChangeMsgs:false) ModificadorI.LowerArmI_IK =(nodeTransformMonitor node:LowerArmI_IK forwardTransformChangeMsgs:false) ModificadorI.HandI_IK =(nodeTransformMonitor node:HandDI_IK forwardTransformChangeMsgs:false) ModificadorI.SwivelIK_I =(nodeTransformMonitor node:SwivelIK_I forwardTransformChangeMsgs:false) ModificadorI.CTRL_IK_I =(nodeTransformMonitor node:CTRL_IK_I forwardTransformChangeMsgs:false) ModificadorI.UpperArmI_IK = (nodeTransformMonitor node:UpperArmI_IK forwardTransformChangeMsgs:false) ModificadorI.snapIK_I = (nodeTransformMonitor node:snapIK_I forwardTransformChangeMsgs:false) --AÑADE EL ORIENTATION COSNTRAINT AL UPPERARM MAIN orientacionUpperArm= orientation_Constraint() UpperArmI_MAIN.rotation.controller = orientacionUpperArm controlUpperArm_I= UpperArmI_MAIN.rotation.controller controlUpperArm_I.appendTarget UpperArmI_IK 1 controlUpperArm_I.appendTarget UpperArmI_FK 1 paramWire.connect CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_blending] UpperArmI_MAIN.rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_blending] UpperArmI_MAIN.rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL LOWERRARM MAIN orientacionLowerArm= orientation_Constraint() LowerArmI_MAIN.rotation.controller = orientacionLowerArm controlLowerArm_I= LowerArmI_MAIN.rotation.controller controlLowerArm_I.appendTarget LowerArmI_IK 1 controlLowerArm_I.appendTarget LowerArmI_FK 1 paramWire.connect CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_blending] LowerArmI_MAIN.rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_blending] LowerArmI_MAIN.rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL HandI_MAIN orientacionHandI= orientation_Constraint() HandI_MAIN.rotation.controller = orientacionHandI controlHandI_MAIN= HandI_MAIN.rotation.controller controlHandI_MAIN.appendTarget HandI_IK 1 controlHandI_MAIN.appendTarget HandI_FK 1 paramWire.connect CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_blending] HandI_MAIN.rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_blending] HandI_MAIN.rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --CREA EL EXPOSE TM EXPOSE_Arm_I = exposeTM pos:[0,50,0] name:(UI_Prefijo.text + "_"+"EXPOSE_Arm_I") isSelected:on useParent:off EXPOSE_Arm_I.exposeNode = HOMBRO_POINT_I EXPOSE_Arm_I.localReferenceNode = IK_ARM_I --AÑADE LOS FLOAT SCRIPT PARA EL AUTOSTRETCH Float_list_I= float_list() Stretch_UpperArm_I = float_script() Stretch_UpperArm_I.addTarget "Pr_blending" CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_blending] Stretch_UpperArm_I.addTarget "Pr_Autostretch" CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_Autostretch] Stretch_UpperArm_I.addConstant "b1_I" UpperArmI_FK.length Stretch_UpperArm_I.addConstant "b2_I" LowerArmI_FK.length Stretch_UpperArm_I.addTarget "dist_I" EXPOSE_Arm_I.distance.controller Stretch_UpperArm_I.script= "if dist_I > (b1_I + b2_I) then ((( dist_I - (b1_I+b2_I))/2)) * Pr_Autostretch * Pr_Blending else 0 " LowerArmI_IK.transform.controller.FK_Sub_Control.controller.Position.controller.X_Position.controller = Float_list() LowerArmI_IK.transform.controller.FK_Sub_Control.controller.Position.controller.X_Position.controller.Available.controller = Stretch_UpperArm_I HandI_IK.transform.controller.FK_Sub_Control.controller.Position.controller.X_Position.controller = Float_list() HandI_IK.transform.controller.FK_Sub_Control.controller.Position.controller.X_Position.controller.Available.controller = Stretch_UpperArm_I LowerArmI_MAIN.pos.controller.X_Position.controller = Float_list() LowerArmI_MAIN.pos.controller.X_Position.controller.Available.controller = Stretch_UpperArm_I HandI_MAIN.pos.controller.X_Position.controller = Float_list() HandI_MAIN.pos.controller.X_Position.controller.Available.controller = Stretch_UpperArm_I --AÑADE LOS FLOAT SCRIPT PARA EL FK_STRETCH Float_List_FK_I= float_list() FK_Stretch_UpperArm_I = float_script() FK_Stretch_UpperArm_I.addConstant "b1_I" UpperArmI_FK.length FK_Stretch_UpperArm_I.addConstant "b2_I" LowerArmI_FK.length FK_Stretch_UpperArm_I.addTarget "Pr_blending" CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_blending] FK_Stretch_UpperArm_I.addTarget "Pr_FK_Stretch" CTRL_IK_I.modifiers[#Attribute_Holder].ArmAttributes_I[#Pr_FK_Stretch] FK_Stretch_UpperArm_I.addConstant "dist_I" EXPOSE_Arm_I.distance FK_Stretch_UpperArm_I.script= "(((b1_I + b2_I) - (b1_I + b2_I))/2)+ Pr_FK_Stretch " LowerArmI_FK.pos.controller.X_Position.controller = Float_list() LowerArmI_FK.pos.controller.X_Position.controller.Available.controller = FK_Stretch_UpperArm_I HandI_FK.pos.controller.X_Position.controller = Float_list() HandI_FK.pos.controller.X_Position.controller.Available.controller = FK_Stretch_UpperArm_I LowerArmI_MAIN.pos.controller.X_Position.controller.Available.controller = FK_Stretch_UpperArm_I HandI_MAIN.pos.controller.X_Position.controller.Available.controller = FK_Stretch_UpperArm_I ) ) ) ) ) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --CREA LA PIERNA ( fn CreatePointsD Nombre= ( global PUNTOS_D = #() global BASE_CADERA_D = point name: (Nombre + "_" + "PT_Base_Cadera_D") pos: [40,0,135] size: 5 wirecolor: green append PUNTOS_D BASE_CADERA_D global CADERA_D = point name: (Nombre + "_" + "PT_Cadera_D") pos: [40,0,120] size: 5 wirecolor: green CADERA_D.parent = BASE_CADERA_D append PUNTOS_D CADERA_D global RODILLA_D = point name: (Nombre + "_" + "PT_Rodilla_D") pos: [40,-10,60] size: 5 wirecolor: green RODILLA_D.parent = CADERA_D append PUNTOS_D RODILLA_D global TOBILLO_D = point name: (Nombre + "_" + "PT_Tobillo_D") pos: [40,0,10] size: 5 wirecolor: green TOBILLO_D.parent = RODILLA_D append PUNTOS_D TOBILLO_D global BALL_D = point name: (Nombre + "_" + "PT_Ball_D") pos: [40,-15,0] size: 5 wirecolor: green BALL_D.parent = TOBILLO_D append PUNTOS_D BALL_D global TOE_D = point name: (Nombre + "_" + "PT_Toe_D") pos: [40,-25,0] size: 5 wirecolor: green TOE_D.parent = BALL_D append PUNTOS_D TOE_D global TOE_END_D = point name: (Nombre + "_" + "PT_Toe_end_D") pos: [40,-28,0] size: 5 wirecolor: green TOE_END_D.parent = TOE_D append PUNTOS_D TOE_END_D global CTRL_TOE_D= point name: (Nombre + "_" + "PT_Ctrl_Toe_D") pos: [40,-25,20] size: 5 wirecolor: red CTRL_TOE_D.PARENT = TOE_D global CTRL_PUNTA_D = point name: (Nombre + "_" + "PT_Ctrl_Punta_D") pos: [40,-28,-5] size: 5 wirecolor: red CTRL_PUNTA_D.PARENT = TOE_D global CTRL_TALON_D = point name: (Nombre + "_" + "PT_Ctrl_Talon_D") pos: [40,0,-5] size: 5 wirecolor: red CTRL_TALON_D.PARENT = TOBILLO_D for o= 1 to PUNTOS_D.count do (PUNTOS_D[o].axis_tripod= off ) ) fn CreatePointsI Nombre= ( global PUNTOS_I = #() global BASE_CADERA_I = point name: (Nombre + "_" + "PT_Base_Cadera_I") pos: BASE_CADERA_D.pos size: 5 wirecolor: green append PUNTOS_I BASE_CADERA_I global CADERA_I = point name: (Nombre + "_" + "PT_Cadera_I") pos: CADERA_D.pos size: 5 wirecolor: green CADERA_I.PARENT = BASE_CADERA_I append PUNTOS_I CADERA_I global RODILLA_I = point name: (Nombre + "_" + "PT_Rodilla_I") pos: RODILLA_D.POS size: 5 wirecolor: green RODILLA_I.PARENT = CADERA_I append PUNTOS_I RODILLA_I global TOBILLO_I = point name: (Nombre + "_" + "PT_Tobillo_I") pos: TOBILLO_D.POS size: 5 wirecolor: green TOBILLO_I.PARENT = RODILLA_I append PUNTOS_I TOBILLO_I global BALL_I = point name: (Nombre + "_" + "PT_Ball_I") pos: BALL_D.POS size: 5 wirecolor: green BALL_I.PARENT = TOBILLO_I append PUNTOS_I BALL_I global TOE_I = point name: (Nombre + "_" + "PT_Toe_I") pos: TOE_D.POS size: 5 wirecolor: green TOE_I.PARENT = BALL_I append PUNTOS_I TOE_I global TOE_END_I = point name: (Nombre + "_" + "PT_Toe_end_I") pos: TOE_END_D.POS size: 5 wirecolor: green TOE_END_I.parent = TOE_I append PUNTOS_I TOE_END_I global CTRL_TOE_I= point name: (Nombre + "_" + "PT_Ctrl_Toe_I") pos: CTRL_TOE_D.POS size: 5 wirecolor: red CTRL_TOE_I.PARENT = TOE_I global CTRL_PUNTA_I = point name: (Nombre + "_" + "PT_Ctrl_Punta_I") pos: CTRL_PUNTA_D.POS size: 5 wirecolor: red CTRL_PUNTA_I.PARENT = TOE_I global CTRL_TALON_I = point name: (Nombre + "_" + "PT_Ctrl_Talon_I") pos: CTRL_TALON_D.POS size: 5 wirecolor: red CTRL_TALON_I.PARENT = TOBILLO_I BASE_CADERA_I.transform =BASE_CADERA_I.transform * (ScaleMatrix [-1,1,1]) for o= 1 to PUNTOS_I.count do (PUNTOS_I[o].axis_tripod= off ) ) fn CreaHuesosD ANCHO ALTO SIDES FRONTS BACKS TAPERSITO COLORES BOXMODE TIPO_CADENA IK_S FK_S MAIN_S PADRE NOMBRE= ( PIERNA_FK = #() PIERNA_IK = #() PIERNA_MAIN = #() for i= 1 to ((PUNTOS_D.count)-1) do ( HUESOS_PIERNA_IK_D = bonesys.createbone (PUNTOS_D[i].pos) (PUNTOS_D[i+1].pos) (cross PUNTOS_D[I].dir [1,0,0]) HUESOS_PIERNA_IK_D.width = ANCHO *2 HUESOS_PIERNA_IK_D.height = ALTO *2 HUESOS_PIERNA_IK_D.sidefins =SIDES HUESOS_PIERNA_IK_D.frontfin= FRONTS HUESOS_PIERNA_IK_D.backfin=BACKS HUESOS_PIERNA_IK_D.name = (NOMBRE + "_Bn_"+"IK" + i as string + "_D") HUESOS_PIERNA_IK_D.Taper=TAPERSITO HUESOS_PIERNA_IK_D.wirecolor=red HUESOS_PIERNA_IK_D.boxmode= false append PIERNA_IK HUESOS_PIERNA_IK_D ) for i= 1 to ((PUNTOS_D.count)-1) do ( HUESOS_PIERNA_FK_D = bonesys.createbone (PUNTOS_D[i].pos) (PUNTOS_D[i+1].pos) (cross PUNTOS_D[I].dir [1,0,0]) HUESOS_PIERNA_FK_D.width = ANCHO*4 HUESOS_PIERNA_FK_D.height = ALTO*4 HUESOS_PIERNA_FK_D.sidefins =SIDES HUESOS_PIERNA_FK_D.frontfin= FRONTS HUESOS_PIERNA_FK_D.backfin=BACKS HUESOS_PIERNA_FK_D.name = (NOMBRE + "_Bn_"+"FK" + i as string + "_D") HUESOS_PIERNA_FK_D.Taper=TAPERSITO HUESOS_PIERNA_FK_D.wirecolor=blue HUESOS_PIERNA_FK_D.boxmode= TRUE append PIERNA_FK HUESOS_PIERNA_FK_D ) for i= 1 to ((PUNTOS_D.count)-1) do ( HUESOS_PIERNA_MAIN_D = bonesys.createbone (PUNTOS_D[i].pos) (PUNTOS_D[i+1].pos) (cross PUNTOS_D[I].dir [1,0,0]) HUESOS_PIERNA_MAIN_D.width = ANCHO HUESOS_PIERNA_MAIN_D.height = ALTO HUESOS_PIERNA_MAIN_D.sidefins =SIDES HUESOS_PIERNA_MAIN_D.frontfin= FRONTS HUESOS_PIERNA_MAIN_D.backfin=BACKS HUESOS_PIERNA_MAIN_D.name = (NOMBRE + "_Bn_"+"MAIN" + i as string + "_D") HUESOS_PIERNA_MAIN_D.Taper=0 HUESOS_PIERNA_MAIN_D.wirecolor=green HUESOS_PIERNA_MAIN_D.boxmode= false append PIERNA_MAIN HUESOS_PIERNA_MAIN_D ) for i= 1 to (PIERNA_FK.count) do ( if PIERNA_FK[i] != PIERNA_FK[1] then PIERNA_FK[i].parent = PIERNA_FK[i-1] ) for i= 1 to (PIERNA_IK.count) do ( if PIERNA_IK[i] != PIERNA_IK[1] then PIERNA_IK[i].parent = PIERNA_IK[i-1] ) for i= 1 to (PIERNA_MAIN.count) do ( if PIERNA_MAIN[i] != PIERNA_MAIN[1] then PIERNA_MAIN[i].parent = PIERNA_MAIN[i-1] ) --FEMUR_IK= PIERNA_MAIN[2] --TODO LO CORRESPONDIENTE AL IK if IK_S== true then ( --CREA EL PADRE GENERAL global PT_CADERA_LEG_D= point pos: PIERNA_FK[1].pos name:(NOMBRE + "_"+"PT_CADERA_LEG_D" + "_D") size: 5 wirecolor:RED PT_CADERA_LEG_D.parent = PADRE --EMPARENTA LOS HUESOS AL PADRE GENERAL PIERNA_FK[1].parent = PT_CADERA_LEG_D PIERNA_IK[1].parent = PT_CADERA_LEG_D PIERNA_MAIN[1].parent = PT_CADERA_LEG_D --CREA EL SWIVLE global SwivelIK_leg_D= circle pos: PIERNA_IK[3].pos name:(NOMBRE + "_"+"SwivelIK_Leg_D") radius: 5 move SwivelIK_leg_D [0,-30,0] --CREA EL IK 1 IK_LEG_1_D = IKSys.ikChain PIERNA_IK[2] PIERNA_IK[4] "IKHISolver" IK_LEG_1_D.name = (NOMBRE + "_ik_chain_" as string + "IK_LEG_1_D") IK_LEG_1_D.transform.controller.VHTarget = SwivelIK_leg_D --CREA EL IK 2 IK_LEG_2_D = IKSys.ikChain PIERNA_IK[4] PIERNA_IK[5] "IKHISolver" IK_LEG_2_D.name = (NOMBRE + "_ik_chain_" as string + "IK_LEG_2_D") --IK_LEG_2_D.transform.controller.SAParent = 0 --CREA EL IK 2 IK_LEG_3_D = IKSys.ikChain PIERNA_IK[5] PIERNA_IK[6] "IKHISolver" IK_LEG_3_D.name = (NOMBRE + "_ik_chain_" + i as string + "IK_LEG_3_D") --CREA EL CONTROL DEL TOBILLO CTRL_TOBILLO= circle radius:(ANCHO *1) pos: PIERNA_IK[4].pos name:(NOMBRE + "_"+"Ctrl_Tobillo" + "_D") wirecolor: green in coordsys PIERNA_IK[4] CTRL_TOBILLO.rotation = eulerangles 0 0 0 --CREA EL CONTROL DEL BALL CTRL_BALL_D= circle radius:(ANCHO *1) pos: PIERNA_IK[5].pos name:(NOMBRE + "_"+"Ctrl_Ball" + "_D") wirecolor: green in coordsys PIERNA_IK[5] CTRL_BALL_D.rotation = eulerangles 0 0 0 --CREA EL CONTROL GENERAL DEL PIE global CTRL_PIERNA_D= rectangle length:50 width:25 pos:CTRL_TALON_D.pos name:(NOMBRE +"_"+ "Ctrl_PIE_IK" + "_D") wirecolor: green --CREA EL CONTROL DEL TOE global Circ_CTRL_TOE_D = circle radius:(ANCHO *1) pos: CTRL_TOE_D.pos name:(NOMBRE + "_"+"Ctrl_Toe" + "_D") wirecolor: green --CREA EL CONTROL DE LA PUNTA global Circ_CTRL_PUNTA_D= circle radius:(ANCHO *1) pos: CTRL_PUNTA_D.pos name:(NOMBRE + "_"+"Ctrl_Punta" + "_D") wirecolor: green --CREA EL CONTROL DEK TALON Circ_CTRL_TALON_D= circle radius:(ANCHO *1) pos: CTRL_TALON_D .pos name:(NOMBRE + "_"+"Ctrl_Talon" + "_D") wirecolor: green --LINKEA EL CTRL TOE A CTRL PUNTA Circ_CTRL_TOE_D.parent = Circ_CTRL_PUNTA_D --LINKEA CTRL PUNTA A CONTROL TALON Circ_CTRL_PUNTA_D.parent = Circ_CTRL_TALON_D --LINKEA CONTROL TALON A CONTROL TOBILLO Circ_CTRL_TALON_D.parent= CTRL_TOBILLO --linkea el iksolver 1 al control ball IK_LEG_1_D.parent = CTRL_BALL_D --LINKEA EL IKSOLVER 2 AL CTRL TOE IK_LEG_2_D.parent = Circ_CTRL_PUNTA_D --LINKEA CTRL BALL A CTRL PUNTA CTRL_BALL_D.parent = Circ_CTRL_PUNTA_D --linkea el control tobillo al rectangulo CTRL_TOBILLO.parent =CTRL_PIERNA_D --cambia el pivote del control general CTRL_PIERNA_D.pivot = CTRL_TOBILLO.POS --crea el swivle global Swivel_FK_LEG_D= point pos: SwivelIK_leg_D.pos name:(NOMBRE + "_"+"Swivel_FK_LEG_D" + "_D") size: 5 wirecolor:blue Swivel_FK_LEG_D.parent = PIERNA_FK[3] --IK_LEG_2_D.transform.controller.SAParent = 0 --ALINEA LOS HUESOS DESORIENTADOS FK in coordsys PIERNA_IK[4] PIERNA_FK[4].rotation = eulerangles 0 0 0 in coordsys PIERNA_IK[5] PIERNA_FK[5].rotation = eulerangles 0 0 0 in coordsys PIERNA_IK[6] PIERNA_FK[6].rotation = eulerangles 0 0 0 --ALINEA LOS HUESOS DESORIENTADOS FK in coordsys PIERNA_IK[4] PIERNA_MAIN[4].rotation = eulerangles 0 0 0 in coordsys PIERNA_IK[5] PIERNA_MAIN[5].rotation = eulerangles 0 0 0 in coordsys PIERNA_IK[6] PIERNA_MAIN[6].rotation = eulerangles 0 0 0 --CREA EL SNAP PT_FK_LEG global SNAP_PT_FK_LEG_D = point pos: PIERNA_FK[4].pos name:(NOMBRE + "_"+"SNAP_PT_FK_LEG_" + "_D") in coordsys CTRL_PIERNA_D SNAP_PT_FK_LEG_D.rotation = eulerangles 0 0 0 SNAP_PT_FK_LEG_D.parent = PIERNA_FK[4] --crea el alineador del ctrl punta global PT_Punta_FK_D= point size:5 name:(NOMBRE + "_"+"PT_Punta_D" + "_D") pos:PIERNA_FK[5].pos wirecolor:blue PT_Punta_FK_D.parent = PIERNA_FK[6] in coordsys Circ_CTRL_PUNTA_D PT_Punta_FK_D.rotation = eulerangles 0 0 0 --crea el alineador del ball FK global PT_Ball_FK_D= point size:5 name:(NOMBRE + "_"+"PT_Ball_D" + "_D") pos:PIERNA_FK[5].pos wirecolor:blue PT_Ball_FK_D.parent = PIERNA_FK[4] in coordsys CTRL_BALL_D PT_Ball_FK_D.rotation = eulerangles 0 0 0 --crea el alineador del talon global PT_Talon_FK_D= point size:5 name:(NOMBRE + "_"+"PT_TALON_D" + "_D") pos:Circ_CTRL_TALON_D.pos wirecolor:blue PT_Talon_FK_D.parent = PIERNA_FK[4] in coordsys Circ_CTRL_TALON_D PT_Talon_FK_D.rotation = eulerangles 0 0 0 --CAMBIA LA ROTACION DEL CTRL TOE Circ_CTRL_TOE_D.pos = PIERNA_FK[5].pos Circ_CTRL_TOE_D.rotation = PIERNA_FK[5].rotation Circ_CTRL_TOE_D.pos = CTRL_TOE_D.pos --CAMBIA EL PIVOTE DEL CTRL TOE Circ_CTRL_TOE_D.pivot = PIERNA_IK[5].pos --linkea el iksolver 3 al control punta IK_LEG_3_D.parent = Circ_CTRL_TOE_D --AÑADE LOS CUSTOM ATTRIBUTES ModificadorPie_D= emptymodifier() addmodifier CTRL_PIERNA_D ModificadorPie_D addmodifier PIERNA_FK[2] ModificadorPie_D addmodifier PIERNA_FK[3] ModificadorPie_D addmodifier PIERNA_FK[4] ModificadorPie_D addmodifier PIERNA_FK[5] ModificadorPie_D LEGAttributes_Plantilla_D =attributes LEGAttributes_D ( --los parametros van en esta parte, para poder acceder a ellos luego parameters Pr_LEGControls rollout:LEGControls_D ( Pr_blending type:#float ui:UI_blending default:0 Pr_Autostretch type:#float ui:UI_Autostretch default:0 Pr_StretchFactor type:#float ui:UI_StretchFactor default:0 Pr_FK_Stretch type:#float ui:UI_FK_Stretch default:0 PIERNA_FK_2 type:#maxObject PIERNA_FK_3 type:#maxObject PIERNA_FK_4 type:#maxObject PIERNA_FK_5 type:#maxObject PIERNA_FK_6 type:#maxObject PIERNA_IK_2 type:#maxObject PIERNA_IK_3 type:#maxObject PIERNA_IK_4 type:#maxObject PIERNA_IK_5 type:#maxObject PIERNA_IK_6 type:#maxObject SwivelIK_leg_D type:#maxObject Swivel_FK_LEG_D type:#maxObject SNAP_PT_FK_LEG_D type:#maxObject CTRL_PIERNA_D type:#maxObject Circ_CTRL_TOE_D type:#maxObject PT_Ball_FK_D type:#maxObject CTRL_BALL_D type:#maxObject PT_Talon_FK_D type:#maxObject ) --El rollout es la interfaz grafica que el animador va a usar rollout LEGControls_D "LEG_CONTROLS" width:160 height:320 ( GroupBox Grp_Blending "LegControls" pos:[8,8] width:144 height:160 button UI_Btn_ik "IK" pos:[19,51] width:48 height:16 button UI_Btn_FK "FK" pos:[18,30] width:48 height:16 button btn_ResetValues "ResetValues" pos:[74,30] width:73 height:38 spinner UI_blending "FK/IK Blending" pos:[41,73] width:104 height:16 range:[0,1,0] spinner UI_Autostretch "AutoStretch" pos:[57,96] width:88 height:16 range:[0,1,0] spinner UI_StretchFactor "StretchFactor" pos:[49,120] width:96 height:16 range:[0,1,0] spinner UI_FK_Stretch "FK_Stretch" pos:[49,140] width:96 height:16 range:[0,100,0] on btn_ResetValues pressed do ( UI_blending.value =0 UI_Autostretch.value =0 UI_StretchFactor.value=0 ) on UI_Btn_ik pressed do with undo on ( --Alinea Posicion de MainControlerIK a Fk CTRL_PIERNA_D.node.position= SNAP_PT_FK_LEG_D.node.position --Alinea Rotacion de MainControler Ik a FK in Coordsys SNAP_PT_FK_LEG_D.node CTRL_PIERNA_D.node.rotation = eulerangles 0 0 0 --Alinea Posicion del swivel Angle SwivelIK_leg_D.node.position = Swivel_FK_LEG_D.node.position --Alinea rotacion del IK Toe in coordsys PIERNA_FK_5.node Circ_CTRL_TOE_D.node.rotation = eulerangles 0 0 0 --Alinea la rotacion del ctrl del ball in coordsys PT_Ball_FK_D.node CTRL_BALL_D.node.rotation = eulerangles 0 0 0 --convierte los valores de FK_IKBlend a 100 CTRL_PIERNA_D.node.modifiers[#Attribute_Holder].LEGAttributes_D.Pr_blending =1 CTRL_PIERNA_D.node.modifiers[#Attribute_Holder].LEGAttributes_D.Pr_FK_Stretch = 0 ) on UI_Btn_FK pressed do with undo on ( --Convierte los valores de FK_IKBlend a 0 -- CTRL_PIERNA_D.node.modifiers[#Attribute_Holder].LEGAttributes_D.Pr_blending =0 --CTRL_IK_D.node.modifiers[#Attribute_Holder].ArmAttributes_D.Pr_Autostretch =0 --alinea rotacion de UpperlegFK A IK in Coordsys PIERNA_IK_2.node PIERNA_FK_2.node.rotation =eulerangles 0 0 0 --alinea rotacion de lowerLegFK a IK in Coordsys PIERNA_IK_3.node PIERNA_FK_3.node.rotation = eulerangles 0 0 0 --alinea Ball to ballIK in Coordsys PIERNA_IK_4.node PIERNA_FK_4.node.rotation = eulerangles 0 0 0 --alinea TOE to ballIK in Coordsys PIERNA_IK_5.node PIERNA_FK_5.node.rotation = eulerangles 0 0 0 --alinea nub to ballIK in Coordsys PIERNA_IK_6.node PIERNA_FK_6.node.rotation = eulerangles 0 0 0 -- if EXPOSE_Arm_D.node.distance > (UpperArmD_FK.node.length + LowerArmD_FK.node.length) then ( -- CTRL_IK_D.node.modifiers[#Attribute_Holder].ArmAttributes_D.Pr_FK_Stretch = (EXPOSE_Arm_D.node.distance-(UpperArmD_FK.node.length + LowerArmD_FK.node.length))/2) -- else 0 ) ) ) --esta es la funcion para añadir el rollout al modificador del objeto control custAttributes.add CTRL_PIERNA_D.attribute_Holder LEGAttributes_Plantilla_D custAttributes.add PIERNA_FK[2].attribute_Holder LEGAttributes_Plantilla_D custAttributes.add PIERNA_FK[3].attribute_Holder LEGAttributes_Plantilla_D custAttributes.add PIERNA_FK[4].attribute_Holder LEGAttributes_Plantilla_D custAttributes.add PIERNA_FK[5].attribute_Holder LEGAttributes_Plantilla_D --añade los objetos al type node ModificadorPie_D.PIERNA_FK_2 =(nodeTransformMonitor node:PIERNA_FK[2] forwardTransformChangeMsgs:false) ModificadorPie_D.PIERNA_FK_3 =(nodeTransformMonitor node:PIERNA_FK[3] forwardTransformChangeMsgs:false) ModificadorPie_D.PIERNA_FK_4 =(nodeTransformMonitor node:PIERNA_FK[4] forwardTransformChangeMsgs:false) ModificadorPie_D.PIERNA_FK_5 =(nodeTransformMonitor node:PIERNA_FK[5] forwardTransformChangeMsgs:false) ModificadorPie_D.PIERNA_FK_6 =(nodeTransformMonitor node:PIERNA_FK[6] forwardTransformChangeMsgs:false) ModificadorPie_D.PIERNA_IK_2 =(nodeTransformMonitor node:PIERNA_IK[2] forwardTransformChangeMsgs:false) ModificadorPie_D.PIERNA_IK_3 =(nodeTransformMonitor node:PIERNA_IK[3] forwardTransformChangeMsgs:false) ModificadorPie_D.PIERNA_IK_4 =(nodeTransformMonitor node:PIERNA_IK[4] forwardTransformChangeMsgs:false) ModificadorPie_D.PIERNA_IK_5 =(nodeTransformMonitor node:PIERNA_IK[5] forwardTransformChangeMsgs:false) ModificadorPie_D.PIERNA_IK_6 =(nodeTransformMonitor node:PIERNA_IK[6] forwardTransformChangeMsgs:false) ModificadorPie_D.SwivelIK_leg_D =(nodeTransformMonitor node:SwivelIK_leg_D forwardTransformChangeMsgs:false) ModificadorPie_D.Swivel_FK_LEG_D =(nodeTransformMonitor node:Swivel_FK_LEG_D forwardTransformChangeMsgs:false) ModificadorPie_D.SNAP_PT_FK_LEG_D =(nodeTransformMonitor node:SNAP_PT_FK_LEG_D forwardTransformChangeMsgs:false) ModificadorPie_D.CTRL_PIERNA_D =(nodeTransformMonitor node:CTRL_PIERNA_D forwardTransformChangeMsgs:false) ModificadorPie_D.Circ_CTRL_TOE_D =(nodeTransformMonitor node:Circ_CTRL_TOE_D forwardTransformChangeMsgs:false) ModificadorPie_D.PT_Ball_FK_D =(nodeTransformMonitor node:PT_Ball_FK_D forwardTransformChangeMsgs:false) ModificadorPie_D.CTRL_BALL_D =(nodeTransformMonitor node:CTRL_BALL_D forwardTransformChangeMsgs:false) ModificadorPie_D.PT_Talon_FK_D =(nodeTransformMonitor node:PT_Talon_FK_D forwardTransformChangeMsgs:false) --AÑADE EL ORIENTATION COSNTRAINT AL UPPERARM MAIN orientacionUpperLEG= orientation_Constraint() PIERNA_MAIN[2].rotation.controller = orientacionUpperLEG controlUpperLEG_D= PIERNA_MAIN[2].rotation.controller controlUpperLEG_D.appendTarget PIERNA_IK[2] 1 controlUpperLEG_D.appendTarget PIERNA_FK[2] 1 paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[2].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[2].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL LOWER MAIN orientacionLowerLEG= orientation_Constraint() PIERNA_MAIN[3].rotation.controller = orientacionLowerLEG controlLowerLEG_D= PIERNA_MAIN[3].rotation.controller controlLowerLEG_D.appendTarget PIERNA_IK[3] 1 controlLowerLEG_D.appendTarget PIERNA_FK[3] 1 paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[3].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[3].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL BALL MAIN orientacionBallLEG= orientation_Constraint() PIERNA_MAIN[4].rotation.controller = orientacionBallLEG controlBallLEG_D= PIERNA_MAIN[4].rotation.controller controlBallLEG_D.appendTarget PIERNA_IK[4] 1 controlBallLEG_D.appendTarget PIERNA_FK[4] 1 paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[4].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[4].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL BALL MAIN orientacionBallLEG= orientation_Constraint() PIERNA_MAIN[5].rotation.controller = orientacionBallLEG controlBallLEG_D= PIERNA_MAIN[5].rotation.controller controlBallLEG_D.appendTarget PIERNA_IK[5] 1 controlBallLEG_D.appendTarget PIERNA_FK[5] 1 paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[5].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[5].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL BALL MAIN orientacionBallLEG= orientation_Constraint() PIERNA_MAIN[6].rotation.controller = orientacionBallLEG controlBallLEG_D= PIERNA_MAIN[6].rotation.controller controlBallLEG_D.appendTarget PIERNA_IK[6] 1 controlBallLEG_D.appendTarget PIERNA_FK[6] 1 paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[6].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_D.modifiers[#Attribute_Holder].LEGAttributes_D[#Pr_blending] PIERNA_MAIN[6].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" ) else 0 ) fn CreaHuesosI ANCHO ALTO SIDES FRONTS BACKS TAPERSITO COLORES BOXMODE TIPO_CADENA IK_S FK_S MAIN_S PADRE NOMBRE= ( PIERNA_FK = #() PIERNA_IK = #() PIERNA_MAIN = #() for i= 1 to ((PUNTOS_I.count)-1) do ( HUESOS_PIERNA_IK_I = bonesys.createbone (PUNTOS_I[i].pos) (PUNTOS_I[i+1].pos) (cross PUNTOS_I[I].dir [1,0,0]) HUESOS_PIERNA_IK_I.width = ANCHO *2 HUESOS_PIERNA_IK_I.height = ALTO *2 HUESOS_PIERNA_IK_I.sidefins =SIDES HUESOS_PIERNA_IK_I.frontfin= FRONTS HUESOS_PIERNA_IK_I.backfin=BACKS HUESOS_PIERNA_IK_I.name = (NOMBRE + "_Bn_"+"IK" + i as string + "_I") HUESOS_PIERNA_IK_I.Taper=TAPERSITO HUESOS_PIERNA_IK_I.wirecolor=red HUESOS_PIERNA_IK_I.boxmode= false append PIERNA_IK HUESOS_PIERNA_IK_I ) for i= 1 to ((PUNTOS_I.count)-1) do ( HUESOS_PIERNA_FK_I = bonesys.createbone (PUNTOS_I[i].pos) (PUNTOS_I[i+1].pos) (cross PUNTOS_I[I].dir [1,0,0]) HUESOS_PIERNA_FK_I.width = ANCHO*4 HUESOS_PIERNA_FK_I.height = ALTO*4 HUESOS_PIERNA_FK_I.sidefins =SIDES HUESOS_PIERNA_FK_I.frontfin= FRONTS HUESOS_PIERNA_FK_I.backfin=BACKS HUESOS_PIERNA_FK_I.name = (NOMBRE + "_Bn_"+"FK" + i as string + "_I") HUESOS_PIERNA_FK_I.Taper=TAPERSITO HUESOS_PIERNA_FK_I.wirecolor=blue HUESOS_PIERNA_FK_I.boxmode= TRUE append PIERNA_FK HUESOS_PIERNA_FK_I ) for i= 1 to ((PUNTOS_I.count)-1) do ( HUESOS_PIERNA_MAIN_I = bonesys.createbone (PUNTOS_I[i].pos) (PUNTOS_I[i+1].pos) (cross PUNTOS_I[I].dir [1,0,0]) HUESOS_PIERNA_MAIN_I.width = ANCHO HUESOS_PIERNA_MAIN_I.height = ALTO HUESOS_PIERNA_MAIN_I.sidefins =SIDES HUESOS_PIERNA_MAIN_I.frontfin= FRONTS HUESOS_PIERNA_MAIN_I.backfin=BACKS HUESOS_PIERNA_MAIN_I.name = (NOMBRE + "_Bn_"+"MAIN" + i as string + "_I") HUESOS_PIERNA_MAIN_I.Taper=0 HUESOS_PIERNA_MAIN_I.wirecolor=green HUESOS_PIERNA_MAIN_I.boxmode= false append PIERNA_MAIN HUESOS_PIERNA_MAIN_I ) for i= 1 to (PIERNA_FK.count) do ( if PIERNA_FK[i] != PIERNA_FK[1] then PIERNA_FK[i].parent = PIERNA_FK[i-1] ) for i= 1 to (PIERNA_IK.count) do ( if PIERNA_IK[i] != PIERNA_IK[1] then PIERNA_IK[i].parent = PIERNA_IK[i-1] ) for i= 1 to (PIERNA_MAIN.count) do ( if PIERNA_MAIN[i] != PIERNA_MAIN[1] then PIERNA_MAIN[i].parent = PIERNA_MAIN[i-1] ) --FEMUR_IK= PIERNA_MAIN[2] --TODO LO CORRESPONDIENTE AL IK if IK_S== true then ( --CREA EL PADRE GENERAL global PT_CADERA_LEG_I= point pos: PIERNA_FK[1].pos name:(NOMBRE + "_"+"PT_CADERA_LEG_I" + "_I") size: 5 wirecolor:RED PT_CADERA_LEG_I.parent = PADRE --EMPARENTA LOS HUESOS AL PADRE GENERAL PIERNA_FK[1].parent = PT_CADERA_LEG_I PIERNA_IK[1].parent = PT_CADERA_LEG_I PIERNA_MAIN[1].parent = PT_CADERA_LEG_I --CREA EL SWIVLE global SwivelIK_leg_I= circle pos: PIERNA_IK[3].pos name:(NOMBRE + "_"+"SwivelIK_Leg_I") radius: 5 move SwivelIK_leg_I [0,-30,0] --CREA EL IK 1 IK_LEG_1_I = IKSys.ikChain PIERNA_IK[2] PIERNA_IK[4] "IKHISolver" IK_LEG_1_I.name = (NOMBRE + "_ik_chain_" as string + "IK_LEG_1_I") IK_LEG_1_I.transform.controller.VHTarget = SwivelIK_leg_I --CREA EL IK 2 IK_LEG_2_I = IKSys.ikChain PIERNA_IK[4] PIERNA_IK[5] "IKHISolver" IK_LEG_2_I.name = (NOMBRE + "_ik_chain_" as string + "IK_LEG_2_I") --IK_LEG_2_I.transform.controller.SAParent = 0 --CREA EL IK 2 IK_LEG_3_I = IKSys.ikChain PIERNA_IK[5] PIERNA_IK[6] "IKHISolver" IK_LEG_3_I.name = (NOMBRE + "_ik_chain_" + i as string + "IK_LEG_3_I") --CREA EL CONTROL DEL TOBILLO CTRL_TOBILLO= circle radius:(ANCHO *1) pos: PIERNA_IK[4].pos name:(NOMBRE + "_"+"Ctrl_Tobillo" + "_I") wirecolor: green in coordsys PIERNA_IK[4] CTRL_TOBILLO.rotation = eulerangles 0 0 0 --CREA EL CONTROL DEL BALL CTRL_BALL_I= circle radius:(ANCHO *1) pos: PIERNA_IK[5].pos name:(NOMBRE + "_"+"Ctrl_Ball" + "_I") wirecolor: green in coordsys PIERNA_IK[5] CTRL_BALL_I.rotation = eulerangles 0 0 0 --CREA EL CONTROL GENERAL DEL PIE global CTRL_PIERNA_I= rectangle length:50 width:25 pos:CTRL_TALON_I.pos name:(NOMBRE +"_"+ "Ctrl_PIE_IK" + "_I") wirecolor: green --CREA EL CONTROL DEL TOE global Circ_CTRL_TOE_I = circle radius:(ANCHO *1) pos: CTRL_TOE_I.pos name:(NOMBRE + "_"+"Ctrl_Toe" + "_I") wirecolor: green --CREA EL CONTROL DE LA PUNTA global Circ_CTRL_PUNTA_I= circle radius:(ANCHO *1) pos: CTRL_PUNTA_I.pos name:(NOMBRE + "_"+"Ctrl_Punta" + "_I") wirecolor: green --CREA EL CONTROL DEK TALON Circ_CTRL_TALON_I= circle radius:(ANCHO *1) pos: CTRL_TALON_I .pos name:(NOMBRE + "_"+"Ctrl_Talon" + "_I") wirecolor: green --LINKEA EL CTRL TOE A CTRL PUNTA Circ_CTRL_TOE_I.parent = Circ_CTRL_PUNTA_I --LINKEA CTRL PUNTA A CONTROL TALON Circ_CTRL_PUNTA_I.parent = Circ_CTRL_TALON_I --LINKEA CONTROL TALON A CONTROL TOBILLO Circ_CTRL_TALON_I.parent= CTRL_TOBILLO --linkea el iksolver 1 al control ball IK_LEG_1_I.parent = CTRL_BALL_I --LINKEA EL IKSOLVER 2 AL CTRL TOE IK_LEG_2_I.parent = Circ_CTRL_PUNTA_I --LINKEA CTRL BALL A CTRL PUNTA CTRL_BALL_I.parent = Circ_CTRL_PUNTA_I --linkea el control tobillo al rectangulo CTRL_TOBILLO.parent =CTRL_PIERNA_I --cambia el pivote del control general CTRL_PIERNA_I.pivot = CTRL_TOBILLO.POS --crea el swivle global Swivel_FK_LEG_I= point pos: SwivelIK_leg_I.pos name:(NOMBRE + "_"+"Swivel_FK_LEG_I" + "_I") size: 5 wirecolor:blue Swivel_FK_LEG_I.parent = PIERNA_FK[3] --IK_LEG_2_I.transform.controller.SAParent = 0 --ALINEA LOS HUESOS DESORIENTADOS FK in coordsys PIERNA_IK[4] PIERNA_FK[4].rotation = eulerangles 0 0 0 in coordsys PIERNA_IK[5] PIERNA_FK[5].rotation = eulerangles 0 0 0 in coordsys PIERNA_IK[6] PIERNA_FK[6].rotation = eulerangles 0 0 0 --ALINEA LOS HUESOS DESORIENTADOS FK in coordsys PIERNA_IK[4] PIERNA_MAIN[4].rotation = eulerangles 0 0 0 in coordsys PIERNA_IK[5] PIERNA_MAIN[5].rotation = eulerangles 0 0 0 in coordsys PIERNA_IK[6] PIERNA_MAIN[6].rotation = eulerangles 0 0 0 --CREA EL SNAP PT_FK_LEG global SNAP_PT_FK_LEG_I = point pos: PIERNA_FK[4].pos name:(NOMBRE + "_"+"SNAP_PT_FK_LEG_" + "_I") in coordsys CTRL_PIERNA_I SNAP_PT_FK_LEG_I.rotation = eulerangles 0 0 0 SNAP_PT_FK_LEG_I.parent = PIERNA_FK[4] --crea el alineador del ctrl punta global PT_Punta_FK_I= point size:5 name:(NOMBRE + "_"+"PT_Punta_I" + "_I") pos:PIERNA_FK[5].pos wirecolor:blue PT_Punta_FK_I.parent = PIERNA_FK[6] in coordsys Circ_CTRL_PUNTA_I PT_Punta_FK_I.rotation = eulerangles 0 0 0 --crea el alineador del ball FK global PT_Ball_FK_I= point size:5 name:(NOMBRE + "_"+"PT_Ball_I" + "_I") pos:PIERNA_FK[5].pos wirecolor:blue PT_Ball_FK_I.parent = PIERNA_FK[4] in coordsys CTRL_BALL_I PT_Ball_FK_I.rotation = eulerangles 0 0 0 --crea el alineador del talon global PT_Talon_FK_I= point size:5 name:(NOMBRE + "_"+"PT_TALON_I" + "_I") pos:Circ_CTRL_TALON_I.pos wirecolor:blue PT_Talon_FK_I.parent = PIERNA_FK[4] in coordsys Circ_CTRL_TALON_I PT_Talon_FK_I.rotation = eulerangles 0 0 0 --CAMBIA LA ROTACION DEL CTRL TOE Circ_CTRL_TOE_I.pos = PIERNA_FK[5].pos Circ_CTRL_TOE_I.rotation = PIERNA_FK[5].rotation Circ_CTRL_TOE_I.pos = CTRL_TOE_I.pos --CAMBIA EL PIVOTE DEL CTRL TOE Circ_CTRL_TOE_I.pivot = PIERNA_IK[5].pos --linkea el iksolver 3 al control punta IK_LEG_3_I.parent = Circ_CTRL_TOE_I --AÑADE LOS CUSTOM ATTRIBUTES ModificadorPie_I= emptymodifier() addmodifier CTRL_PIERNA_I ModificadorPie_I addmodifier PIERNA_FK[2] ModificadorPie_I addmodifier PIERNA_FK[3] ModificadorPie_I addmodifier PIERNA_FK[4] ModificadorPie_I addmodifier PIERNA_FK[5] ModificadorPie_I LEGAttributes_Plantilla_I =attributes LEGAttributes_I ( --los parametros van en esta parte, para poder acceder a ellos luego parameters Pr_LEGControls rollout:LEGControls_I ( Pr_blending type:#float ui:UI_blending default:0 Pr_Autostretch type:#float ui:UI_Autostretch default:0 Pr_StretchFactor type:#float ui:UI_StretchFactor default:0 Pr_FK_Stretch type:#float ui:UI_FK_Stretch default:0 PIERNA_FK_2 type:#maxObject PIERNA_FK_3 type:#maxObject PIERNA_FK_4 type:#maxObject PIERNA_FK_5 type:#maxObject PIERNA_FK_6 type:#maxObject PIERNA_IK_2 type:#maxObject PIERNA_IK_3 type:#maxObject PIERNA_IK_4 type:#maxObject PIERNA_IK_5 type:#maxObject PIERNA_IK_6 type:#maxObject SwivelIK_leg_I type:#maxObject Swivel_FK_LEG_I type:#maxObject SNAP_PT_FK_LEG_I type:#maxObject CTRL_PIERNA_I type:#maxObject Circ_CTRL_TOE_I type:#maxObject PT_Ball_FK_I type:#maxObject CTRL_BALL_I type:#maxObject PT_Talon_FK_I type:#maxObject ) --El rollout es la interfaz grafica que el animador va a usar rollout LEGControls_I "LEG_CONTROLS" width:160 height:320 ( GroupBox Grp_Blending "LegControls" pos:[8,8] width:144 height:160 button UI_Btn_ik "IK" pos:[19,51] width:48 height:16 button UI_Btn_FK "FK" pos:[18,30] width:48 height:16 button btn_ResetValues "ResetValues" pos:[74,30] width:73 height:38 spinner UI_blending "FK/IK Blending" pos:[41,73] width:104 height:16 range:[0,1,0] spinner UI_Autostretch "AutoStretch" pos:[57,96] width:88 height:16 range:[0,1,0] spinner UI_StretchFactor "StretchFactor" pos:[49,120] width:96 height:16 range:[0,1,0] spinner UI_FK_Stretch "FK_Stretch" pos:[49,140] width:96 height:16 range:[0,100,0] on btn_ResetValues pressed do ( UI_blending.value =0 UI_Autostretch.value =0 UI_StretchFactor.value=0 ) on UI_Btn_ik pressed do with undo on ( --Alinea Posicion de MainControlerIK a Fk CTRL_PIERNA_I.node.position= SNAP_PT_FK_LEG_I.node.position --Alinea Rotacion de MainControler Ik a FK in Coordsys SNAP_PT_FK_LEG_I.node CTRL_PIERNA_I.node.rotation = eulerangles 0 0 0 --Alinea Posicion del swivel Angle SwivelIK_leg_I.node.position = Swivel_FK_LEG_I.node.position --Alinea rotacion del IK Toe in coordsys PIERNA_FK_5.node Circ_CTRL_TOE_I.node.rotation = eulerangles 0 0 0 --Alinea la rotacion del ctrl del ball in coordsys PT_Ball_FK_I.node CTRL_BALL_I.node.rotation = eulerangles 0 0 0 --convierte los valores de FK_IKBlend a 100 CTRL_PIERNA_I.node.modifiers[#Attribute_Holder].LEGAttributes_I.Pr_blending =1 CTRL_PIERNA_I.node.modifiers[#Attribute_Holder].LEGAttributes_I.Pr_FK_Stretch = 0 ) on UI_Btn_FK pressed do with undo on ( --Convierte los valores de FK_IKBlend a 0 -- CTRL_PIERNA_I.node.modifiers[#Attribute_Holder].LEGAttributes_I.Pr_blending =0 --CTRL_IK_I.node.modifiers[#Attribute_Holder].ArmAttributes_I.Pr_Autostretch =0 --alinea rotacion de UpperlegFK A IK in Coordsys PIERNA_IK_2.node PIERNA_FK_2.node.rotation =eulerangles 0 0 0 --alinea rotacion de lowerLegFK a IK in Coordsys PIERNA_IK_3.node PIERNA_FK_3.node.rotation = eulerangles 0 0 0 --alinea Ball to ballIK in Coordsys PIERNA_IK_4.node PIERNA_FK_4.node.rotation = eulerangles 0 0 0 --alinea TOE to ballIK in Coordsys PIERNA_IK_5.node PIERNA_FK_5.node.rotation = eulerangles 0 0 0 --alinea nub to ballIK in Coordsys PIERNA_IK_6.node PIERNA_FK_6.node.rotation = eulerangles 0 0 0 -- if EXPOSE_Arm_I.node.distance > (UpperArmD_FK.node.length + LowerArmD_FK.node.length) then ( -- CTRL_IK_I.node.modifiers[#Attribute_Holder].ArmAttributes_I.Pr_FK_Stretch = (EXPOSE_Arm_I.node.distance-(UpperArmD_FK.node.length + LowerArmD_FK.node.length))/2) -- else 0 ) ) ) --esta es la funcion para añadir el rollout al modificador del objeto control custAttributes.add CTRL_PIERNA_I.attribute_Holder LEGAttributes_Plantilla_I custAttributes.add PIERNA_FK[2].attribute_Holder LEGAttributes_Plantilla_I custAttributes.add PIERNA_FK[3].attribute_Holder LEGAttributes_Plantilla_I custAttributes.add PIERNA_FK[4].attribute_Holder LEGAttributes_Plantilla_I custAttributes.add PIERNA_FK[5].attribute_Holder LEGAttributes_Plantilla_I --añade los objetos al type node ModificadorPie_I.PIERNA_FK_2 =(nodeTransformMonitor node:PIERNA_FK[2] forwardTransformChangeMsgs:false) ModificadorPie_I.PIERNA_FK_3 =(nodeTransformMonitor node:PIERNA_FK[3] forwardTransformChangeMsgs:false) ModificadorPie_I.PIERNA_FK_4 =(nodeTransformMonitor node:PIERNA_FK[4] forwardTransformChangeMsgs:false) ModificadorPie_I.PIERNA_FK_5 =(nodeTransformMonitor node:PIERNA_FK[5] forwardTransformChangeMsgs:false) ModificadorPie_I.PIERNA_FK_6 =(nodeTransformMonitor node:PIERNA_FK[6] forwardTransformChangeMsgs:false) ModificadorPie_I.PIERNA_IK_2 =(nodeTransformMonitor node:PIERNA_IK[2] forwardTransformChangeMsgs:false) ModificadorPie_I.PIERNA_IK_3 =(nodeTransformMonitor node:PIERNA_IK[3] forwardTransformChangeMsgs:false) ModificadorPie_I.PIERNA_IK_4 =(nodeTransformMonitor node:PIERNA_IK[4] forwardTransformChangeMsgs:false) ModificadorPie_I.PIERNA_IK_5 =(nodeTransformMonitor node:PIERNA_IK[5] forwardTransformChangeMsgs:false) ModificadorPie_I.PIERNA_IK_6 =(nodeTransformMonitor node:PIERNA_IK[6] forwardTransformChangeMsgs:false) ModificadorPie_I.SwivelIK_leg_I =(nodeTransformMonitor node:SwivelIK_leg_I forwardTransformChangeMsgs:false) ModificadorPie_I.Swivel_FK_LEG_I =(nodeTransformMonitor node:Swivel_FK_LEG_I forwardTransformChangeMsgs:false) ModificadorPie_I.SNAP_PT_FK_LEG_I =(nodeTransformMonitor node:SNAP_PT_FK_LEG_I forwardTransformChangeMsgs:false) ModificadorPie_I.CTRL_PIERNA_I =(nodeTransformMonitor node:CTRL_PIERNA_I forwardTransformChangeMsgs:false) ModificadorPie_I.Circ_CTRL_TOE_I =(nodeTransformMonitor node:Circ_CTRL_TOE_I forwardTransformChangeMsgs:false) ModificadorPie_I.PT_Ball_FK_I =(nodeTransformMonitor node:PT_Ball_FK_I forwardTransformChangeMsgs:false) ModificadorPie_I.CTRL_BALL_I =(nodeTransformMonitor node:CTRL_BALL_I forwardTransformChangeMsgs:false) ModificadorPie_I.PT_Talon_FK_I =(nodeTransformMonitor node:PT_Talon_FK_I forwardTransformChangeMsgs:false) --AÑADE EL ORIENTATION COSNTRAINT AL UPPERARM MAIN orientacionUpperLEG= orientation_Constraint() PIERNA_MAIN[2].rotation.controller = orientacionUpperLEG controlUpperLEG_I= PIERNA_MAIN[2].rotation.controller controlUpperLEG_I.appendTarget PIERNA_IK[2] 1 controlUpperLEG_I.appendTarget PIERNA_FK[2] 1 paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[2].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[2].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL LOWER MAIN orientacionLowerLEG= orientation_Constraint() PIERNA_MAIN[3].rotation.controller = orientacionLowerLEG controlLowerLEG_I= PIERNA_MAIN[3].rotation.controller controlLowerLEG_I.appendTarget PIERNA_IK[3] 1 controlLowerLEG_I.appendTarget PIERNA_FK[3] 1 paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[3].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[3].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL BALL MAIN orientacionBallLEG= orientation_Constraint() PIERNA_MAIN[4].rotation.controller = orientacionBallLEG controlBallLEG_I= PIERNA_MAIN[4].rotation.controller controlBallLEG_I.appendTarget PIERNA_IK[4] 1 controlBallLEG_I.appendTarget PIERNA_FK[4] 1 paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[4].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[4].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL BALL MAIN orientacionBallLEG= orientation_Constraint() PIERNA_MAIN[5].rotation.controller = orientacionBallLEG controlBallLEG_I= PIERNA_MAIN[5].rotation.controller controlBallLEG_I.appendTarget PIERNA_IK[5] 1 controlBallLEG_I.appendTarget PIERNA_FK[5] 1 paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[5].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[5].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" --AÑADE EL ORIENTATION COSNTRAINT AL BALL MAIN orientacionBallLEG= orientation_Constraint() PIERNA_MAIN[6].rotation.controller = orientacionBallLEG controlBallLEG_I= PIERNA_MAIN[6].rotation.controller controlBallLEG_I.appendTarget PIERNA_IK[6] 1 controlBallLEG_I.appendTarget PIERNA_FK[6] 1 paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[6].rotation.controller[#Orientation_Weight_0] "Pr_blending" paramWire.connect CTRL_PIERNA_I.modifiers[#Attribute_Holder].LEGAttributes_I[#Pr_blending] PIERNA_MAIN[6].rotation.controller[#Orientation_Weight_1] "1-Pr_blending" ) else 0 ) --try (destroydialog AUTOLEG) catch () rollout AUTOLEG "LEGS IK/FK" ( GROUP "LEGS NAME" ( label lb_prefijo "Prefijo" --pos:[24,16] width:78 height:12 editText UI_Prefijo "" --pos:[16,32] width:98 height:20 spinner UI_ANCHO "Ancho" range: [2,100,3] spinner UI_ALTO "Alto" range: [2,100,3] ) radioButtons UI_LEGS "Legs" width:69 height:46 labels:#("Leg Right", "Leg Left") default:1 columns:1 group "Creacion" ( button UI_createPoints "Create Points" --pos:[32,152] width:88 height:24 pickbutton btn_PARENT "LEGS PARENT" button UI_CreateLeg "Create Leg" --pos:[32,184] width:88 height:24 ) on UI_createPoints pressed do with undo on ( case UI_LEGS.state of ( 1:(CreatePointsD (UI_Prefijo.text)) 2:(CreatePointsI (UI_Prefijo.text)) ) ) on btn_PARENT picked objeto do ( btn_PARENT.text= objeto.name global Objeto_Padre= btn_PARENT.object ) on UI_CreateLeg pressed do with undo on ( case UI_LEGS.state of ( 1:( CreaHuesosD ((UI_ANCHO.value)*2) ((UI_ALTO.value)*2) false false false 90 red off ("IK") (true) (false) (false) (btn_PARENT.object) (UI_Prefijo.text) for o= 1 to PUNTOS_D.count do ( delete PUNTOS_D[o] ) --IK_LEG_2_D.transform.controller.SAParent = 0 ) 2:( CreaHuesosI ((UI_ANCHO.value)*2) ((UI_ALTO.value)*2) false false false 90 red off ("IK") (true) (false) (false) (btn_PARENT.object) (UI_Prefijo.text) for o= 1 to PUNTOS_I.count do ( delete PUNTOS_I[o] ) --IK_LEG_2_I.transform.controller.SAParent = 0 ) ) ) ) --createDialog AUTOLEG ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- RL_SPINE_ON_BONE ) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --CREA LA PIERNA SOLO IK ( fn CreatePointsD Nombre= ( global PUNTOS_D = #() global BASE_CADERA_D = point name: (Nombre + "_" + "PT_Base_Cadera_D") pos: [40,0,135] size: 5 wirecolor: green append PUNTOS_D BASE_CADERA_D global CADERA_D = point name: (Nombre + "_" + "PT_Cadera_D") pos: [40,0,120] size: 5 wirecolor: green CADERA_D.parent = BASE_CADERA_D append PUNTOS_D CADERA_D global RODILLA_D = point name: (Nombre + "_" + "PT_Rodilla_D") pos: [40,-10,60] size: 5 wirecolor: green RODILLA_D.parent = CADERA_D append PUNTOS_D RODILLA_D global TOBILLO_D = point name: (Nombre + "_" + "PT_Tobillo_D") pos: [40,0,10] size: 5 wirecolor: green TOBILLO_D.parent = RODILLA_D append PUNTOS_D TOBILLO_D global BALL_D = point name: (Nombre + "_" + "PT_Ball_D") pos: [40,-15,0] size: 5 wirecolor: green BALL_D.parent = TOBILLO_D append PUNTOS_D BALL_D global TOE_D = point name: (Nombre + "_" + "PT_Toe_D") pos: [40,-25,0] size: 5 wirecolor: green TOE_D.parent = BALL_D append PUNTOS_D TOE_D global TOE_END_D = point name: (Nombre + "_" + "PT_Toe_end_D") pos: [40,-28,0] size: 5 wirecolor: green TOE_END_D.parent = TOE_D append PUNTOS_D TOE_END_D global CTRL_TOE_D= point name: (Nombre + "_" + "PT_Ctrl_Toe_D") pos: [40,-25,20] size: 5 wirecolor: red CTRL_TOE_D.PARENT = TOE_D global CTRL_PUNTA_D = point name: (Nombre + "_" + "PT_Ctrl_Punta_D") pos: [40,-28,-5] size: 5 wirecolor: red CTRL_PUNTA_D.PARENT = TOE_D global CTRL_TALON_D = point name: (Nombre + "_" + "PT_Ctrl_Talon_D") pos: [40,0,-5] size: 5 wirecolor: red CTRL_TALON_D.PARENT = TOBILLO_D --for o= 1 to PUNTOS_D.count do print (PUNTOS_D[o].name) ) fn CreatePointsI Nombre= ( global PUNTOS_I = #() global BASE_CADERA_I = point name: (Nombre + "_" + "PT_Base_Cadera_I") pos: BASE_CADERA_D.pos size: 5 wirecolor: green append PUNTOS_I BASE_CADERA_I global CADERA_I = point name: (Nombre + "_" + "PT_Cadera_I") pos: CADERA_D.pos size: 5 wirecolor: green CADERA_I.PARENT = BASE_CADERA_I append PUNTOS_I CADERA_I global RODILLA_I = point name: (Nombre + "_" + "PT_Rodilla_I") pos: RODILLA_D.POS size: 5 wirecolor: green RODILLA_I.PARENT = CADERA_I append PUNTOS_I RODILLA_I global TOBILLO_I = point name: (Nombre + "_" + "PT_Tobillo_I") pos: TOBILLO_D.POS size: 5 wirecolor: green TOBILLO_I.PARENT = RODILLA_I append PUNTOS_I TOBILLO_I global BALL_I = point name: (Nombre + "_" + "PT_Ball_I") pos: BALL_D.POS size: 5 wirecolor: green BALL_I.PARENT = TOBILLO_I append PUNTOS_I BALL_I global TOE_I = point name: (Nombre + "_" + "PT_Toe_I") pos: TOE_D.POS size: 5 wirecolor: green TOE_I.PARENT = BALL_I append PUNTOS_I TOE_I global TOE_END_I = point name: (Nombre + "_" + "PT_Toe_end_I") pos: TOE_END_D.POS size: 5 wirecolor: green TOE_END_I.parent = TOE_I append PUNTOS_I TOE_END_I global CTRL_TOE_I= point name: (Nombre + "_" + "PT_Ctrl_Toe_I") pos: CTRL_TOE_D.POS size: 5 wirecolor: red CTRL_TOE_I.PARENT = TOE_I global CTRL_PUNTA_I = point name: (Nombre + "_" + "PT_Ctrl_Punta_I") pos: CTRL_PUNTA_D.POS size: 5 wirecolor: red CTRL_PUNTA_I.PARENT = TOE_I global CTRL_TALON_I = point name: (Nombre + "_" + "PT_Ctrl_Talon_I") pos: CTRL_TALON_D.POS size: 5 wirecolor: red CTRL_TALON_I.PARENT = TOBILLO_I BASE_CADERA_I.transform =BASE_CADERA_I.transform * (ScaleMatrix [-1,1,1]) for o= 1 to PUNTOS_I.count do print (PUNTOS_I[o].name) ) fn CreaHuesosD ANCHO ALTO SIDES FRONTS BACKS TAPERSITO COLORES BOXMODE TIPO_CADENA IK_S NOMBRE= ( PIERNA_D = #() for i= 1 to ((PUNTOS_D.count)-1) do ( HUESOS_PIERNA_D = bonesys.createbone (PUNTOS_D[i].pos) (PUNTOS_D[i+1].pos) (cross PUNTOS_D[I].dir [1,0,0]) HUESOS_PIERNA_D.width = ANCHO HUESOS_PIERNA_D.height = ALTO HUESOS_PIERNA_D.sidefins =SIDES HUESOS_PIERNA_D.frontfin= FRONTS HUESOS_PIERNA_D.backfin=BACKS HUESOS_PIERNA_D.name = (NOMBRE + "_Bn_"+TIPO_CADENA + i as string + "_D") HUESOS_PIERNA_D.Taper=TAPERSITO HUESOS_PIERNA_D.wirecolor=COLORES HUESOS_PIERNA_D.boxmode= BOXMODE append PIERNA_D HUESOS_PIERNA_D ) for i= 1 to (PIERNA_D.count) do ( if PIERNA_D[i] != PIERNA_D[1] then PIERNA_D[i].parent = PIERNA_D[i-1] ) --TODO LO CORRESPONDIENTE AL IK if IK_S== true then ( --CREA EL SWIVLE SwivelIK_leg_D= circle pos: PIERNA_D[3].pos name:(NOMBRE + "_"+"SwivelIK_Leg_D") radius: 5 move SwivelIK_leg_D [0,-30,0] --CREA EL IK 1 IK_LEG_1_D = IKSys.ikChain PIERNA_D[2] PIERNA_D[4] "IKHISolver" IK_LEG_1_D.name = (NOMBRE + "_ik_chain_" as string + "IK_LEG_1_D") IK_LEG_1_D.transform.controller.VHTarget = SwivelIK_leg_D --CREA EL IK 2 IK_LEG_2_D = IKSys.ikChain PIERNA_D[4] PIERNA_D[5] "IKHISolver" IK_LEG_2_D.name = (NOMBRE + "_ik_chain_" as string + "IK_LEG_2_D") --IK_LEG_2_D.transform.controller.SAParent = 0 --CREA EL IK 2 IK_LEG_3_D = IKSys.ikChain PIERNA_D[5] PIERNA_D[6] "IKHISolver" IK_LEG_3_D.name = (NOMBRE + "_ik_chain_" + i as string + "IK_LEG_3_D") --CREA EL CONTROL DEL TOBILLO CTRL_TOBILLO= circle radius:(ANCHO *1) pos: PIERNA_D[4].pos name:(NOMBRE + "_"+"Ctrl_Tobillo" + "_D") in coordsys PIERNA_D[4] CTRL_TOBILLO.rotation = eulerangles 0 0 0 --CREA EL CONTROL DEL BALL CTRL_BALL_D= circle radius:(ANCHO *1) pos: PIERNA_D[5].pos name:(NOMBRE + "_"+"Ctrl_Ball" + "_D") in coordsys PIERNA_D[5] CTRL_BALL_D.rotation = eulerangles 0 0 0 --CREA EL CONTROL GENERAL DEL PIE CTRL_PIERNA_D= rectangle length:50 width:25 pos:CTRL_TALON_D.pos name:(NOMBRE +"_"+ "Ctrl_PIE_IK" + "_D") --CREA EL CONTROL DEL TOE Circ_CTRL_TOE_D = circle radius:(ANCHO *1) pos: CTRL_TOE_D.pos name:(NOMBRE + "_"+"Ctrl_Toe" + "_D") --CREA EL CONTROL DE LA PUNTA Circ_CTRL_PUNTA_D= circle radius:(ANCHO *1) pos: CTRL_PUNTA_D.pos name:(NOMBRE + "_"+"Ctrl_Punta" + "_D") --CREA EL CONTROL DEK TALON Circ_CTRL_TALON_D= circle radius:(ANCHO *1) pos: CTRL_TALON_D .pos name:(NOMBRE + "_"+"Ctrl_Talon" + "_D") --CAMBIA EL PIVOTE DEL CTRL TOE Circ_CTRL_TOE_D.pivot = PIERNA_D[5].pos --LINKEA EL CTRL TOE A CTRL PUNTA Circ_CTRL_TOE_D.parent = Circ_CTRL_PUNTA_D --LINKEA CTRL BALL A CTRL PUNTA CTRL_BALL_D.parent = Circ_CTRL_PUNTA_D --LINKEA CTRL PUNTA A CONTROL TALON Circ_CTRL_PUNTA_D.parent = Circ_CTRL_TALON_D --LINKEA CONTROL TALON A CONTROL TOBILLO Circ_CTRL_TALON_D.parent= CTRL_TOBILLO --linkea el iksolver 1 al control ball IK_LEG_1_D.parent = CTRL_BALL_D --LINKEA EL IKSOLVER 2 AL CTRL TOE IK_LEG_2_D.parent = Circ_CTRL_PUNTA_D --linkea el iksolver 3 al control punta IK_LEG_3_D.parent = Circ_CTRL_TOE_D --linkea el control tobillo al rectangulo CTRL_TOBILLO.parent =CTRL_PIERNA_D --AÑADE LOS CUSTOM ATTRIBUTES ModificadorPie_D= emptymodifier() addmodifier CTRL_PIERNA_D ModificadorPie_D ) else 0 ) fn CreaHuesosI ANCHO ALTO SIDES FRONTS BACKS TAPERSITO COLORES BOXMODE TIPO_CADENA IK_S NOMBRE= ( PIERNA_I = #() for i= 1 to ((PUNTOS_I.count)-1) do ( HUESOS_PIERNA_I = bonesys.createbone (PUNTOS_I[i].pos) (PUNTOS_I[i+1].pos) (cross PUNTOS_I[i].dir [1,0,0]) HUESOS_PIERNA_I.width = ANCHO HUESOS_PIERNA_I.height = ALTO HUESOS_PIERNA_I.sidefins =SIDES HUESOS_PIERNA_I.frontfin= FRONTS HUESOS_PIERNA_I.backfin=BACKS HUESOS_PIERNA_I.name = (NOMBRE + "_Bn_"+TIPO_CADENA + i as string + "_I") HUESOS_PIERNA_I.Taper=TAPERSITO HUESOS_PIERNA_I.wirecolor=COLORES HUESOS_PIERNA_I.boxmode= BOXMODE append PIERNA_I HUESOS_PIERNA_I ) for i= 1 to (PIERNA_I.count) do ( if PIERNA_I[i] != PIERNA_I[1] then PIERNA_I[i].parent = PIERNA_I[i-1] ) --TODO LO CORRESPONDIENTE AL IK if IK_S== true then ( --CREA EL SWIVLE SwivelIK_leg_I= circle pos: PIERNA_I[3].pos name:(NOMBRE + "_"+"SwivelIK_Leg_I") radius: 5 move SwivelIK_leg_I [0,-30,0] --CREA EL IK 1 IK_LEG_1_I = IKSys.ikChain PIERNA_I[2] PIERNA_I[4] "IKHISolver" IK_LEG_1_I.name = (NOMBRE + "_ik_chain_" as string + "IK_LEG_1_I") IK_LEG_1_I.transform.controller.VHTarget = SwivelIK_leg_I --CREA EL IK 2 IK_LEG_2_I = IKSys.ikChain PIERNA_I[4] PIERNA_I[5] "IKHISolver" IK_LEG_2_I.name = (NOMBRE + "_ik_chain_" as string + "IK_LEG_2_I") --IK_LEG_2_D.transform.controller.SAParent = 0 --CREA EL IK 2 IK_LEG_3_I = IKSys.ikChain PIERNA_I[5] PIERNA_I[6] "IKHISolver" IK_LEG_3_I.name = (NOMBRE + "_ik_chain_" + i as string + "IK_LEG_3_I") --CREA EL CONTROL DEL TOBILLO CTRL_TOBILLO_I= circle radius:(ANCHO *1) pos: PIERNA_I[4].pos name:(NOMBRE + "_"+"Ctrl_Tobillo" + "_I") in coordsys PIERNA_I[4] CTRL_TOBILLO_I.rotation = eulerangles 0 0 0 --CREA EL CONTROL DEL BALL CTRL_BALL_I= circle radius:(ANCHO *1) pos: PIERNA_I[5].pos name:(NOMBRE + "_"+"Ctrl_Ball" + "_I") in coordsys PIERNA_I[5] CTRL_BALL_I.rotation = eulerangles 0 0 0 --CREA EL CONTROL GENERAL DEL PIE CTRL_PIERNA_I= rectangle length:50 width:25 pos:CTRL_TALON_I.pos name:(NOMBRE +"_"+ "Ctrl_PIE_IK" + "_I") --CREA EL CONTROL DEL TOE Circ_CTRL_TOE_I = circle radius:(ANCHO *1) pos: CTRL_TOE_I.pos name:(NOMBRE + "_"+"Ctrl_Toe" + "_I") --CREA EL CONTROL DE LA PUNTA Circ_CTRL_PUNTA_I= circle radius:(ANCHO *1) pos: CTRL_PUNTA_I.pos name:(NOMBRE + "_"+"Ctrl_Punta" + "_I") --CREA EL CONTROL DEK TALON Circ_CTRL_TALON_I= circle radius:(ANCHO *1) pos: CTRL_TALON_I .pos name:(NOMBRE + "_"+"Ctrl_Talon" + "_I") --CAMBIA EL PIVOTE DEL CTRL TOE Circ_CTRL_TOE_I.pivot = PIERNA_I[5].pos --LINKEA EL CTRL TOE A CTRL PUNTA Circ_CTRL_TOE_I.parent = Circ_CTRL_PUNTA_I --LINKEA CTRL BALL A CTRL PUNTA CTRL_BALL_I.parent = Circ_CTRL_PUNTA_I --LINKEA CTRL PUNTA A CONTROL TALON Circ_CTRL_PUNTA_I.parent = Circ_CTRL_TALON_I --LINKEA CONTROL TALON A CONTROL TOBILLO Circ_CTRL_TALON_I.parent= CTRL_TOBILLO_I --linkea el iksolver 1 al control ball IK_LEG_1_I.parent = CTRL_BALL_I --LINKEA EL IKSOLVER 2 AL CTRL TOE IK_LEG_2_I.parent = Circ_CTRL_PUNTA_I --linkea el iksolver 3 al control punta IK_LEG_3_I.parent = Circ_CTRL_TOE_I --linkea el control tobillo al rectangulo CTRL_TOBILLO_I.parent =CTRL_PIERNA_I --AÑADE LOS CUSTOM ATTRIBUTES ModificadorPie_I= emptymodifier() addmodifier CTRL_PIERNA_I ModificadorPie_I ) else 0 ) try (destroydialog AUTOLEG) catch () rollout AUTOLEG_IK "AUTO LEG IK" ( label lb_prefijo "Prefijo" --pos:[24,16] width:78 height:12 editText UI_Prefijo "" --pos:[16,32] width:98 height:20 spinner UI_ANCHO "Ancho" range: [0.01,100,3] spinner UI_ALTO "Alto" range: [0.01,100,3] radioButtons UI_LEGS "Legs" width:69 height:46 labels:#("Leg Right", "Leg Left") default:1 columns:1 group "Creacion" ( button UI_createPoints "Create Points" --pos:[32,152] width:88 height:24 button UI_CreateLeg "Create Leg" --pos:[32,184] width:88 height:24 ) on UI_createPoints pressed do with undo on ( case UI_LEGS.state of ( 1:(CreatePointsD (UI_Prefijo.text)) 2:(CreatePointsI (UI_Prefijo.text)) ) ) on UI_CreateLeg pressed do with undo on ( case UI_LEGS.state of ( 1:( --CREACION FK --CreaHuesosD (UI_ANCHO.value) (UI_ALTO.value) false true true 0 blue off ("FK") (false) (UI_Prefijo.text) --CREACION IK CreaHuesosD ((UI_ANCHO.value)*2) ((UI_ALTO.value)*2) false false false 90 red off ("IK") (true) (UI_Prefijo.text) --CREACION MAIN --CreaHuesosD (UI_ANCHO.value*1.3) (UI_ALTO.value*1.3) false false false 0 green off ("MAIN") (false) (UI_Prefijo.text) ) 2:( --CREACION FK --CreaHuesosI (UI_ANCHO.value) (UI_ALTO.value) false true true 0 blue off ("FK") (false) (UI_Prefijo.text) --CREACION IK CreaHuesosI ((UI_ANCHO.value)*2) ((UI_ALTO.value)*2) false false false 90 red off ("IK") (true) (UI_Prefijo.text) --CREACION MAIN --CreaHuesosI (UI_ANCHO.value*1.3) (UI_ALTO.value*1.3) false false false 0 green off ("MAIN") (false) (UI_Prefijo.text) ) ) ) ) --createDialog AUTOLEG_IK ) RolloutAutoRig_1 = NewRolloutFloater "AUTORIG WIP V.01" 300 100 addRollout RL_SPINE_ON_BONE RolloutAutoRig_1 rolledUp:TRUE addRollout AutoBrazo RolloutAutoRig_1 rolledUp:TRUE addRollout AUTOLEG RolloutAutoRig_1 rolledUp:TRUE addRollout AUTOLEG_IK RolloutAutoRig_1 rolledUp:TRUE