本文整理汇总了Python中kraken.core.objects.ctrlSpace.CtrlSpace类的典型用法代码示例。如果您正苦于以下问题:Python CtrlSpace类的具体用法?Python CtrlSpace怎么用?Python CtrlSpace使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CtrlSpace类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: addFinger
def addFinger(self, name, data):
fingerCtrls = []
fingerJoints = []
parentCtrl = self.handCtrl
for i, joint in enumerate(data):
if i == 0:
jointName = name + 'Meta'
else:
jointName = name + str(i).zfill(2)
jointXfo = joint.get('xfo', Xfo())
jointCrvData = joint.get('curveData')
# Create Controls
newJointCtrlSpace = CtrlSpace(jointName, parent=parentCtrl)
newJointCtrl = Control(jointName, parent=newJointCtrlSpace, shape='square')
newJointCtrl.lockScale(True, True, True)
newJointCtrl.lockTranslation(True, True, True)
if jointCrvData is not None:
newJointCtrl.setCurveData(jointCrvData)
fingerCtrls.append(newJointCtrl)
# Create Deformers
jointDef = Joint(jointName, parent=self.defCmpGrp)
fingerJoints.append(jointDef)
# Create Constraints
# Set Xfos
newJointCtrlSpace.xfo = jointXfo
newJointCtrl.xfo = jointXfo
parentCtrl = newJointCtrl
# =================
# Create Operators
# =================
# Add Deformer KL Op
deformersToCtrlsKLOp = KLOperator(name + 'DeformerKLOp', 'MultiPoseConstraintSolver', 'Kraken')
self.addOperator(deformersToCtrlsKLOp)
# Add Att Inputs
deformersToCtrlsKLOp.setInput('drawDebug', self.drawDebugInputAttr)
deformersToCtrlsKLOp.setInput('rigScale', self.rigScaleInputAttr)
# Add Xfo Inputs
deformersToCtrlsKLOp.setInput('constrainers', fingerCtrls)
# Add Xfo Outputs
deformersToCtrlsKLOp.setOutput('constrainees', fingerJoints)
return deformersToCtrlsKLOp
示例2: __init__
def __init__(self, name='Clavicle', parent=None):
Profiler.getInstance().push("Construct Clavicle Rig Component:" + name)
super(FabriceClavicleRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Clavicle
self.clavicleCtrlSpace = CtrlSpace('clavicle', parent=self.ctrlCmpGrp)
self.clavicleCtrl = Control('clavicle', parent=self.clavicleCtrlSpace, shape="cube")
self.clavicleCtrl.alignOnXAxis()
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.ctrlCmpGrp.setComponent(self)
self.clavicleDef = Joint('clavicle', parent=defCmpGrp)
self.clavicleDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
clavicleInputConstraint = PoseConstraint('_'.join([self.clavicleCtrl.getName(), 'To', self.spineEndInputTgt.getName()]))
clavicleInputConstraint.setMaintainOffset(True)
clavicleInputConstraint.addConstrainer(self.spineEndInputTgt)
self.clavicleCtrlSpace.addConstraint(clavicleInputConstraint)
# Constraint outputs
clavicleConstraint = PoseConstraint('_'.join([self.clavicleOutputTgt.getName(), 'To', self.clavicleCtrl.getName()]))
clavicleConstraint.addConstrainer(self.clavicleCtrl)
self.clavicleOutputTgt.addConstraint(clavicleConstraint)
# ===============
# Add Splice Ops
# ===============
# Add Deformer Splice Op
spliceOp = KLOperator('clavicleDeformerKLOp', 'PoseConstraintSolver', 'Kraken')
self.addOperator(spliceOp)
# Add Att Inputs
spliceOp.setInput('drawDebug', self.drawDebugInputAttr)
spliceOp.setInput('rigScale', self.rigScaleInputAttr)
# Add Xfo Inputs
spliceOp.setInput('constrainer', self.clavicleOutputTgt)
# Add Xfo Outputs
spliceOp.setOutput('constrainee', self.clavicleDef)
Profiler.getInstance().pop()
示例3: insertCtrlSpace
def insertCtrlSpace(self, name=None):
"""Adds a CtrlSpace object above this object
Args:
name (string): optional name for this CtrlSpace, default is same as
this object
Returns:
object: New CtrlSpace object
"""
if name is None:
name = self.getName()
newCtrlSpace = CtrlSpace(name, parent=self.getParent())
if self.getParent() is not None:
self.getParent().removeChild(self)
self.setParent(newCtrlSpace)
newCtrlSpace.addChild(self)
newCtrlSpace.xfo = Xfo(self.xfo)
# To ensure that names of control spaces don't clash with controls and
# if they do, set's the control space's name back to what it was intended
if self.getName() == name:
newCtrlSpace.setName(name)
return newCtrlSpace
示例4: __init__
def __init__(self, name='Hand', parent=None):
Profiler.getInstance().push("Construct Hand Rig Component:" + name)
super(HandComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Hand
self.handCtrlSpace = CtrlSpace('hand', parent=self.ctrlCmpGrp)
self.handCtrl = Control('hand', parent=self.handCtrlSpace, shape="square")
self.handCtrl.rotatePoints(0, 0, 90.0)
self.handCtrl.lockScale(True, True, True)
self.handCtrl.lockTranslation(True, True, True)
# ==========
# Deformers
# ==========
self.deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=self.deformersLayer)
self.addItem('defCmpGrp', self.defCmpGrp)
self.handDef = Joint('hand', parent=self.defCmpGrp)
self.handDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
self.armEndInputConstraint = PoseConstraint('_'.join([self.handCtrlSpace.getName(), 'To', self.armEndInputTgt.getName()]))
self.armEndInputConstraint.setMaintainOffset(True)
self.armEndInputConstraint.addConstrainer(self.armEndInputTgt)
self.handCtrlSpace.addConstraint(self.armEndInputConstraint)
# Constraint outputs
self.handOutputConstraint = PoseConstraint('_'.join([self.handOutputTgt.getName(), 'To', self.handCtrl.getName()]))
self.handOutputConstraint.addConstrainer(self.handCtrl)
self.handOutputTgt.addConstraint(self.handOutputConstraint)
# Constraint deformers
self.handDefConstraint = PoseConstraint('_'.join([self.handDef.getName(), 'To', self.handCtrl.getName()]))
self.handDefConstraint.addConstrainer(self.handCtrl)
self.handDef.addConstraint(self.handDefConstraint)
Profiler.getInstance().pop()
示例5: __init__
def __init__(self, name='head', parent=None):
Profiler.getInstance().push("Construct Head Rig Component:" + name)
super(FabriceHeadRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Head Aim
self.headAimCtrlSpace = CtrlSpace('headAim', parent=self.ctrlCmpGrp)
self.headAimCtrl = Control('headAim', parent=self.headAimCtrlSpace, shape="sphere")
self.headAimCtrl.scalePoints(Vec3(0.35, 0.35, 0.35))
self.headAimCtrl.lockScale(x=True, y=True, z=True)
self.headAimUpV = Locator('headAimUpV', parent=self.headAimCtrl)
self.headAimUpV.setShapeVisibility(False)
# Head
self.headAim = Locator('headAim', parent=self.ctrlCmpGrp)
self.headAim.setShapeVisibility(False)
self.headCtrlSpace = CtrlSpace('head', parent=self.ctrlCmpGrp)
self.headCtrl = Control('head', parent=self.headCtrlSpace, shape="circle")
self.headCtrl.lockTranslation(x=True, y=True, z=True)
self.headCtrl.lockScale(x=True, y=True, z=True)
# Jaw
self.jawCtrlSpace = CtrlSpace('jawCtrlSpace', parent=self.headCtrl)
self.jawCtrl = Control('jaw', parent=self.jawCtrlSpace, shape="cube")
self.jawCtrl.lockTranslation(x=True, y=True, z=True)
self.jawCtrl.lockScale(x=True, y=True, z=True)
self.jawCtrl.setColor("orange")
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.addItem('defCmpGrp', self.defCmpGrp)
headDef = Joint('head', parent=defCmpGrp)
headDef.setComponent(self)
jawDef = Joint('jaw', parent=defCmpGrp)
jawDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
self.headToAimConstraint = PoseConstraint('_'.join([self.headCtrlSpace.getName(), 'To', self.headAim.getName()]))
self.headToAimConstraint.setMaintainOffset(True)
self.headToAimConstraint.addConstrainer(self.headAim)
self.headCtrlSpace.addConstraint(self.headToAimConstraint)
# Constraint inputs
self.headAimInputConstraint = PoseConstraint('_'.join([self.headAimCtrlSpace.getName(), 'To', self.headBaseInputTgt.getName()]))
self.headAimInputConstraint.setMaintainOffset(True)
self.headAimInputConstraint.addConstrainer(self.headBaseInputTgt)
self.headAimCtrlSpace.addConstraint(self.headAimInputConstraint)
# # Constraint outputs
self.headOutputConstraint = PoseConstraint('_'.join([self.headOutputTgt.getName(), 'To', self.headCtrl.getName()]))
self.headOutputConstraint.addConstrainer(self.headCtrl)
self.headOutputTgt.addConstraint(self.headOutputConstraint)
self.jawOutputConstraint = PoseConstraint('_'.join([self.jawOutputTgt.getName(), 'To', self.jawCtrl.getName()]))
self.jawOutputConstraint.addConstrainer(self.jawCtrl)
self.jawOutputTgt.addConstraint(self.jawOutputConstraint)
# ==============
# Add Operators
# ==============
# Add Aim Canvas Op
# =================
self.headAimCanvasOp = CanvasOperator('headAimCanvasOp', 'Kraken.Solvers.DirectionConstraintSolver')
self.addOperator(self.headAimCanvasOp)
# Add Att Inputs
self.headAimCanvasOp.setInput('drawDebug', self.drawDebugInputAttr)
self.headAimCanvasOp.setInput('rigScale', self.rigScaleInputAttr)
# Add Xfo Inputs
self.headAimCanvasOp.setInput('position', self.headBaseInputTgt)
self.headAimCanvasOp.setInput('upVector', self.headAimUpV)
self.headAimCanvasOp.setInput('atVector', self.headAimCtrl)
# Add Xfo Outputs
self.headAimCanvasOp.setOutput('constrainee', self.headAim)
# Add Deformer KL Op
# ==================
self.deformersToOutputsKLOp = KLOperator('headDeformerKLOp', 'MultiPoseConstraintSolver', 'Kraken')
self.addOperator(self.deformersToOutputsKLOp)
# Add Att Inputs
self.deformersToOutputsKLOp.setInput('drawDebug', self.drawDebugInputAttr)
self.deformersToOutputsKLOp.setInput('rigScale', self.rigScaleInputAttr)
#.........这里部分代码省略.........
示例6: HeadComponentRig
class HeadComponentRig(HeadComponent):
"""Head Component Rig"""
def __init__(self, name='head', parent=None):
Profiler.getInstance().push("Construct Head Rig Component:" + name)
super(HeadComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Head
self.headCtrlSpace = CtrlSpace('head', parent=self.ctrlCmpGrp)
self.headCtrl = Control('head', parent=self.headCtrlSpace, shape="circle")
self.headCtrl.rotatePoints(0, 0, 90)
self.headCtrl.scalePoints(Vec3(3, 3, 3))
self.headCtrl.translatePoints(Vec3(0, 1, 0.25))
# Eye Left
self.eyeLeftCtrlSpace = CtrlSpace('eyeLeft', parent=self.headCtrl)
self.eyeLeftCtrl = Control('eyeLeft', parent=self.eyeLeftCtrlSpace, shape="sphere")
self.eyeLeftCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
self.eyeLeftCtrl.setColor("blueMedium")
# Eye Right
self.eyeRightCtrlSpace = CtrlSpace('eyeRight', parent=self.headCtrl)
self.eyeRightCtrl = Control('eyeRight', parent=self.eyeRightCtrlSpace, shape="sphere")
self.eyeRightCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
self.eyeRightCtrl.setColor("blueMedium")
# Jaw
self.jawCtrlSpace = CtrlSpace('jawCtrlSpace', parent=self.headCtrl)
self.jawCtrl = Control('jaw', parent=self.jawCtrlSpace, shape="cube")
self.jawCtrl.alignOnYAxis(negative=True)
self.jawCtrl.alignOnZAxis()
self.jawCtrl.scalePoints(Vec3(1.45, 0.65, 1.25))
self.jawCtrl.translatePoints(Vec3(0, -0.25, 0))
self.jawCtrl.setColor("orange")
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
headDef = Joint('head', parent=defCmpGrp)
headDef.setComponent(self)
jawDef = Joint('jaw', parent=defCmpGrp)
jawDef.setComponent(self)
eyeLeftDef = Joint('eyeLeft', parent=defCmpGrp)
eyeLeftDef.setComponent(self)
eyeRightDef = Joint('eyeRight', parent=defCmpGrp)
eyeRightDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
headInputConstraint = PoseConstraint('_'.join([self.headCtrlSpace.getName(), 'To', self.headBaseInputTgt.getName()]))
headInputConstraint.setMaintainOffset(True)
headInputConstraint.addConstrainer(self.headBaseInputTgt)
self.headCtrlSpace.addConstraint(headInputConstraint)
# # Constraint outputs
headOutputConstraint = PoseConstraint('_'.join([self.headOutputTgt.getName(), 'To', self.headCtrl.getName()]))
headOutputConstraint.addConstrainer(self.headCtrl)
self.headOutputTgt.addConstraint(headOutputConstraint)
jawOutputConstraint = PoseConstraint('_'.join([self.jawOutputTgt.getName(), 'To', self.jawCtrl.getName()]))
jawOutputConstraint.addConstrainer(self.jawCtrl)
self.jawOutputTgt.addConstraint(jawOutputConstraint)
eyeLOutputConstraint = PoseConstraint('_'.join([self.eyeLOutputTgt.getName(), 'To', self.eyeLeftCtrl.getName()]))
eyeLOutputConstraint.addConstrainer(self.eyeLeftCtrl)
self.eyeLOutputTgt.addConstraint(eyeLOutputConstraint)
eyeROutputConstraint = PoseConstraint('_'.join([self.eyeROutputTgt.getName(), 'To', self.eyeRightCtrl.getName()]))
eyeROutputConstraint.addConstrainer(self.eyeRightCtrl)
self.eyeROutputTgt.addConstraint(eyeROutputConstraint)
# Add Deformer Joints Splice Op
self.outputsToDeformersKLOp = KLOperator('headDeformerKLOp', 'MultiPoseConstraintSolver', 'Kraken')
self.addOperator(self.outputsToDeformersKLOp)
# Add Att Inputs
self.outputsToDeformersKLOp.setInput('drawDebug', self.drawDebugInputAttr)
self.outputsToDeformersKLOp.setInput('rigScale', self.rigScaleInputAttr)
# Add Xfo Inputs
self.outputsToDeformersKLOp.setInput('constrainers', [self.headOutputTgt, self.jawOutputTgt, self.eyeROutputTgt, self.eyeLOutputTgt])
# Add Xfo Outputs
self.outputsToDeformersKLOp.setOutput('constrainees', [headDef, jawDef, eyeLeftDef, eyeRightDef])
Profiler.getInstance().pop()
#.........这里部分代码省略.........
示例7: FabriceTailRig
class FabriceTailRig(FabriceTail):
"""Fabrice Tail Component"""
def __init__(self, name="fabriceTail", parent=None):
Profiler.getInstance().push("Construct Tail Rig Component:" + name)
super(FabriceTailRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Tail Base
# self.tailBaseCtrlSpace = CtrlSpace('tailBase', parent=self.ctrlCmpGrp)
# self.tailBaseCtrl = Control('tailBase', parent=self.tailBaseCtrlSpace, shape="circle")
# self.tailBaseCtrl.rotatePoints(90, 0, 0)
# self.tailBaseCtrl.scalePoints(Vec3(2.0, 2.0, 2.0))
# self.tailBaseCtrl.setColor("greenBlue")
# Tail Base Handle
self.tailBaseHandleCtrlSpace = CtrlSpace('tailBaseHandle', parent=self.ctrlCmpGrp)
self.tailBaseHandleCtrl = Control('tailBaseHandle', parent=self.tailBaseHandleCtrlSpace, shape="pin")
self.tailBaseHandleCtrl.lockScale(x=True, y=True, z=True)
self.tailBaseHandleCtrl.setColor("turqoise")
# Tail End Handle
self.tailEndHandleCtrlSpace = CtrlSpace('tailEndHandle', parent=self.ctrlCmpGrp)
self.tailEndHandleCtrl = Control('tailEndHandle', parent=self.tailEndHandleCtrlSpace, shape="pin")
self.tailEndHandleCtrl.lockScale(x=True, y=True, z=True)
self.tailEndHandleCtrl.setColor("turqoise")
# Tail End
self.tailEndCtrlSpace = CtrlSpace('tailEnd', parent=self.tailEndHandleCtrl)
self.tailEndCtrl = Control('tailEnd', parent=self.tailEndCtrlSpace, shape="pin")
self.tailEndCtrl.lockScale(x=True, y=True, z=True)
self.tailEndCtrl.setColor("greenBlue")
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.deformerJoints = []
self.tailOutputs = []
self.setNumDeformers(1)
# =====================
# Create Component I/O
# =====================
# Setup component Xfo I/O's
self.tailVertebraeOutput.setTarget(self.tailOutputs)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
self.tailBaseHandleInputConstraint = PoseConstraint('_'.join([self.tailBaseHandleCtrlSpace.getName(), 'To', self.spineEndCtrlInputTgt.getName()]))
self.tailBaseHandleInputConstraint.addConstrainer(self.spineEndCtrlInputTgt)
self.tailBaseHandleInputConstraint.setMaintainOffset(True)
self.tailBaseHandleCtrlSpace.addConstraint(self.tailBaseHandleInputConstraint)
self.tailEndHandleInputConstraint = PoseConstraint('_'.join([self.tailEndHandleCtrlSpace.getName(), 'To', self.cogInputTgt.getName()]))
self.tailEndHandleInputConstraint.addConstrainer(self.cogInputTgt)
self.tailEndHandleInputConstraint.setMaintainOffset(True)
self.tailEndHandleCtrlSpace.addConstraint(self.tailEndHandleInputConstraint)
# Constraint outputs
self.tailBaseOutputConstraint = PoseConstraint('_'.join([self.tailBaseOutputTgt.getName(), 'To', 'spineBase']))
self.tailBaseOutputConstraint.addConstrainer(self.tailOutputs[0])
self.tailBaseOutputTgt.addConstraint(self.tailBaseOutputConstraint)
self.tailEndOutputConstraint = PoseConstraint('_'.join([self.tailEndOutputTgt.getName(), 'To', 'spineEnd']))
self.tailEndOutputConstraint.addConstrainer(self.tailOutputs[0])
self.tailEndOutputTgt.addConstraint(self.tailEndOutputConstraint)
# ===============
# Add Splice Ops
# ===============
# Add Tail Splice Op
self.bezierTailKLOp = KLOperator('tailKLOp', 'BezierSpineSolver', 'Kraken')
self.addOperator(self.bezierTailKLOp)
# Add Att Inputs
self.bezierTailKLOp.setInput('drawDebug', self.drawDebugInputAttr)
self.bezierTailKLOp.setInput('rigScale', self.rigScaleInputAttr)
self.bezierTailKLOp.setInput('length', self.lengthInputAttr)
# Add Xfo Inputs
self.bezierTailKLOp.setInput('base', self.spineEndInputTgt)
self.bezierTailKLOp.setInput('baseHandle', self.tailBaseHandleCtrl)
self.bezierTailKLOp.setInput('tipHandle', self.tailEndHandleCtrl)
self.bezierTailKLOp.setInput('tip', self.tailEndCtrl)
# Add Xfo Outputs
self.bezierTailKLOp.setOutput('outputs', self.tailOutputs)
#.........这里部分代码省略.........
示例8: LegComponentRig
class LegComponentRig(LegComponent):
"""Leg Component"""
def __init__(self, name='leg', parent=None):
Profiler.getInstance().push("Construct Leg Rig Component:" + name)
super(LegComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Femur
self.femurFKCtrlSpace = CtrlSpace('femurFK', parent=self.ctrlCmpGrp)
self.femurFKCtrl = Control('femurFK', parent=self.femurFKCtrlSpace, shape="cube")
self.femurFKCtrl.alignOnXAxis()
# Shin
self.shinFKCtrlSpace = CtrlSpace('shinFK', parent=self.femurFKCtrl)
self.shinFKCtrl = Control('shinFK', parent=self.shinFKCtrlSpace, shape="cube")
self.shinFKCtrl.alignOnXAxis()
# Ankle
self.legIKCtrlSpace = CtrlSpace('IK', parent=self.ctrlCmpGrp)
self.legIKCtrl = Control('IK', parent=self.legIKCtrlSpace, shape="pin")
# FK Foot
self.footCtrlSpace = CtrlSpace('foot', parent=self.ctrlCmpGrp)
self.footCtrl = Control('foot', parent=self.footCtrlSpace, shape="cube")
self.footCtrl.alignOnXAxis()
# FK Toe
self.toeCtrlSpace = CtrlSpace('toe', parent=self.footCtrl)
self.toeCtrl = Control('toe', parent=self.toeCtrlSpace, shape="cube")
self.toeCtrl.alignOnXAxis()
# Rig Ref objects
self.footRefSrt = Locator('footRef', parent=self.ctrlCmpGrp)
# Add Component Params to IK control
footSettingsAttrGrp = AttributeGroup("DisplayInfo_FootSettings", parent=self.footCtrl)
footLinkToWorldInputAttr = ScalarAttribute('linkToWorld', 1.0, maxValue=1.0, parent=footSettingsAttrGrp)
# Add Component Params to IK control
legSettingsAttrGrp = AttributeGroup("DisplayInfo_LegSettings", parent=self.legIKCtrl)
legDrawDebugInputAttr = BoolAttribute('drawDebug', value=False, parent=legSettingsAttrGrp)
self.legBone0LenInputAttr = ScalarAttribute('bone0Len', value=1.0, parent=legSettingsAttrGrp)
self.legBone1LenInputAttr = ScalarAttribute('bone1Len', value=1.0, parent=legSettingsAttrGrp)
legIKBlendInputAttr = ScalarAttribute('ikblend', value=1.0, minValue=0.0, maxValue=1.0, parent=legSettingsAttrGrp)
legSoftIKInputAttr = BoolAttribute('softIK', value=True, parent=legSettingsAttrGrp)
legSoftDistInputAttr = ScalarAttribute('softDist', value=0.0, minValue=0.0, parent=legSettingsAttrGrp)
legStretchInputAttr = BoolAttribute('stretch', value=True, parent=legSettingsAttrGrp)
legStretchBlendInputAttr = ScalarAttribute('stretchBlend', value=0.0, minValue=0.0, maxValue=1.0, parent=legSettingsAttrGrp)
self.drawDebugInputAttr.connect(legDrawDebugInputAttr)
# UpV
self.legUpVCtrlSpace = CtrlSpace('UpV', parent=self.ctrlCmpGrp)
self.legUpVCtrl = Control('UpV', parent=self.legUpVCtrlSpace, shape="triangle")
self.legUpVCtrl.alignOnZAxis()
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
femurDef = Joint('femur', parent=self.defCmpGrp)
femurDef.setComponent(self)
shinDef = Joint('shin', parent=self.defCmpGrp)
shinDef.setComponent(self)
ankleDef = Joint('ankle', parent=self.defCmpGrp)
ankleDef.setComponent(self)
self.footDef = Joint('foot', parent=self.defCmpGrp)
self.footDef.setComponent(self)
self.toeDef = Joint('toe', parent=self.defCmpGrp)
self.toeDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
self.legIKCtrlSpaceInputConstraint = PoseConstraint('_'.join([self.legIKCtrlSpace.getName(), 'To', self.globalSRTInputTgt.getName()]))
self.legIKCtrlSpaceInputConstraint.setMaintainOffset(True)
self.legIKCtrlSpaceInputConstraint.addConstrainer(self.globalSRTInputTgt)
self.legIKCtrlSpace.addConstraint(self.legIKCtrlSpaceInputConstraint)
self.legUpVCtrlSpaceInputConstraint = PoseConstraint('_'.join([self.legUpVCtrlSpace.getName(), 'To', self.globalSRTInputTgt.getName()]))
self.legUpVCtrlSpaceInputConstraint.setMaintainOffset(True)
self.legUpVCtrlSpaceInputConstraint.addConstrainer(self.globalSRTInputTgt)
self.legUpVCtrlSpace.addConstraint(self.legUpVCtrlSpaceInputConstraint)
self.legRootInputConstraint = PoseConstraint('_'.join([self.legIKCtrl.getName(), 'To', self.legPelvisInputTgt.getName()]))
self.legRootInputConstraint.setMaintainOffset(True)
#.........这里部分代码省略.........
示例9: __init__
def __init__(self, name="arm", parent=None):
Profiler.getInstance().push("Construct Arm Rig Component:" + name)
super(ArmComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Bicep
self.bicepFKCtrlSpace = CtrlSpace("bicepFK", parent=self.ctrlCmpGrp)
self.bicepFKCtrl = Control("bicepFK", parent=self.bicepFKCtrlSpace, shape="cube")
self.bicepFKCtrl.alignOnXAxis()
# Forearm
self.forearmFKCtrlSpace = CtrlSpace("forearmFK", parent=self.bicepFKCtrl)
self.forearmFKCtrl = Control("forearmFK", parent=self.forearmFKCtrlSpace, shape="cube")
self.forearmFKCtrl.alignOnXAxis()
self.handCtrlSpace = CtrlSpace("hand", parent=self.ctrlCmpGrp)
self.handCtrl = Control("hand", parent=self.handCtrlSpace, shape="circle")
self.handCtrl.rotatePoints(0, 0, 90)
self.handCtrl.scalePoints(Vec3(1.0, 0.75, 0.75))
# Arm IK
self.armIKCtrlSpace = CtrlSpace("IK", parent=self.ctrlCmpGrp)
self.armIKCtrl = Control("IK", parent=self.armIKCtrlSpace, shape="pin")
# Add Params to IK control
armSettingsAttrGrp = AttributeGroup("DisplayInfo_ArmSettings", parent=self.armIKCtrl)
armDebugInputAttr = BoolAttribute("drawDebug", value=False, parent=armSettingsAttrGrp)
self.armBone0LenInputAttr = ScalarAttribute("bone1Len", value=0.0, parent=armSettingsAttrGrp)
self.armBone1LenInputAttr = ScalarAttribute("bone2Len", value=0.0, parent=armSettingsAttrGrp)
armIKBlendInputAttr = ScalarAttribute("fkik", value=0.0, minValue=0.0, maxValue=1.0, parent=armSettingsAttrGrp)
armSoftIKInputAttr = BoolAttribute("softIK", value=True, parent=armSettingsAttrGrp)
armSoftDistInputAttr = ScalarAttribute("softDist", value=0.0, minValue=0.0, parent=armSettingsAttrGrp)
armStretchInputAttr = BoolAttribute("stretch", value=True, parent=armSettingsAttrGrp)
armStretchBlendInputAttr = ScalarAttribute(
"stretchBlend", value=0.0, minValue=0.0, maxValue=1.0, parent=armSettingsAttrGrp
)
# Hand Params
handSettingsAttrGrp = AttributeGroup("DisplayInfo_HandSettings", parent=self.handCtrl)
handLinkToWorldInputAttr = ScalarAttribute("linkToWorld", 0.0, maxValue=1.0, parent=handSettingsAttrGrp)
self.drawDebugInputAttr.connect(armDebugInputAttr)
# UpV
self.armUpVCtrlSpace = CtrlSpace("UpV", parent=self.ctrlCmpGrp)
self.armUpVCtrl = Control("UpV", parent=self.armUpVCtrlSpace, shape="triangle")
self.armUpVCtrl.alignOnZAxis()
self.armUpVCtrl.rotatePoints(180, 0, 0)
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer("deformers")
defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
bicepDef = Joint("bicep", parent=defCmpGrp)
bicepDef.setComponent(self)
forearmDef = Joint("forearm", parent=defCmpGrp)
forearmDef.setComponent(self)
wristDef = Joint("wrist", parent=defCmpGrp)
wristDef.setComponent(self)
handDef = Joint("hand", parent=defCmpGrp)
handDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
self.armIKCtrlSpaceInputConstraint = PoseConstraint(
"_".join([self.armIKCtrlSpace.getName(), "To", self.globalSRTInputTgt.getName()])
)
self.armIKCtrlSpaceInputConstraint.setMaintainOffset(True)
self.armIKCtrlSpaceInputConstraint.addConstrainer(self.globalSRTInputTgt)
self.armIKCtrlSpace.addConstraint(self.armIKCtrlSpaceInputConstraint)
self.armUpVCtrlSpaceInputConstraint = PoseConstraint(
"_".join([self.armUpVCtrlSpace.getName(), "To", self.globalSRTInputTgt.getName()])
)
self.armUpVCtrlSpaceInputConstraint.setMaintainOffset(True)
self.armUpVCtrlSpaceInputConstraint.addConstrainer(self.globalSRTInputTgt)
self.armUpVCtrlSpace.addConstraint(self.armUpVCtrlSpaceInputConstraint)
self.armRootInputConstraint = PoseConstraint(
"_".join([self.bicepFKCtrlSpace.getName(), "To", self.clavicleEndInputTgt.getName()])
)
self.armRootInputConstraint.setMaintainOffset(True)
self.armRootInputConstraint.addConstrainer(self.clavicleEndInputTgt)
self.bicepFKCtrlSpace.addConstraint(self.armRootInputConstraint)
# Constraint outputs
self.handConstraint = PoseConstraint("_".join([self.handOutputTgt.getName(), "To", self.handCtrl.getName()]))
self.handConstraint.addConstrainer(self.handCtrl)
#.........这里部分代码省略.........
示例10: __init__
def __init__(self, name="neck", parent=None):
Profiler.getInstance().push("Construct Neck Rig Component:" + name)
super(NeckComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Neck
self.neckCtrlSpace = CtrlSpace('neck', parent=self.ctrlCmpGrp)
self.neckCtrl = Control('neck', parent=self.neckCtrlSpace, shape="pin")
self.neckCtrl.scalePoints(Vec3(1.25, 1.25, 1.25))
self.neckCtrl.translatePoints(Vec3(0, 0, -0.5))
self.neckCtrl.rotatePoints(90, 0, 90)
self.neckCtrl.setColor("orange")
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
neckDef = Joint('neck', parent=defCmpGrp)
neckDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
clavicleInputConstraint = PoseConstraint('_'.join([self.neckCtrlSpace.getName(), 'To', self.neckBaseInputTgt.getName()]))
clavicleInputConstraint.setMaintainOffset(True)
clavicleInputConstraint.addConstrainer(self.neckBaseInputTgt)
self.neckCtrlSpace.addConstraint(clavicleInputConstraint)
# Constraint outputs
neckOutputConstraint = PoseConstraint('_'.join([self.neckOutputTgt.getName(), 'To', self.neckCtrl.getName()]))
neckOutputConstraint.addConstrainer(self.neckCtrl)
self.neckOutputTgt.addConstraint(neckOutputConstraint)
neckEndConstraint = PoseConstraint('_'.join([self.neckEndOutputTgt.getName(), 'To', self.neckCtrl.getName()]))
neckEndConstraint.addConstrainer(self.neckCtrl)
self.neckEndOutputTgt.addConstraint(neckEndConstraint)
# ===============
# Add Splice Ops
# ===============
#Add Deformer Splice Op
spliceOp = KLOperator('neckDeformerKLOp', 'PoseConstraintSolver', 'Kraken')
self.addOperator(spliceOp)
# Add Att Inputs
spliceOp.setInput('drawDebug', self.drawDebugInputAttr)
spliceOp.setInput('rigScale', self.rigScaleInputAttr)
# Add Xfo Inputstrl)
spliceOp.setInput('constrainer', self.neckEndOutputTgt)
# Add Xfo Outputs
spliceOp.setOutput('constrainee', neckDef)
Profiler.getInstance().pop()
示例11: HandComponentRig
class HandComponentRig(HandComponent):
"""Hand Component"""
def __init__(self, name='Hand', parent=None):
Profiler.getInstance().push("Construct Hand Rig Component:" + name)
super(HandComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Hand
self.handCtrlSpace = CtrlSpace('hand', parent=self.ctrlCmpGrp)
self.handCtrl = Control('hand', parent=self.handCtrlSpace, shape="square")
self.handCtrl.rotatePoints(0, 0, 90.0)
self.handCtrl.lockScale(True, True, True)
self.handCtrl.lockTranslation(True, True, True)
# ==========
# Deformers
# ==========
self.deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=self.deformersLayer)
self.addItem('defCmpGrp', self.defCmpGrp)
self.handDef = Joint('hand', parent=self.defCmpGrp)
self.handDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
self.armEndInputConstraint = PoseConstraint('_'.join([self.handCtrlSpace.getName(), 'To', self.armEndInputTgt.getName()]))
self.armEndInputConstraint.setMaintainOffset(True)
self.armEndInputConstraint.addConstrainer(self.armEndInputTgt)
self.handCtrlSpace.addConstraint(self.armEndInputConstraint)
# Constraint outputs
self.handOutputConstraint = PoseConstraint('_'.join([self.handOutputTgt.getName(), 'To', self.handCtrl.getName()]))
self.handOutputConstraint.addConstrainer(self.handCtrl)
self.handOutputTgt.addConstraint(self.handOutputConstraint)
# Constraint deformers
self.handDefConstraint = PoseConstraint('_'.join([self.handDef.getName(), 'To', self.handCtrl.getName()]))
self.handDefConstraint.addConstrainer(self.handCtrl)
self.handDef.addConstraint(self.handDefConstraint)
Profiler.getInstance().pop()
def addFinger(self, name, data):
fingerCtrls = []
fingerJoints = []
parentCtrl = self.handCtrl
for i, joint in enumerate(data):
if i == 0:
jointName = name + 'Meta'
else:
jointName = name + str(i).zfill(2)
jointXfo = joint.get('xfo', Xfo())
jointCrvData = joint.get('curveData')
# Create Controls
newJointCtrlSpace = CtrlSpace(jointName, parent=parentCtrl)
newJointCtrl = Control(jointName, parent=newJointCtrlSpace, shape='square')
newJointCtrl.lockScale(True, True, True)
newJointCtrl.lockTranslation(True, True, True)
if jointCrvData is not None:
newJointCtrl.setCurveData(jointCrvData)
fingerCtrls.append(newJointCtrl)
# Create Deformers
jointDef = Joint(jointName, parent=self.defCmpGrp)
fingerJoints.append(jointDef)
# Create Constraints
# Set Xfos
newJointCtrlSpace.xfo = jointXfo
newJointCtrl.xfo = jointXfo
parentCtrl = newJointCtrl
# =================
# Create Operators
# =================
# Add Deformer KL Op
deformersToCtrlsKLOp = KLOperator(name + 'DeformerKLOp', 'MultiPoseConstraintSolver', 'Kraken')
self.addOperator(deformersToCtrlsKLOp)
# Add Att Inputs
#.........这里部分代码省略.........
示例12: __init__
def __init__(self, name='head', parent=None):
Profiler.getInstance().push("Construct Head Rig Component:" + name)
super(HeadComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Head
self.headCtrlSpace = CtrlSpace('head', parent=self.ctrlCmpGrp)
self.headCtrl = Control('head', parent=self.headCtrlSpace, shape="circle")
self.headCtrl.rotatePoints(0, 0, 90)
self.headCtrl.scalePoints(Vec3(3, 3, 3))
self.headCtrl.translatePoints(Vec3(0, 1, 0.25))
# Eye Left
self.eyeLeftCtrlSpace = CtrlSpace('eyeLeft', parent=self.headCtrl)
self.eyeLeftCtrl = Control('eyeLeft', parent=self.eyeLeftCtrlSpace, shape="sphere")
self.eyeLeftCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
self.eyeLeftCtrl.setColor("blueMedium")
# Eye Right
self.eyeRightCtrlSpace = CtrlSpace('eyeRight', parent=self.headCtrl)
self.eyeRightCtrl = Control('eyeRight', parent=self.eyeRightCtrlSpace, shape="sphere")
self.eyeRightCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
self.eyeRightCtrl.setColor("blueMedium")
# Jaw
self.jawCtrlSpace = CtrlSpace('jawCtrlSpace', parent=self.headCtrl)
self.jawCtrl = Control('jaw', parent=self.jawCtrlSpace, shape="cube")
self.jawCtrl.alignOnYAxis(negative=True)
self.jawCtrl.alignOnZAxis()
self.jawCtrl.scalePoints(Vec3(1.45, 0.65, 1.25))
self.jawCtrl.translatePoints(Vec3(0, -0.25, 0))
self.jawCtrl.setColor("orange")
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
headDef = Joint('head', parent=defCmpGrp)
headDef.setComponent(self)
jawDef = Joint('jaw', parent=defCmpGrp)
jawDef.setComponent(self)
eyeLeftDef = Joint('eyeLeft', parent=defCmpGrp)
eyeLeftDef.setComponent(self)
eyeRightDef = Joint('eyeRight', parent=defCmpGrp)
eyeRightDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
headInputConstraint = PoseConstraint('_'.join([self.headCtrlSpace.getName(), 'To', self.headBaseInputTgt.getName()]))
headInputConstraint.setMaintainOffset(True)
headInputConstraint.addConstrainer(self.headBaseInputTgt)
self.headCtrlSpace.addConstraint(headInputConstraint)
# # Constraint outputs
headOutputConstraint = PoseConstraint('_'.join([self.headOutputTgt.getName(), 'To', self.headCtrl.getName()]))
headOutputConstraint.addConstrainer(self.headCtrl)
self.headOutputTgt.addConstraint(headOutputConstraint)
jawOutputConstraint = PoseConstraint('_'.join([self.jawOutputTgt.getName(), 'To', self.jawCtrl.getName()]))
jawOutputConstraint.addConstrainer(self.jawCtrl)
self.jawOutputTgt.addConstraint(jawOutputConstraint)
eyeLOutputConstraint = PoseConstraint('_'.join([self.eyeLOutputTgt.getName(), 'To', self.eyeLeftCtrl.getName()]))
eyeLOutputConstraint.addConstrainer(self.eyeLeftCtrl)
self.eyeLOutputTgt.addConstraint(eyeLOutputConstraint)
eyeROutputConstraint = PoseConstraint('_'.join([self.eyeROutputTgt.getName(), 'To', self.eyeRightCtrl.getName()]))
eyeROutputConstraint.addConstrainer(self.eyeRightCtrl)
self.eyeROutputTgt.addConstraint(eyeROutputConstraint)
# ==================
# Add Component I/O
# ==================
# Add Xfo I/O's
# self.addInput(self.headBaseInputTgt)
# self.addOutput(self.headOutputTgt)
# self.addOutput(self.jawOutputTgt)
# self.addOutput(self.eyeLOutputTgt)
# self.addOutput(self.eyeROutputTgt)
# Add Attribute I/O's
# self.addInput(self.drawDebugInputAttr)
# ===============
#.........这里部分代码省略.........
示例13: __init__
def __init__(self, name='limb', parent=None):
Profiler.getInstance().push("Construct StretchyLimb Rig Component:" + name)
super(StretchyLimbComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Upper (FK)
self.upperFKCtrlSpace = CtrlSpace('upperFK', parent=self.ctrlCmpGrp)
self.upperFKCtrl = Control('upperFK', parent=self.upperFKCtrlSpace, shape="cube")
self.upperFKCtrl.alignOnXAxis()
# Lower (FK)
self.lowerFKCtrlSpace = CtrlSpace('lowerFK', parent=self.upperFKCtrl)
self.lowerFKCtrl = Control('lowerFK', parent=self.lowerFKCtrlSpace, shape="cube")
self.lowerFKCtrl.alignOnXAxis()
# End (IK)
self.limbIKCtrlSpace = CtrlSpace('IK', parent=self.ctrlCmpGrp)
self.limbIKCtrl = Control('IK', parent=self.limbIKCtrlSpace, shape="pin")
# Add Component Params to IK control
# TODO: Move these separate control
limbSettingsAttrGrp = AttributeGroup("DisplayInfo_StretchyLimbSettings", parent=self.limbIKCtrl)
limbDrawDebugInputAttr = BoolAttribute('drawDebug', value=False, parent=limbSettingsAttrGrp)
self.limbBone0LenInputAttr = ScalarAttribute('bone0Len', value=1.0, parent=limbSettingsAttrGrp)
self.limbBone1LenInputAttr = ScalarAttribute('bone1Len', value=1.0, parent=limbSettingsAttrGrp)
limbIKBlendInputAttr = ScalarAttribute('ikblend', value=1.0, minValue=0.0, maxValue=1.0, parent=limbSettingsAttrGrp)
limbSoftIKInputAttr = BoolAttribute('softIK', value=True, parent=limbSettingsAttrGrp)
limbSoftRatioInputAttr = ScalarAttribute('softRatio', value=0.0, minValue=0.0, maxValue=1.0, parent=limbSettingsAttrGrp)
limbStretchInputAttr = BoolAttribute('stretch', value=True, parent=limbSettingsAttrGrp)
limbStretchBlendInputAttr = ScalarAttribute('stretchBlend', value=0.0, minValue=0.0, maxValue=1.0, parent=limbSettingsAttrGrp)
limbSlideInputAttr = ScalarAttribute('slide', value=0.0, minValue=-1.0, maxValue=1.0, parent=limbSettingsAttrGrp)
limbPinInputAttr = ScalarAttribute('pin', value=0.0, minValue=0.0, maxValue=1.0, parent=limbSettingsAttrGrp)
self.rightSideInputAttr = BoolAttribute('rightSide', value=False, parent=limbSettingsAttrGrp)
self.drawDebugInputAttr.connect(limbDrawDebugInputAttr)
# UpV (IK Pole Vector)
self.limbUpVCtrlSpace = CtrlSpace('UpV', parent=self.ctrlCmpGrp)
self.limbUpVCtrl = Control('UpV', parent=self.limbUpVCtrlSpace, shape="triangle")
self.limbUpVCtrl.alignOnZAxis()
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.addItem('defCmpGrp', self.defCmpGrp)
upperDef = Joint('upper', parent=self.defCmpGrp)
upperDef.setComponent(self)
lowerDef = Joint('lower', parent=self.defCmpGrp)
lowerDef.setComponent(self)
endDef = Joint('end', parent=self.defCmpGrp)
endDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
self.limbIKCtrlSpaceInputConstraint = PoseConstraint('_'.join([self.limbIKCtrlSpace.getName(), 'To', self.globalSRTInputTgt.getName()]))
self.limbIKCtrlSpaceInputConstraint.setMaintainOffset(True)
self.limbIKCtrlSpaceInputConstraint.addConstrainer(self.globalSRTInputTgt)
self.limbIKCtrlSpace.addConstraint(self.limbIKCtrlSpaceInputConstraint)
self.limbUpVCtrlSpaceInputConstraint = PoseConstraint('_'.join([self.limbUpVCtrlSpace.getName(), 'To', self.globalSRTInputTgt.getName()]))
self.limbUpVCtrlSpaceInputConstraint.setMaintainOffset(True)
self.limbUpVCtrlSpaceInputConstraint.addConstrainer(self.globalSRTInputTgt)
self.limbUpVCtrlSpace.addConstraint(self.limbUpVCtrlSpaceInputConstraint)
self.limbRootInputConstraint = PoseConstraint('_'.join([self.limbIKCtrl.getName(), 'To', self.limbParentInputTgt.getName()]))
self.limbRootInputConstraint.setMaintainOffset(True)
self.limbRootInputConstraint.addConstrainer(self.limbParentInputTgt)
self.upperFKCtrlSpace.addConstraint(self.limbRootInputConstraint)
# ===============
# Add Splice Ops
# ===============
# Add StretchyLimb Splice Op
self.limbIKKLOp = KLOperator('limbKLOp', 'TwoBoneStretchyIKSolver', 'Kraken')
self.addOperator(self.limbIKKLOp)
# Add Att Inputs
self.limbIKKLOp.setInput('drawDebug', self.drawDebugInputAttr)
self.limbIKKLOp.setInput('rigScale', self.rigScaleInputAttr)
self.limbIKKLOp.setInput('bone0Len', self.limbBone0LenInputAttr)
self.limbIKKLOp.setInput('bone1Len', self.limbBone1LenInputAttr)
self.limbIKKLOp.setInput('ikblend', limbIKBlendInputAttr)
self.limbIKKLOp.setInput('softIK', limbSoftIKInputAttr)
self.limbIKKLOp.setInput('softRatio', limbSoftRatioInputAttr)
self.limbIKKLOp.setInput('stretch', limbStretchInputAttr)
self.limbIKKLOp.setInput('stretchBlend', limbStretchBlendInputAttr)
self.limbIKKLOp.setInput('slide', limbSlideInputAttr)
self.limbIKKLOp.setInput('pin', limbPinInputAttr)
self.limbIKKLOp.setInput('rightSide', self.rightSideInputAttr)
#.........这里部分代码省略.........
示例14: StretchyLimbComponentRig
class StretchyLimbComponentRig(StretchyLimbComponent):
"""StretchyLimb Component"""
def __init__(self, name='limb', parent=None):
Profiler.getInstance().push("Construct StretchyLimb Rig Component:" + name)
super(StretchyLimbComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Upper (FK)
self.upperFKCtrlSpace = CtrlSpace('upperFK', parent=self.ctrlCmpGrp)
self.upperFKCtrl = Control('upperFK', parent=self.upperFKCtrlSpace, shape="cube")
self.upperFKCtrl.alignOnXAxis()
# Lower (FK)
self.lowerFKCtrlSpace = CtrlSpace('lowerFK', parent=self.upperFKCtrl)
self.lowerFKCtrl = Control('lowerFK', parent=self.lowerFKCtrlSpace, shape="cube")
self.lowerFKCtrl.alignOnXAxis()
# End (IK)
self.limbIKCtrlSpace = CtrlSpace('IK', parent=self.ctrlCmpGrp)
self.limbIKCtrl = Control('IK', parent=self.limbIKCtrlSpace, shape="pin")
# Add Component Params to IK control
# TODO: Move these separate control
limbSettingsAttrGrp = AttributeGroup("DisplayInfo_StretchyLimbSettings", parent=self.limbIKCtrl)
limbDrawDebugInputAttr = BoolAttribute('drawDebug', value=False, parent=limbSettingsAttrGrp)
self.limbBone0LenInputAttr = ScalarAttribute('bone0Len', value=1.0, parent=limbSettingsAttrGrp)
self.limbBone1LenInputAttr = ScalarAttribute('bone1Len', value=1.0, parent=limbSettingsAttrGrp)
limbIKBlendInputAttr = ScalarAttribute('ikblend', value=1.0, minValue=0.0, maxValue=1.0, parent=limbSettingsAttrGrp)
limbSoftIKInputAttr = BoolAttribute('softIK', value=True, parent=limbSettingsAttrGrp)
limbSoftRatioInputAttr = ScalarAttribute('softRatio', value=0.0, minValue=0.0, maxValue=1.0, parent=limbSettingsAttrGrp)
limbStretchInputAttr = BoolAttribute('stretch', value=True, parent=limbSettingsAttrGrp)
limbStretchBlendInputAttr = ScalarAttribute('stretchBlend', value=0.0, minValue=0.0, maxValue=1.0, parent=limbSettingsAttrGrp)
limbSlideInputAttr = ScalarAttribute('slide', value=0.0, minValue=-1.0, maxValue=1.0, parent=limbSettingsAttrGrp)
limbPinInputAttr = ScalarAttribute('pin', value=0.0, minValue=0.0, maxValue=1.0, parent=limbSettingsAttrGrp)
self.rightSideInputAttr = BoolAttribute('rightSide', value=False, parent=limbSettingsAttrGrp)
self.drawDebugInputAttr.connect(limbDrawDebugInputAttr)
# UpV (IK Pole Vector)
self.limbUpVCtrlSpace = CtrlSpace('UpV', parent=self.ctrlCmpGrp)
self.limbUpVCtrl = Control('UpV', parent=self.limbUpVCtrlSpace, shape="triangle")
self.limbUpVCtrl.alignOnZAxis()
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.addItem('defCmpGrp', self.defCmpGrp)
upperDef = Joint('upper', parent=self.defCmpGrp)
upperDef.setComponent(self)
lowerDef = Joint('lower', parent=self.defCmpGrp)
lowerDef.setComponent(self)
endDef = Joint('end', parent=self.defCmpGrp)
endDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
self.limbIKCtrlSpaceInputConstraint = PoseConstraint('_'.join([self.limbIKCtrlSpace.getName(), 'To', self.globalSRTInputTgt.getName()]))
self.limbIKCtrlSpaceInputConstraint.setMaintainOffset(True)
self.limbIKCtrlSpaceInputConstraint.addConstrainer(self.globalSRTInputTgt)
self.limbIKCtrlSpace.addConstraint(self.limbIKCtrlSpaceInputConstraint)
self.limbUpVCtrlSpaceInputConstraint = PoseConstraint('_'.join([self.limbUpVCtrlSpace.getName(), 'To', self.globalSRTInputTgt.getName()]))
self.limbUpVCtrlSpaceInputConstraint.setMaintainOffset(True)
self.limbUpVCtrlSpaceInputConstraint.addConstrainer(self.globalSRTInputTgt)
self.limbUpVCtrlSpace.addConstraint(self.limbUpVCtrlSpaceInputConstraint)
self.limbRootInputConstraint = PoseConstraint('_'.join([self.limbIKCtrl.getName(), 'To', self.limbParentInputTgt.getName()]))
self.limbRootInputConstraint.setMaintainOffset(True)
self.limbRootInputConstraint.addConstrainer(self.limbParentInputTgt)
self.upperFKCtrlSpace.addConstraint(self.limbRootInputConstraint)
# ===============
# Add Splice Ops
# ===============
# Add StretchyLimb Splice Op
self.limbIKKLOp = KLOperator('limbKLOp', 'TwoBoneStretchyIKSolver', 'Kraken')
self.addOperator(self.limbIKKLOp)
# Add Att Inputs
self.limbIKKLOp.setInput('drawDebug', self.drawDebugInputAttr)
self.limbIKKLOp.setInput('rigScale', self.rigScaleInputAttr)
self.limbIKKLOp.setInput('bone0Len', self.limbBone0LenInputAttr)
self.limbIKKLOp.setInput('bone1Len', self.limbBone1LenInputAttr)
self.limbIKKLOp.setInput('ikblend', limbIKBlendInputAttr)
self.limbIKKLOp.setInput('softIK', limbSoftIKInputAttr)
self.limbIKKLOp.setInput('softRatio', limbSoftRatioInputAttr)
self.limbIKKLOp.setInput('stretch', limbStretchInputAttr)
self.limbIKKLOp.setInput('stretchBlend', limbStretchBlendInputAttr)
#.........这里部分代码省略.........
示例15: __init__
def __init__(self, name="foot", parent=None):
Profiler.getInstance().push("Construct Neck Rig Component:" + name)
super(FootComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
self.ankleLenInputAttr = ScalarAttribute('ankleLen', 1.0, maxValue=1.0, parent=self.cmpInputAttrGrp)
self.toeLenInputAttr = ScalarAttribute('toeLen', 1.0, maxValue=1.0, parent=self.cmpInputAttrGrp)
self.rightSideInputAttr = BoolAttribute('rightSide', False, parent=self.cmpInputAttrGrp)
self.footAll = Locator('footAll', parent=self.ctrlCmpGrp)
self.footAll.setShapeVisibility(False)
self.ankleIKCtrlSpace = CtrlSpace('ankleIK', parent=self.footAll)
self.ankleIKCtrl = Control('ankleIK', parent=self.ankleIKCtrlSpace, shape="square")
self.ankleIKCtrl.alignOnXAxis(negative=True)
self.ankleIKCtrl.lockTranslation(True, True, True)
self.ankleIKCtrl.lockScale(True, True, True)
self.toeIKCtrlSpace = CtrlSpace('toeIK', parent=self.footAll)
self.toeIKCtrl = Control('toeIK', parent=self.toeIKCtrlSpace, shape="square")
self.toeIKCtrl.alignOnXAxis()
self.toeIKCtrl.lockTranslation(True, True, True)
self.toeIKCtrl.lockScale(True, True, True)
self.ankleFKCtrlSpace = CtrlSpace('ankleFK', parent=self.ctrlCmpGrp)
self.ankleFKCtrl = Control('ankleFK', parent=self.ankleFKCtrlSpace, shape="cube")
self.ankleFKCtrl.alignOnXAxis()
self.ankleFKCtrl.lockTranslation(True, True, True)
self.ankleFKCtrl.lockScale(True, True, True)
self.toeFKCtrlSpace = CtrlSpace('toeFK', parent=self.ankleFKCtrl)
self.toeFKCtrl = Control('toeFK', parent=self.toeFKCtrlSpace, shape="cube")
self.toeFKCtrl.alignOnXAxis()
self.toeFKCtrl.lockTranslation(True, True, True)
self.toeFKCtrl.lockScale(True, True, True)
self.footSettingsAttrGrp = AttributeGroup("DisplayInfo_FootSettings", parent=self.ankleIKCtrl)
self.footDebugInputAttr = BoolAttribute('drawDebug', value=False, parent=self.footSettingsAttrGrp)
self.footRockInputAttr = ScalarAttribute('footRock', value=0.0, minValue=-1.0, maxValue=1.0, parent=self.footSettingsAttrGrp)
self.footBankInputAttr = ScalarAttribute('footBank', value=0.0, minValue=-1.0, maxValue=1.0, parent=self.footSettingsAttrGrp)
self.drawDebugInputAttr.connect(self.footDebugInputAttr)
self.pivotAll = Locator('pivotAll', parent=self.ctrlCmpGrp)
self.pivotAll.setShapeVisibility(False)
self.backPivotCtrl = Control('backPivot', parent=self.pivotAll, shape="axesHalfTarget")
self.backPivotCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
self.backPivotCtrl.lockScale(True, True, True)
self.backPivotCtrlSpace = self.backPivotCtrl.insertCtrlSpace()
self.frontPivotCtrl = Control('frontPivot', parent=self.pivotAll, shape="axesHalfTarget")
self.frontPivotCtrl.rotatePoints(0.0, 180.0, 0.0)
self.frontPivotCtrl.lockScale(True, True, True)
self.frontPivotCtrlSpace = self.frontPivotCtrl.insertCtrlSpace()
self.frontPivotCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
self.outerPivotCtrl = Control('outerPivot', parent=self.pivotAll, shape="axesHalfTarget")
self.outerPivotCtrl.rotatePoints(0.0, -90.0, 0.0)
self.outerPivotCtrl.lockScale(True, True, True)
self.outerPivotCtrlSpace = self.outerPivotCtrl.insertCtrlSpace()
self.outerPivotCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
self.innerPivotCtrl = Control('innerPivot', parent=self.pivotAll, shape="axesHalfTarget")
self.innerPivotCtrl.rotatePoints(0.0, 90.0, 0.0)
self.innerPivotCtrl.lockScale(True, True, True)
self.innerPivotCtrlSpace = self.innerPivotCtrl.insertCtrlSpace()
self.innerPivotCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.addItem('defCmpGrp', self.defCmpGrp)
self.ankleDef = Joint('ankle', parent=self.defCmpGrp)
self.ankleDef.setComponent(self)
self.toeDef = Joint('toe', parent=self.defCmpGrp)
self.toeDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint to inputs
self.pivotAllInputConstraint = PoseConstraint('_'.join([self.pivotAll.getName(), 'To', self.ikHandleInputTgt.getName()]))
self.pivotAllInputConstraint.setMaintainOffset(True)
self.pivotAllInputConstraint.addConstrainer(self.ikHandleInputTgt)
self.pivotAll.addConstraint(self.pivotAllInputConstraint)
self.ankleFKInputConstraint = PoseConstraint('_'.join([self.ankleFKCtrlSpace.getName(), 'To', self.legEndFKInputTgt.getName()]))
self.ankleFKInputConstraint.setMaintainOffset(True)
self.ankleFKInputConstraint.addConstrainer(self.legEndFKInputTgt)
#.........这里部分代码省略.........