本文整理汇总了Python中kraken.core.objects.control.Control.lockScale方法的典型用法代码示例。如果您正苦于以下问题:Python Control.lockScale方法的具体用法?Python Control.lockScale怎么用?Python Control.lockScale使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kraken.core.objects.control.Control
的用法示例。
在下文中一共展示了Control.lockScale方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: resizeDigits
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
def resizeDigits(self, numJoints):
initNumJoints = numJoints
for finger in self.fingers.keys():
if finger == "thumb":
numJoints = 3
else:
numJoints = initNumJoints
if numJoints + 1 == len(self.fingers[finger]):
continue
elif numJoints + 1 > len(self.fingers[finger]):
for i in xrange(len(self.fingers[finger]), numJoints + 1):
prevDigit = self.fingers[finger][i - 1]
digitCtrl = Control(finger + str(i + 1).zfill(2), parent=prevDigit, shape='sphere')
digitCtrl.setColor('orange')
digitCtrl.scalePoints(Vec3(0.25, 0.25, 0.25))
digitCtrl.lockScale(True, True, True)
self.fingers[finger].append(digitCtrl)
elif numJoints + 1 < len(self.fingers[finger]):
numExtraCtrls = len(self.fingers[finger]) - (numJoints + 1)
for i in xrange(numExtraCtrls):
removedJoint = self.fingers[finger].pop()
removedJoint.getParent().removeChild(removedJoint)
self.placeFingers()
示例2: setNumControls
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
def setNumControls(self, numControls):
# Add more controls
if numControls > len(self.fkCtrlSpaces):
for i in xrange(len(self.fkCtrlSpaces), numControls):
if i==0:
parent = self.ctrlCmpGrp
else:
parent = self.fkCtrls[i - 1]
boneName = 'bone' + str(i + 1).zfill(2) + 'FK'
boneFKCtrlSpace = CtrlSpace(boneName, parent=parent)
boneFKCtrl = Control(boneName, parent=boneFKCtrlSpace, shape="cube")
boneFKCtrl.alignOnXAxis()
boneFKCtrl.lockScale(x=True, y=True, z=True)
boneFKCtrl.lockTranslation(x=True, y=True, z=True)
self.fkCtrlSpaces.append(boneFKCtrlSpace)
self.fkCtrls.append(boneFKCtrl)
# Remove extra ctrls
elif numControls < len(self.fkCtrlSpaces):
numExtraCtrls = len(self.fkCtrls) - numControls
for i in xrange(numExtraCtrls):
extraCtrlSpace = self.fkCtrlSpaces.pop()
extraCtrl = self.fkCtrls.pop()
extraCtrlSpace.getParent().removeChild(extraCtrlSpace)
extraCtrl.getParent().removeChild(extraCtrl)
示例3: addFinger
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
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
示例4: setNumControls
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
def setNumControls(self, numControls):
# Add new control spaces and controls
for i in xrange(len(self.fkCtrlSpaces), numControls):
if i==0:
parent = self.ctrlCmpGrp
else:
parent = self.fkCtrls[i - 1]
boneName = 'bone' + str(i + 1).zfill(2) + 'FK'
fkCtrlSpace = CtrlSpace(boneName, parent=parent)
fkCtrl = Control(boneName, parent=fkCtrlSpace, shape="cube")
fkCtrl.alignOnXAxis()
fkCtrl.lockScale(x=True, y=True, z=True)
fkCtrl.lockTranslation(x=True, y=True, z=True)
self.fkCtrlSpaces.append(fkCtrlSpace)
self.fkCtrls.append(fkCtrl)
示例5: FabriceTailGuide
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
class FabriceTailGuide(FabriceTail):
"""Fabrice Tail Component Guide"""
def __init__(self, name='tail', parent=None):
Profiler.getInstance().push("Construct Fabrice Tail Guide Component:" + name)
super(FabriceTailGuide, self).__init__(name, parent)
# =========
# Controls
# ========
guideSettingsAttrGrp = AttributeGroup("GuideSettings", parent=self)
self.numDeformersAttr = IntegerAttribute('numDeformers', value=1, minValue=0, maxValue=20, parent=guideSettingsAttrGrp)
self.numDeformersAttr.setValueChangeCallback(self.updateNumDeformers)
# Guide Controls
self.tailBaseCtrl = Control('tailBase', parent=self.ctrlCmpGrp, shape='sphere')
self.tailBaseCtrl.scalePoints(Vec3(1.2, 1.2, 1.2))
self.tailBaseCtrl.lockScale(x=True, y=True, z=True)
self.tailBaseCtrl.setColor("turqoise")
self.tailBaseHandleCtrl = Control('tailBaseHandle', parent=self.ctrlCmpGrp, shape='pin')
self.tailBaseHandleCtrl.rotatePoints(90, 0, 0)
self.tailBaseHandleCtrl.translatePoints(Vec3(0, 1.0, 0))
self.tailBaseHandleCtrl.lockScale(x=True, y=True, z=True)
self.tailBaseHandleCtrl.setColor("turqoise")
self.tailEndHandleCtrl = Control('tailEndHandle', parent=self.ctrlCmpGrp, shape='pin')
self.tailEndHandleCtrl.rotatePoints(90, 0, 0)
self.tailEndHandleCtrl.translatePoints(Vec3(0, 1.0, 0))
self.tailEndHandleCtrl.lockScale(x=True, y=True, z=True)
self.tailEndHandleCtrl.setColor("turqoise")
self.tailEndCtrl = Control('tailEnd', parent=self.ctrlCmpGrp, shape='pin')
self.tailEndCtrl.rotatePoints(90, 0, 0)
self.tailEndCtrl.translatePoints(Vec3(0, 1.0, 0))
self.tailEndCtrl.lockScale(x=True, y=True, z=True)
self.tailEndCtrl.setColor("turqoise")
# ===============
# Add Splice Ops
# ===============
# Add Tail Splice Op
self.bezierSpineKLOp = KLOperator('spineGuideKLOp', 'BezierSpineSolver', 'Kraken')
self.bezierSpineKLOp.setOutput('outputs', self.tailVertebraeOutput.getTarget())
self.addOperator(self.bezierSpineKLOp)
# Add Att Inputs
self.bezierSpineKLOp.setInput('drawDebug', self.drawDebugInputAttr)
self.bezierSpineKLOp.setInput('rigScale', self.rigScaleInputAttr)
self.bezierSpineKLOp.setInput('length', self.lengthInputAttr)
# Add Xfo Inputs
self.bezierSpineKLOp.setInput('base', self.tailBaseCtrl)
self.bezierSpineKLOp.setInput('baseHandle', self.tailBaseHandleCtrl)
self.bezierSpineKLOp.setInput('tipHandle', self.tailEndHandleCtrl)
self.bezierSpineKLOp.setInput('tip', self.tailEndCtrl)
self.loadData({
'name': name,
'location': 'M',
'tailBasePos': Vec3(0.0, 0.65, -3.1),
'tailBaseHandlePos': Vec3(0.0, 0.157, -4.7),
'tailBaseHandleCtrlCrvData': self.tailBaseHandleCtrl.getCurveData(),
'tailEndHandlePos': Vec3(0.0, 0.0625, -6.165),
'tailEndHandleCtrlCrvData': self.tailEndHandleCtrl.getCurveData(),
'tailEndPos': Vec3(0.0, -0.22, -7.42),
'tailEndCtrlCrvData': self.tailEndCtrl.getCurveData(),
'numDeformers': 6
})
Profiler.getInstance().pop()
# ==========
# Callbacks
# ==========
def updateNumDeformers(self, count):
"""Generate the guide controls for the variable outputes array.
Arguments:
count -- object, The number of joints inthe chain.
Return:
True if successful.
"""
if count == 0:
raise IndexError("'count' must be > 0")
vertebraeOutputs = self.tailVertebraeOutput.getTarget()
if count > len(vertebraeOutputs):
for i in xrange(len(vertebraeOutputs), count):
debugCtrl = Control('spine' + str(i+1).zfill(2), parent=self.outputHrcGrp, shape="vertebra")
debugCtrl.rotatePoints(0, -90, 0)
debugCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
#.........这里部分代码省略.........
示例6: FabriceTailRig
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
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)
#.........这里部分代码省略.........
示例7: HeadComponentRig
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
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.headCtrl = Control('head', parent=self.ctrlCmpGrp, shape='circle')
self.headCtrl.lockScale(x=True, y=True, z=True)
self.headCtrl.lockTranslation(x=True, y=True, z=True)
self.headCtrlSpace = self.headCtrl.insertCtrlSpace()
self.headCtrl.rotatePoints(0, 0, 90)
self.headCtrl.scalePoints(Vec3(3, 3, 3))
self.headCtrl.translatePoints(Vec3(0, 1, 0.25))
# Eye Left
self.eyeLeftCtrl = Control('eyeLeft', parent=self.ctrlCmpGrp, shape='sphere')
self.eyeLeftCtrl.lockScale(x=True, y=True, z=True)
self.eyeLeftCtrl.lockTranslation(x=True, y=True, z=True)
self.eyeLeftCtrlSpace = self.eyeLeftCtrl.insertCtrlSpace()
self.eyeLeftCtrl.rotatePoints(0, 90, 0)
self.eyeLeftCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
self.eyeLeftCtrl.setColor('blueMedium')
# Eye Right
self.eyeRightCtrl = Control('eyeRight', parent=self.ctrlCmpGrp, shape='sphere')
self.eyeRightCtrl.lockScale(x=True, y=True, z=True)
self.eyeRightCtrl.lockTranslation(x=True, y=True, z=True)
self.eyeRightCtrlSpace = self.eyeRightCtrl.insertCtrlSpace()
self.eyeRightCtrl.rotatePoints(0, 90, 0)
self.eyeRightCtrl.scalePoints(Vec3(0.5, 0.5, 0.5))
self.eyeRightCtrl.setColor('blueMedium')
# LookAt Control
self.lookAtCtrl = Control('lookAt', parent=self.ctrlCmpGrp, shape='square')
self.lookAtCtrl.lockScale(x=True, y=True, z=True)
self.lookAtCtrl.rotatePoints(90, 0, 0)
self.lookAtCtrlSpace = self.lookAtCtrl.insertCtrlSpace()
self.eyeLeftBase = Transform('eyeLeftBase', parent=self.headCtrl)
self.eyeRightBase = Transform('eyeRightBase', parent=self.headCtrl)
self.eyeLeftUpV = Transform('eyeLeftUpV', parent=self.headCtrl)
self.eyeRightUpV = Transform('eyeRightUpV', parent=self.headCtrl)
self.eyeLeftAtV = Transform('eyeLeftAtV', parent=self.lookAtCtrl)
self.eyeRightAtV = Transform('eyeRightAtV', parent=self.lookAtCtrl)
# Jaw
self.jawCtrl = Control('jaw', parent=self.headCtrl, shape='cube')
self.jawCtrlSpace = self.jawCtrl.insertCtrlSpace()
self.jawCtrl.lockScale(x=True, y=True, z=True)
self.jawCtrl.lockTranslation(x=True, y=True, z=True)
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')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.addItem('defCmpGrp', self.defCmpGrp)
headDef = Joint('head', parent=self.defCmpGrp)
headDef.setComponent(self)
jawDef = Joint('jaw', parent=self.defCmpGrp)
jawDef.setComponent(self)
eyeLeftDef = Joint('eyeLeft', parent=self.defCmpGrp)
eyeLeftDef.setComponent(self)
eyeRightDef = Joint('eyeRight', parent=self.defCmpGrp)
eyeRightDef.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
self.headInputConstraint = PoseConstraint('_'.join([self.headCtrlSpace.getName(), 'To', self.neckRefInputTgt.getName()]))
self.headInputConstraint.setMaintainOffset(True)
self.headInputConstraint.addConstrainer(self.neckRefInputTgt)
self.headCtrlSpace.addConstraint(self.headInputConstraint)
# 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)
#.........这里部分代码省略.........
示例8: FabriceHeadRig
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
class FabriceHeadRig(FabriceHead):
"""Fabrice Head Component Rig"""
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)
#.........这里部分代码省略.........
示例9: SpineComponentRig
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
class SpineComponentRig(SpineComponent):
"""Spine Component"""
def __init__(self, name="spine", parent=None):
Profiler.getInstance().push("Construct Spine Rig Component:" + name)
super(SpineComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# COG
self.cogCtrlSpace = CtrlSpace('cog', parent=self.ctrlCmpGrp)
self.cogCtrl = Control('cog', parent=self.cogCtrlSpace, shape="circle")
self.cogCtrl.scalePoints(Vec3(6.0, 6.0, 6.0))
self.cogCtrl.setColor("orange")
self.cogCtrl.lockScale(True, True, True)
# Spine01
self.spine01CtrlSpace = CtrlSpace('spine01', parent=self.cogCtrl)
self.spine01Ctrl = Control('spine01', parent=self.spine01CtrlSpace, shape="circle")
self.spine01Ctrl.scalePoints(Vec3(4.0, 4.0, 4.0))
self.spine01Ctrl.lockScale(True, True, True)
# Spine02
self.spine02CtrlSpace = CtrlSpace('spine02', parent=self.spine01Ctrl)
self.spine02Ctrl = Control('spine02', parent=self.spine02CtrlSpace, shape="circle")
self.spine02Ctrl.scalePoints(Vec3(4.5, 4.5, 4.5))
self.spine02Ctrl.lockScale(True, True, True)
self.spine02Ctrl.setColor("blue")
# Spine04
self.spine04CtrlSpace = CtrlSpace('spine04', parent=self.cogCtrl)
self.spine04Ctrl = Control('spine04', parent=self.spine04CtrlSpace, shape="circle")
self.spine04Ctrl.scalePoints(Vec3(6.0, 6.0, 6.0))
self.spine04Ctrl.lockScale(True, True, True)
# Spine03
self.spine03CtrlSpace = CtrlSpace('spine03', parent=self.spine04Ctrl)
self.spine03Ctrl = Control('spine03', parent=self.spine03CtrlSpace, shape="circle")
self.spine03Ctrl.scalePoints(Vec3(4.5, 4.5, 4.5))
self.spine03Ctrl.lockScale(True, True, True)
self.spine03Ctrl.setColor("blue")
# Pelvis
self.pelvisCtrlSpace = CtrlSpace('pelvis', parent=self.spine01Ctrl)
self.pelvisCtrl = Control('pelvis', parent=self.pelvisCtrlSpace, shape="cube")
self.pelvisCtrl.alignOnYAxis(negative=True)
self.pelvisCtrl.scalePoints(Vec3(4.0, 0.375, 3.75))
self.pelvisCtrl.translatePoints(Vec3(0.0, -0.5, -0.25))
self.pelvisCtrl.lockTranslation(True, True, True)
self.pelvisCtrl.lockScale(True, True, True)
self.pelvisCtrl.setColor("blueLightMuted")
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.addItem('defCmpGrp', self.defCmpGrp)
self.deformerJoints = []
self.spineOutputs = []
self.setNumDeformers(1)
pelvisDef = Joint('pelvis', parent=self.defCmpGrp)
pelvisDef.setComponent(self)
# =====================
# Create Component I/O
# =====================
# Setup component Xfo I/O's
self.spineVertebraeOutput.setTarget(self.spineOutputs)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
self.spineSrtInputConstraint = PoseConstraint('_'.join([self.cogCtrlSpace.getName(), 'To', self.globalSRTInputTgt.getName()]))
self.spineSrtInputConstraint.addConstrainer(self.globalSRTInputTgt)
self.spineSrtInputConstraint.setMaintainOffset(True)
self.cogCtrlSpace.addConstraint(self.spineSrtInputConstraint)
# Constraint outputs
self.spineCogOutputConstraint = PoseConstraint('_'.join([self.spineCogOutputTgt.getName(), 'To', self.cogCtrl.getName()]))
self.spineCogOutputConstraint.addConstrainer(self.cogCtrl)
self.spineCogOutputTgt.addConstraint(self.spineCogOutputConstraint)
self.spineBaseOutputConstraint = PoseConstraint('_'.join([self.spineBaseOutputTgt.getName(), 'To', 'spineBase']))
self.spineBaseOutputConstraint.addConstrainer(self.spineOutputs[0])
self.spineBaseOutputTgt.addConstraint(self.spineBaseOutputConstraint)
self.pelvisOutputConstraint = PoseConstraint('_'.join([self.pelvisOutputTgt.getName(), 'To', self.pelvisCtrl.getName()]))
self.pelvisOutputConstraint.addConstrainer(self.pelvisCtrl)
self.pelvisOutputTgt.addConstraint(self.pelvisOutputConstraint)
self.spineEndOutputConstraint = PoseConstraint('_'.join([self.spineEndOutputTgt.getName(), 'To', 'spineEnd']))
#.........这里部分代码省略.........
示例10: TentacleComponentRig
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
class TentacleComponentRig(TentacleComponent):
"""Insect Leg Rig"""
def __init__(self, name='Tentacle', parent=None):
Profiler.getInstance().push("Construct Tentacle Rig Component:" + name)
super(TentacleComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Chain Base
self.chainBase = Locator('ChainBase', parent=self.ctrlCmpGrp)
self.chainBase.setShapeVisibility(False)
# FK
self.fkCtrlSpaces = []
self.fkCtrls = []
self.setNumControls(2)
# IK Control
self.tentacleIKCtrlSpace = CtrlSpace('IK', parent=self.ctrlCmpGrp)
self.tentacleIKCtrl = Control('IK', parent=self.tentacleIKCtrlSpace, shape="sphere")
self.tentacleIKCtrl.scalePoints(Vec3(0.25, 0.25, 0.25))
self.tentacleIKCtrl.lockScale(x=True, y=True, z=True)
self.tentacleIKCtrl.lockRotation(x=True, y=True, z=True)
# Add Component Params to IK control
tentacleSettingsAttrGrp = AttributeGroup("DisplayInfo_LegSettings", parent=self.tentacleIKCtrl)
tentacledrawDebugInputAttr = BoolAttribute('drawDebug', value=False, parent=tentacleSettingsAttrGrp)
fkikInputAttr = ScalarAttribute('fkik', value=0.0, minValue=0.0, maxValue=1.0, parent=tentacleSettingsAttrGrp)
waveLength_YInputAttr = ScalarAttribute('waveLength_Y', value=1.0, minValue=0.0, maxValue=5.0, parent=tentacleSettingsAttrGrp)
waveAmplitude_YInputAttr = ScalarAttribute('waveAmplitude_Y', value=0.0, minValue=-3.0, maxValue=3.0, parent=tentacleSettingsAttrGrp)
waveFrequency_YInputAttr = ScalarAttribute('waveFrequency_Y', value=2.0, minValue=0.0, maxValue=10.0, parent=tentacleSettingsAttrGrp)
waveLength_ZInputAttr = ScalarAttribute('waveLength_Z', value=2.329, minValue=0.0, maxValue=5.0, parent=tentacleSettingsAttrGrp)
waveAmplitude_ZInputAttr = ScalarAttribute('waveAmplitude_Z', value=0.0, minValue=-3.0, maxValue=3.0, parent=tentacleSettingsAttrGrp)
waveFrequency_ZInputAttr = ScalarAttribute('waveFrequency_Z', value=3.354, minValue=0.0, maxValue=10.0, parent=tentacleSettingsAttrGrp)
tipBiasInputAttr = ScalarAttribute('tipBias', value=1.0, minValue=0.0, maxValue=1.0, parent=tentacleSettingsAttrGrp)
springStrengthInputAttr = ScalarAttribute('springStrength', value=0.3, minValue=0.0, maxValue=1.0, parent=tentacleSettingsAttrGrp)
dampeningInputAttr = ScalarAttribute('dampening', value=0.03, minValue=0.0, maxValue=1.0, parent=tentacleSettingsAttrGrp)
simulationWeightInputAttr = ScalarAttribute('simulationWeight', value=1.0, minValue=0.0, maxValue=1.0, parent=tentacleSettingsAttrGrp)
softLimitBoundsInputAttr = ScalarAttribute('softLimitBounds', value=5.0, minValue=0.0, maxValue=10.0, parent=tentacleSettingsAttrGrp)
# Connect IO to controls
self.drawDebugInputAttr.connect(tentacledrawDebugInputAttr)
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.deformerJoints = []
self.boneOutputsTgt = []
self.setNumDeformers(4)
# =====================
# Create Component I/O
# =====================
# Set IO Targets
self.boneOutputs.setTarget(self.boneOutputsTgt)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
tentacleRootInputConstraint = PoseConstraint('_'.join([self.fkCtrlSpaces[0].getName(), 'To', self.rootInputTgt.getName()]))
tentacleRootInputConstraint.setMaintainOffset(True)
tentacleRootInputConstraint.addConstrainer(self.rootInputTgt)
self.fkCtrlSpaces[0].addConstraint(tentacleRootInputConstraint)
tentacleRootInputConstraint = PoseConstraint('_'.join([self.tentacleIKCtrlSpace.getName(), 'To', self.rootInputTgt.getName()]))
tentacleRootInputConstraint.setMaintainOffset(True)
tentacleRootInputConstraint.addConstrainer(self.rootInputTgt)
self.tentacleIKCtrlSpace.addConstraint(tentacleRootInputConstraint)
chainBaseInputConstraint = PoseConstraint('_'.join([self.chainBase.getName(), 'To', self.rootInputTgt.getName()]))
chainBaseInputConstraint.setMaintainOffset(True)
chainBaseInputConstraint.addConstrainer(self.rootInputTgt)
self.chainBase.addConstraint(chainBaseInputConstraint)
# ===============
# Add Splice Ops
# ===============
# Add Splice Op
self.tentacleSolverKLOp = KLOperator('tentacleKLOp', 'TentacleSolver', 'Kraken')
self.addOperator(self.tentacleSolverKLOp)
# # Add Att Inputs
self.tentacleSolverKLOp.setInput('drawDebug', self.drawDebugInputAttr)
self.tentacleSolverKLOp.setInput('rigScale', self.rigScaleInputAttr)
self.tentacleSolverKLOp.setInput('ikblend', fkikInputAttr)
self.tentacleSolverKLOp.setInput('waveLength_Y', waveLength_YInputAttr)
self.tentacleSolverKLOp.setInput('waveAmplitude_Y', waveAmplitude_YInputAttr)
self.tentacleSolverKLOp.setInput('waveFrequency_Y', waveFrequency_YInputAttr)
#.........这里部分代码省略.........
示例11: HandComponentRig
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
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: FootComponentRig
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
class FootComponentRig(FootComponent):
"""Foot Component"""
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)
#.........这里部分代码省略.........
示例13: MainSrtComponentRig
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
class MainSrtComponentRig(MainSrtComponent):
"""MainSrt Component Rig"""
def __init__(self, name="mainSrt", parent=None):
Profiler.getInstance().push("Construct MainSrt Rig Component:" + name)
super(MainSrtComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Add Controls
self.mainSRTCtrlSpace = CtrlSpace("SRT", parent=self.ctrlCmpGrp)
self.mainSRTCtrl = Control("SRT", shape="circle", parent=self.mainSRTCtrlSpace)
self.mainSRTCtrl.lockScale(x=True, y=True, z=True)
self.offsetCtrlSpace = CtrlSpace("Offset", parent=self.mainSRTCtrl)
self.offsetCtrl = Control("Offset", shape="circle", parent=self.offsetCtrlSpace)
self.offsetCtrl.setColor("orange")
self.offsetCtrl.lockScale(x=True, y=True, z=True)
# Add Component Params to IK control
mainSrtSettingsAttrGrp = AttributeGroup("DisplayInfo_MainSrtSettings", parent=self.mainSRTCtrl)
self.rigScaleAttr = ScalarAttribute(
"rigScale", value=1.0, parent=mainSrtSettingsAttrGrp, minValue=0.1, maxValue=100.0
)
self.rigScaleOutputAttr.connect(self.rigScaleAttr)
# ==========
# Deformers
# ==========
# ==============
# Constrain I/O
# ==============
# Constraint inputs
# Constraint outputs
srtConstraint = PoseConstraint("_".join([self.srtOutputTgt.getName(), "To", self.mainSRTCtrl.getName()]))
srtConstraint.addConstrainer(self.mainSRTCtrl)
self.srtOutputTgt.addConstraint(srtConstraint)
offsetConstraint = PoseConstraint("_".join([self.offsetOutputTgt.getName(), "To", self.mainSRTCtrl.getName()]))
offsetConstraint.addConstrainer(self.offsetCtrl)
self.offsetOutputTgt.addConstraint(offsetConstraint)
# ===============
# Add Splice Ops
# ===============
# Add Rig Scale Splice Op
self.rigScaleKLOp = KLOperator("rigScaleKLOp", "RigScaleSolver", "Kraken")
self.addOperator(self.rigScaleKLOp)
# Add Att Inputs
self.rigScaleKLOp.setInput("drawDebug", self.drawDebugInputAttr)
self.rigScaleKLOp.setInput("rigScale", self.rigScaleOutputAttr)
# Add Xfo Inputs
# Add Xfo Outputs
self.rigScaleKLOp.setOutput("target", self.mainSRTCtrlSpace)
Profiler.getInstance().pop()
def loadData(self, data=None):
"""Load a saved guide representation from persisted data.
Arguments:
data -- object, The JSON data object.
Return:
True if successful.
"""
super(MainSrtComponentRig, self).loadData(data)
# ================
# Resize Controls
# ================
self.mainSRTCtrl.scalePoints(Vec3(data["mainSrtSize"], 1.0, data["mainSrtSize"]))
self.offsetCtrl.scalePoints(Vec3(data["mainSrtSize"] - 0.5, 1.0, data["mainSrtSize"] - 0.5))
# =======================
# Set Control Transforms
# =======================
self.mainSRTCtrlSpace.xfo = data["mainSrtXfo"]
self.mainSRTCtrl.xfo = data["mainSrtXfo"]
self.offsetCtrlSpace.xfo = data["mainSrtXfo"]
self.offsetCtrl.xfo = data["mainSrtXfo"]
# ============
# Set IO Xfos
# ============
self.srtOutputTgt = data["mainSrtXfo"]
self.offsetOutputTgt = data["mainSrtXfo"]
示例14: NeckComponentRig
# 需要导入模块: from kraken.core.objects.control import Control [as 别名]
# 或者: from kraken.core.objects.control.Control import lockScale [as 别名]
class NeckComponentRig(NeckComponent):
"""Neck Component"""
def __init__(self, name="neck", parent=None):
Profiler.getInstance().push("Construct Neck Rig Component:" + name)
super(NeckComponentRig, self).__init__(name, parent)
# =========
# Controls
# =========
# Neck
self.neck01Ctrl = Control('neck01', parent=self.ctrlCmpGrp, shape="pin")
self.neck01Ctrl.setColor("orange")
self.neck01Ctrl.lockTranslation(True, True, True)
self.neck01Ctrl.lockScale(True, True, True)
self.neck01CtrlSpace = self.neck01Ctrl.insertCtrlSpace(name='neck01')
self.neck02Ctrl = Control('neck02', parent=self.neck01Ctrl, shape="pin")
self.neck02Ctrl.setColor("orange")
self.neck02Ctrl.lockTranslation(True, True, True)
self.neck02Ctrl.lockScale(True, True, True)
self.neck02CtrlSpace = self.neck02Ctrl.insertCtrlSpace(name='neck02')
# ==========
# Deformers
# ==========
deformersLayer = self.getOrCreateLayer('deformers')
self.defCmpGrp = ComponentGroup(self.getName(), self, parent=deformersLayer)
self.addItem('defCmpGrp', self.defCmpGrp)
self.neck01Def = Joint('neck01', parent=self.defCmpGrp)
self.neck01Def.setComponent(self)
self.neck02Def = Joint('neck02', parent=self.defCmpGrp)
self.neck02Def.setComponent(self)
# ==============
# Constrain I/O
# ==============
# Constraint inputs
neckInputConstraintName = '_'.join([self.neck01CtrlSpace.getName(),
'To',
self.neckBaseInputTgt.getName()])
self.neckInputCnstr = self.neck01CtrlSpace.constrainTo(
self.neckBaseInputTgt,
'Pose',
maintainOffset=True,
name=neckInputConstraintName)
# Constraint outputs
neck01OutCnstrName = '_'.join([self.neck01OutputTgt.getName(),
'To',
self.neck01Ctrl.getName()])
self.neck01OutCnstr = self.neck01OutputTgt.constrainTo(
self.neck01Ctrl,
'Pose',
maintainOffset=False,
name=neck01OutCnstrName)
neck02OutCnstrName = '_'.join([self.neck02OutputTgt.getName(),
'To',
self.neck02Ctrl.getName()])
self.neck02OutCnstr = self.neck02OutputTgt.constrainTo(
self.neck02Ctrl,
'Pose',
maintainOffset=False,
name=neck02OutCnstrName)
neckEndCnstrName = '_'.join([self.neckEndOutputTgt.getName(),
'To',
self.neck02Ctrl.getName()])
self.neckEndCnstr = self.neckEndOutputTgt.constrainTo(
self.neck02Ctrl,
'Pose',
maintainOffset=True,
name=neckEndCnstrName)
# ==============
# Add Operators
# ==============
# Add Deformer KL Op
self.neckDeformerKLOp = KLOperator('neckDeformerKLOp',
'MultiPoseConstraintSolver',
'Kraken')
self.addOperator(self.neckDeformerKLOp)
# Add Att Inputs
#.........这里部分代码省略.........