/
RdMAutoLegs.py
464 lines (338 loc) · 25.5 KB
/
RdMAutoLegs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
'''
09/10/18
RdMAutoLegs v1.0
By Esteban Rodriguez
www.renderdemartes.com
info@renderdemartes.com
import RdMAutoLegs
reload (RdMAutoLegs)
'''
from maya import cmds
if cmds.window ("AutoLegs", exists = True):
cmds.deleteUI ("AutoLegs")
###JOINTS LOCATORS
jointsNum = 4
def LocatorsBtn(*args):
for X in range (jointsNum):
cmds.select (clear = True)
cmds.CreateLocator ()
cmds.move (0,2.5*X, 0)
cmds.select (clear = True)
cmds.rename ("locator4","L_Leg_LOC")
cmds.rename ("locator3","L_Knee_LOC")
cmds.rename ("locator2","L_Ankle_LOC")
cmds.rename ("locator1","L_Heel_LOC")
cmds.duplicate ('L_Heel_LOC', n= 'L_EndFoot_LOC')
cmds.duplicate ('L_Heel_LOC', n= 'L_Ball_Loc')
cmds.move (0,0,3, 'L_Ball_Loc' )
cmds.move (0,0,5, 'L_EndFoot_LOC' )
cmds.move (0,5,0.3, 'L_Knee_LOC')
cmds.select (clear = True)
def JointsBtn(*args):
cmds.rename ("L_Leg_LOC","locator1")
cmds.rename ("L_Knee_LOC","locator2")
cmds.rename ("L_Ankle_LOC","locator3")
cmds.rename ("L_Ball_Loc","locator4")
cmds.rename ("L_EndFoot_LOC","locator5")
cmds.rename ("L_Heel_LOC","locator6")
cmds.select (cl=True)
for X in range (1,jointsNum + 2):
cmds.joint (n = "L_leg_" + str(X))
cmds.select ("L_leg_" + str(X))
cmds.pointConstraint ("locator" + str (X) , "L_leg_" + str(X))
cmds.delete ("L_leg_" + str(X) + "_pointConstraint1")
cmds.setAttr ("L_leg_" + str(X) + ".displayLocalAxis", 1)
cmds.select (clear = True)
for X in range (6,2,-1):
cmds.joint (n = "Reverse_Foot_" + str(X))
cmds.pointConstraint ("locator" + str (X) , "Reverse_Foot_" + str(X))
cmds.delete ("Reverse_Foot_" + str(X) + "_pointConstraint1")
cmds.delete ("locator" + str (X))
cmds.delete ('locator1','locator2')
cmds.rename ('Reverse_Foot_6','L_RF_Heel')
cmds.rename ('Reverse_Foot_5','L_RF_Fingers')
cmds.rename ('Reverse_Foot_4','L_RF_Ball')
cmds.rename ('Reverse_Foot_3','L_RF_Ankle')
cmds.rename ('L_leg_1','L_Leg_JJ')
cmds.rename ('L_leg_2','L_Knee_JJ')
cmds.rename ('L_leg_3','L_Ankle_JJ')
cmds.rename ('L_leg_4','L_Ball_JJ')
cmds.rename ('L_leg_5','L_Fingers_JJ')
cmds.select ('L_Leg_JJ', 'L_Knee_JJ', 'L_Ankle_JJ', 'L_Ball_JJ', 'L_Fingers_JJ','L_RF_Ball')
cmds.joint(e= True, zso=True, oj= "yxz", sao = "zup", ch=True)
cmds.select ( 'L_RF_Heel', 'L_RF_Fingers', 'L_RF_Ankle')
cmds.joint(e= True, zso=True, oj= "xyz", sao = "zup", ch=True)
cmds.select (clear = True)
def IKFK(*args):
#Mirror Joints
cmds.select ( 'L_RF_Heel', 'L_RF_Fingers', 'L_RF_Ankle', 'L_Leg_JJ', 'L_Knee_JJ', 'L_Ankle_JJ', 'L_Ball_JJ', 'L_Fingers_JJ','L_RF_Ball')
HideAxis = cmds.ls( selection=True )
for jnt in HideAxis:
cmds.setAttr (jnt + ".displayLocalAxis", 0)
cmds.duplicate ("L_Leg_JJ", rc = True)
cmds.duplicate ("L_Leg_JJ", rc = True)
cmds.rename ("L_Leg_JJ1", "L_Leg_FK")
cmds.rename ("L_Knee_JJ1", "L_Knee_FK")
cmds.rename ("L_Ankle_JJ1", "L_Ankle_FK")
cmds.rename ("L_Ball_JJ1", "L_Ball_FK")
cmds.rename ("L_Fingers_JJ1", "L_Fingers_FK")
cmds.rename ("L_Leg_JJ2", "L_Leg_IK")
cmds.rename ("L_Knee_JJ2", "L_Knee_IK")
cmds.rename ("L_Ankle_JJ2", "L_Ankle_IK")
cmds.rename ("L_Ball_JJ2", "L_Ball_IK")
cmds.rename ("L_Fingers_JJ2", "L_Fingers_IK")
cmds.mirrorJoint ('L_Leg_JJ',mirrorYZ = True, mirrorBehavior = True, searchReplace=('L_', 'R_'))
cmds.mirrorJoint ('L_RF_Heel',mirrorYZ = True, mirrorBehavior = True, searchReplace=('L_', 'R_'))
cmds.mirrorJoint ('L_Leg_FK',mirrorYZ = True, mirrorBehavior = True, searchReplace=('L_', 'R_'))
cmds.mirrorJoint ('L_Leg_IK',mirrorYZ = True, mirrorBehavior = True, searchReplace=('L_', 'R_'))
#IK
GlobalMult = cmds.floatSliderGrp (RadioControlador, q = True, value = 2)
radio = GlobalMult
cmds.ikHandle (n="L_LegIKrp", sj="L_Leg_IK", ee= "L_Ankle_IK", sol='ikRPsolver')
cmds.ikHandle (n="L_AnkleIKsch", sj="L_Ankle_IK", ee= "L_Ball_IK", sol = 'ikSCsolver')
cmds.ikHandle (n="L_BallIKsch", sj="L_Ball_IK", ee= "L_Fingers_IK", sol = 'ikSCsolver')
cmds.ikHandle (n="R_LegIKrp", sj="R_Leg_IK", ee= "R_Ankle_IK", sol='ikRPsolver')
cmds.ikHandle (n="R_AnkleIKsch", sj="R_Ankle_IK", ee= "R_Ball_IK", sol = 'ikSCsolver')
cmds.ikHandle (n="R_BallIKsch", sj="R_Ball_IK", ee= "R_Fingers_IK", sol = 'ikSCsolver')
cmds.curve(n="L_LegIK_CC" , d=1, p=[(1, 1, 1),(1,1,-1) ,(1, -1, -1) ,(1, -1, 1) ,(-1, -1, 1) ,(-1, 1, 1) ,(1, 1, 1) ,(1, -1, 1) ,(-1, -1, 1) ,(-1, -1, -1) ,(-1, 1, -1) ,(1, 1, -1) ,(1, -1, -1) ,(-1, -1, -1) ,(-1, 1, -1) ,(-1, 1, 1)], k = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
cmds.group ("L_LegIK_CC", n= "L_LegIK_GRP")
cmds.pointConstraint ("L_Ball_JJ", "L_LegIK_GRP")
cmds.delete ("L_LegIK_GRP_pointConstraint1")
cmds.orientConstraint ("L_Ball_JJ", "L_LegIK_GRP")
cmds.delete ("L_LegIK_GRP_orientConstraint1")
cmds.duplicate ('L_LegIK_CC',n='R_LegIK_CC')
cmds.group ("R_LegIK_CC", n= "R_LegIK_GRP")
cmds.parent ('R_LegIK_GRP', w = True)
cmds.group(n = 'R_LegIK_GRP2', em = True)
cmds.parent ('R_LegIK_GRP','R_LegIK_GRP2')
cmds.setAttr('R_LegIK_GRP2.scaleX',-1)
cmds.scale(GlobalMult,GlobalMult,GlobalMult,'L_LegIK_GRP', r = True)
cmds.scale(GlobalMult,GlobalMult,GlobalMult,'R_LegIK_GRP', r = True)
cmds.setAttr ("L_LegIK_CC.overrideEnabled", 1)
cmds.setAttr ("R_LegIK_CC.overrideEnabled", 1)
cmds.setAttr ("L_LegIK_CC.overrideColor", 6)
cmds.setAttr ("R_LegIK_CC.overrideColor", 13)
#FK
GlobalMult = cmds.floatSliderGrp (RadioControlador, q = True, value = 2)
radio = GlobalMult
cmds.select ( 'L_Leg_FK', 'L_Knee_FK', 'L_Ankle_FK', 'R_Leg_FK', 'R_Knee_FK' ,'R_Ankle_FK','L_Ball_FK','R_Ball_FK')
FKCircle = cmds.ls( selection=True )
for FK in FKCircle:
cmds.circle (n= FK + str ('_CC'), r= radio, nr=(0, 1, 0))
cmds.group (n= FK + str ('_CC') + str ('GRP'))
cmds.pointConstraint (FK, FK + str ('_CC') + str ('GRP'), mo= False)
cmds.orientConstraint (FK, FK + str ('_CC') + str ('GRP'), mo= False)
cmds.delete (FK + str ('_CC') + str ('GRP')+str('_pointConstraint1'))
cmds.delete (FK + str ('_CC') + str ('GRP')+str('_orientConstraint1'))
cmds.orientConstraint (FK + str ('_CC'),FK , mo= True)
cmds.pointConstraint (FK + str ('_CC'),FK , mo= True)
cmds.setAttr (FK + str ('_CC')+ str ('Shape.overrideEnabled'), 1)
cmds.setAttr (FK + str ('_CC')+ str ('Shape.overrideColor'), 6)
cmds.setAttr ('R_Leg_FK_CCShape.overrideColor',13)
cmds.setAttr ('R_Knee_FK_CCShape.overrideColor',13)
cmds.setAttr ('R_Ankle_FK_CCShape.overrideColor',13)
cmds.setAttr ('R_Ball_FK_CCShape.overrideColor',13)
cmds.parent ('L_Knee_FK_CCGRP','L_Leg_FK_CC')
cmds.parent ('L_Ankle_FK_CCGRP','L_Knee_FK_CC')
cmds.parent ('L_Ball_FK_CCGRP','L_Ankle_FK_CC')
cmds.parent ('R_Knee_FK_CCGRP','R_Leg_FK_CC')
cmds.parent ('R_Ankle_FK_CCGRP','R_Knee_FK_CC')
cmds.parent ('R_Ball_FK_CCGRP','R_Ankle_FK_CC')
#ReverseFoot
cmds.parent ('L_RF_Heel','L_LegIK_CC')
cmds.parent ('L_LegIKrp','L_RF_Ankle')
cmds.parent ('L_AnkleIKsch','L_RF_Ball')
cmds.parent ('L_BallIKsch','L_RF_Fingers')
cmds.parent ('R_RF_Heel','R_LegIK_CC')
cmds.parent ('R_LegIKrp','R_RF_Ankle')
cmds.parent ('R_AnkleIKsch','R_RF_Ball')
cmds.parent ('R_BallIKsch','R_RF_Fingers')
cmds.addAttr ('L_LegIK_CC', ln= 'RollHeel', at= 'double' , dv = 0 )
cmds.setAttr ('L_LegIK_CC.RollHeel', k = True)
cmds.connectAttr ('L_LegIK_CC.RollHeel','L_RF_Heel.rotateZ')
cmds.addAttr ('L_LegIK_CC', ln= 'TwistHeel', at= 'double' , dv = 0 )
cmds.setAttr ('L_LegIK_CC.TwistHeel', k = True)
cmds.connectAttr ('L_LegIK_CC.TwistHeel','L_RF_Heel.rotateY')
cmds.addAttr ('L_LegIK_CC', ln= 'RollBall', at= 'double' , dv = 0 )
cmds.setAttr ('L_LegIK_CC.RollBall', k = True)
cmds.connectAttr ('L_LegIK_CC.RollBall','L_RF_Ball.rotateZ')
cmds.addAttr ('L_LegIK_CC', ln= 'TwistBall', at= 'double' , dv = 0 )
cmds.setAttr ('L_LegIK_CC.TwistBall', k = True)
cmds.connectAttr ('L_LegIK_CC.TwistBall','L_RF_Ball.rotateY')
cmds.addAttr ('L_LegIK_CC', ln= 'RollToe', at= 'double' , dv = 0 )
cmds.setAttr ('L_LegIK_CC.RollToe', k = True)
cmds.connectAttr ('L_LegIK_CC.RollToe','L_RF_Fingers.rotateZ')
cmds.addAttr ('R_LegIK_CC', ln= 'RollHeel', at= 'double' , dv = 0 )
cmds.setAttr ('R_LegIK_CC.RollHeel', k = True)
cmds.connectAttr ('R_LegIK_CC.RollHeel','R_RF_Heel.rotateZ')
cmds.addAttr ('R_LegIK_CC', ln= 'TwistHeel', at= 'double' , dv = 0 )
cmds.setAttr ('R_LegIK_CC.TwistHeel', k = True)
cmds.connectAttr ('R_LegIK_CC.TwistHeel','R_RF_Heel.rotateY')
cmds.addAttr ('R_LegIK_CC', ln= 'RollBall', at= 'double' , dv = 0 )
cmds.setAttr ('R_LegIK_CC.RollBall', k = True)
cmds.connectAttr ('R_LegIK_CC.RollBall','R_RF_Ball.rotateZ')
cmds.addAttr ('R_LegIK_CC', ln= 'TwistBall', at= 'double' , dv = 0 )
cmds.setAttr ('R_LegIK_CC.TwistBall', k = True)
cmds.connectAttr ('R_LegIK_CC.TwistBall','R_RF_Ball.rotateY')
cmds.addAttr ('R_LegIK_CC', ln= 'RollToe', at= 'double' , dv = 0 )
cmds.setAttr ('R_LegIK_CC.RollToe', k = True)
cmds.connectAttr ('R_LegIK_CC.RollToe','R_RF_Fingers.rotateZ')
#Pole Vector
cmds.polyPlane (n="LLeg_PV_Plane", sh = 1, sw= 1)
cmds.delete ("LLeg_PV_Plane.vtx[3]")
cmds.cluster ("LLeg_PV_Plane.vtx[0]", n= "LegCluster")
cmds.cluster ("LLeg_PV_Plane.vtx[1]" ,n= "KneeCluster")
cmds.cluster ("LLeg_PV_Plane.vtx[2]", n= "AnkleCluster")
cmds.pointConstraint ("L_Leg_JJ","LegClusterHandle")
cmds.pointConstraint ("L_Knee_JJ","KneeClusterHandle")
cmds.pointConstraint ("L_Ankle_JJ","AnkleClusterHandle")
P01X = cmds.getAttr("L_Leg_JJ.translateX")
P01Y = cmds.getAttr("L_Leg_JJ.translateY")
P01Z = cmds.getAttr("L_Leg_JJ.translateZ")
P02X = cmds.getAttr("L_Knee_JJ.translateX") + P01X
P02Y = cmds.getAttr("L_Knee_JJ.translateY") + P01Y
P02Z = cmds.getAttr("L_Knee_JJ.translateZ") + P01Z
P03X = cmds.getAttr("L_Ankle_JJ.translateX") + P02X
P03Y = cmds.getAttr("L_Ankle_JJ.translateY") + P02Y
P03Z = cmds.getAttr("L_Ankle_JJ.translateZ") + P02Z
P04X = cmds.getAttr("L_Fingers_JJ.translateX") + P03X
P04Y = cmds.getAttr("L_Fingers_JJ.translateY") + P03Y
P04Z = cmds.getAttr("L_Fingers_JJ.translateZ") + P03Z
cmds.moveVertexAlongDirection ("LLeg_PV_Plane.vtx[1]", v= P02X+(P02X/2))
PVposition = cmds.pointPosition ("LLeg_PV_Plane.vtx[1]")
cmds.circle (n="LLeg_PV01",nr=(0, 0, 1),r = radio/2)
cmds.circle (n="LLeg_PV02",nr=(0, 1, 0),r = radio/2)
cmds.circle (n="LLeg_PV03",nr=(1, 0, 0),r = radio/2)
cmds.parent ("LLeg_PV02Shape","LLeg_PV01",r= True, s= True)
cmds.parent ("LLeg_PV03Shape","LLeg_PV01",r= True, s= True)
cmds.delete ("LLeg_PV02","LLeg_PV03")
cmds.select ("LLeg_PV01")
cmds.group (n= "LLeg_PV01_GRP", r= True)
cmds.xform (t=PVposition)
cmds.duplicate ("LLeg_PV01_GRP", n= "RLeg_PV_GRP")
cmds.rename ("RLeg_PV_GRP|LLeg_PV01", "RLeg_PV01")
cmds.rename ("LLeg_PV01_GRP", "LLeg_PV0_GRP")
cmds.move(0, 0, 0, ".scalePivot",".rotatePivot", absolute=True)
cmds.setAttr ("RLeg_PV_GRP.scaleX", -1)
cmds.select ("LLeg_PV01","L_LegIKrp")
cmds.PoleVectorConstraint ()
cmds.select ("RLeg_PV01","R_LegIKrp")
cmds.PoleVectorConstraint ()
cmds.setAttr("RLeg_PV01Shape.overrideEnabled", True )
cmds.setAttr("RLeg_PV01Shape.overrideColor", 13 )
cmds.setAttr("RLeg_PV02Shape1.overrideEnabled", True )
cmds.setAttr("RLeg_PV02Shape1.overrideColor", 13 )
cmds.setAttr("RLeg_PV03Shape1.overrideEnabled", True )
cmds.setAttr("RLeg_PV03Shape1.overrideColor", 13 )
cmds.setAttr("LLeg_PV01Shape.overrideEnabled", True )
cmds.setAttr("LLeg_PV01Shape.overrideColor", 6 )
cmds.setAttr("LLeg_PV02Shape.overrideEnabled", True )
cmds.setAttr("LLeg_PV02Shape.overrideColor", 6 )
cmds.setAttr("LLeg_PV03Shape.overrideEnabled", True )
cmds.setAttr("LLeg_PV03Shape.overrideColor", 6 )
cmds.group ("LLeg_PV_Plane","LegClusterHandle","KneeClusterHandle","AnkleClusterHandle", n= "ExtrasAutoLegs")
cmds.setAttr ("ExtrasAutoLegs.visibility", 0)
#Switch IK FK
if cmds.objExists ("IK_FK_CC"):
print "CurveControl IKFK Exists"
else:
if cmds.objExists('makeTextCurves1'):
cmds.rename ('makeTextCurves1','makeTextCurves1LOL')
Texto = 'IK-FK'
Color = 16
Text = cmds.textCurves (n= Texto, t = Texto, o = True)
Lista= cmds.listRelatives (Text, ad = True)
Shape = Lista[1]
cmds.delete ('makeTextCurves1')
for Curva in Lista:
if cmds.objectType(str(Curva), isType='nurbsCurve'):
curvaPapa = cmds.listRelatives(Curva, p = True)
curvaAbuelo = cmds.listRelatives(curvaPapa, p = True)
DobleCurva = cmds.listRelatives(curvaAbuelo)
if len(DobleCurva)==2:
LetrasDobles.append (Curva)
else:
if not Shape == curvaPapa[0]:
cmds.makeIdentity (curvaAbuelo, a = True, t = True , r = True)
cmds.parent (Curva, Shape, r = True, s = True)
#Colores
cmds.setAttr (Curva+'.overrideEnabled', 1)
cmds.setAttr (Curva+'.overrideColor', Color)
cmds.parent (Shape,w=True)
cmds.rename(Shape, 'IK_FK_CC')
cmds.setAttr ("IK_FK_CC.overrideEnabled", 1)
cmds.setAttr ("IK_FK_CC.overrideColor", 16)
cmds.setAttr ('IK_FK_CC.rotateX', -90)
cmds.xform(cp= True)
cmds.setAttr ('IK_FK_CC.scaleX', GlobalMult)
cmds.setAttr ('IK_FK_CC.scaleY', GlobalMult)
cmds.setAttr ('IK_FK_CC.scaleZ', GlobalMult)
cmds.makeIdentity(a=True, t = True, r = True, s=True)
cmds.select ("IK_FK_CC")
cmds.addAttr (ln= "LeftLegIKFK", min=0, max=1)
cmds.setAttr ("IK_FK_CC.LeftLegIKFK", keyable = True)
cmds.select ("IK_FK_CC")
cmds.addAttr (ln= "RightLegIKFK", min=0, max=1)
cmds.setAttr ("IK_FK_CC.RightLegIKFK", keyable = True)
cmds.expression (n="L_Leg_Switch", s = "L_Leg_JJ.rotateX = (L_Leg_FK.rotateX* IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.rotateX*(1- IK_FK_CC.LeftLegIKFK)); \nL_Leg_JJ.rotateY = (L_Leg_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Leg_JJ.rotateZ = (L_Leg_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.rotateX = (L_Knee_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.rotateY = (L_Knee_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.rotateZ = (L_Knee_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.rotateX = (L_Ankle_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.rotateY = (L_Ankle_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.rotateZ = (L_Ankle_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.rotateX = (L_Ball_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.rotateY = (L_Ball_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.rotateZ = (L_Ball_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.rotateX = (L_Fingers_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.rotateY = (L_Fingers_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.rotateZ = (L_Fingers_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \n \nL_Leg_JJ.translateX = (L_Leg_FK.translateX* IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.translateX*(1- IK_FK_CC.LeftLegIKFK)); \nL_Leg_JJ.translateY = (L_Leg_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Leg_JJ.translateZ = (L_Leg_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.translateX = (L_Knee_FK.translateX*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.translateY = (L_Knee_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.translateZ = (L_Knee_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.translateX = (L_Ankle_FK.translateX*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.translateY = (L_Ankle_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.translateZ = (L_Ankle_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.translateX = (L_Ball_FK.translateX*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.translateY = (L_Ball_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.translateZ = (L_Ball_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.translateX = (L_Fingers_FK.translateX*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.translateY = (L_Fingers_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.translateZ = (L_Fingers_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \n \n \nL_Leg_FK_CC.visibility = IK_FK_CC.LeftLegIKFK; \nL_LegIK_CC.visibility = (1-IK_FK_CC.LeftLegIKFK); \nLLeg_PV01.visibility = (1-IK_FK_CC.LeftLegIKFK);" )
cmds.expression (n="R_Leg_Switch", s = "R_Leg_JJ.rotateX = (R_Leg_FK.rotateX* IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.rotateX*(1- IK_FK_CC.LeftLegIKFK)); \nR_Leg_JJ.rotateY = (R_Leg_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Leg_JJ.rotateZ = (R_Leg_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.rotateX = (R_Knee_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.rotateY = (R_Knee_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.rotateZ = (R_Knee_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.rotateX = (R_Ankle_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.rotateY = (R_Ankle_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.rotateZ = (R_Ankle_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.rotateX = (R_Ball_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.rotateY = (R_Ball_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.rotateZ = (R_Ball_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.rotateX = (R_Fingers_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.rotateY = (R_Fingers_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.rotateZ = (R_Fingers_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \n \nR_Leg_JJ.translateX = (R_Leg_FK.translateX* IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.translateX*(1- IK_FK_CC.LeftLegIKFK)); \nR_Leg_JJ.translateY = (R_Leg_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Leg_JJ.translateZ = (R_Leg_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.translateX = (R_Knee_FK.translateX*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.translateY = (R_Knee_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.translateZ = (R_Knee_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.translateX = (R_Ankle_FK.translateX*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.translateY = (R_Ankle_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.translateZ = (R_Ankle_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.translateX = (R_Ball_FK.translateX*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.translateY = (R_Ball_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.translateZ = (R_Ball_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.translateX = (R_Fingers_FK.translateX*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.translateY = (R_Fingers_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.translateZ = (R_Fingers_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \n \n \nR_Leg_FK_CC.visibility = IK_FK_CC.RightLegIKFK; \nR_LegIK_CC.visibility = (1-IK_FK_CC.RightLegIKFK); \nRLeg_PV01.visibility = (1-IK_FK_CC.RightLegIKFK);" )
# Grouping and Organizing
cmds.group ('L_Leg_JJ', 'L_Leg_FK', 'L_Leg_IK ','L_Leg_FK_CCGRP', n = 'L_Leg_Joints')
cmds.group ('R_Leg_JJ', 'R_Leg_FK', 'R_Leg_IK ','R_Leg_FK_CCGRP', n = 'R_Leg_Joints')
cmds.group ("L_LegIK_GRP", "LLeg_PV0_GRP", n="L_IKLeg_GRP")
cmds.group ("R_LegIK_GRP", "RLeg_PV_GRP", n="R_IKLeg_GRP")
cmds.group ("L_IKLeg_GRP", "R_IKLeg_GRP",'L_Leg_Joints','R_Leg_Joints',n= "Connect this to the rest of the rig")
cmds.group ('ExtrasAutoLegs',"Connect_this_to_the_rest_of_the_rig", n="RdM_AutoLEGS" )
cmds.select ('L_Ball_JJ', 'L_Ankle_JJ', 'L_Knee_JJ', 'L_Leg_JJ','R_Ball_JJ', 'R_Leg_JJ', 'R_Knee_JJ', 'R_Ankle_JJ')
cmds.sets (n= 'BindThisToLegs')
cmds.delete('R_LegIK_GRP2')
#Locking Attr
#FK
cmds.select ('R_Leg_FK_CC','R_Knee_FK_CC','R_Ankle_FK_CC','R_Ball_FK_CC','L_Leg_FK_CC','L_Knee_FK_CC','L_Ankle_FK_CC','L_Ball_FK_CC')
FK = cmds.ls(sl=True)
for T in FK:
cmds.setAttr(str(T)+'.translateX',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.translateY',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.translateZ',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.scaleX',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.scaleY',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.scaleZ',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.visibility',lock = True, keyable = False, channelBox = False)
#IK, Clavicule
cmds.select ('L_LegIK_CC', 'R_LegIK_CC')
IK = cmds.ls(sl=True)
for T in IK:
cmds.setAttr(str(T)+'.scaleX',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.scaleY',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.scaleZ',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.visibility',lock = True, keyable = False, channelBox = False)
#Pole Vector
cmds.select ('LLeg_PV01', 'RLeg_PV01')
PV = cmds.ls(sl=True)
for T in PV:
cmds.setAttr(str(T)+'.rotateX',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.rotateY',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.rotateZ',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.scaleX',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.scaleY',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.scaleZ',lock = True, keyable = False, channelBox = False)
cmds.setAttr(str(T)+'.visibility',lock = True, keyable = False, channelBox = False)
print ('Legs DONE')
#ImagesPaths
imagePath = cmds.internalVar(usd = True)
Path = imagePath + 'RdMTools/'
Icons = Path + 'icons/'
#Window
cmds.window( "AutoLegs", width=250, title="AutoLegs", toolbox = True )
cmds.columnLayout( adjustableColumn=True )
cmds.separator(h = 10)
cmds.symbolButton(image=Icons + 'Locator.png', c = LocatorsBtn)
cmds.separator(h = 10)
cmds.symbolButton(image=Icons + 'Joint.png', c = JointsBtn)
RadioControlador = cmds.floatSliderGrp (l = 'Size:', min = 1 , max = 20, field = True, v = 1, hlc = (0,0.2,0.5))
cmds.separator(h = 10)
cmds.button( label='Create IK FK Legs', command=IKFK, bgc = (0,0.2,0.5), h = 40)
cmds.separator(h = 10)
cmds.text( label='By: Render de Martes', fn ='fixedWidthFont')
cmds.text( label='info@renderdemartes.com', fn ='fixedWidthFont')
cmds.showWindow("AutoLegs")