[英]how can i create vector type of attributes in maya python api?
我是api的新手,最近我学习了如何创建节点,然后我想创建3个属性,这些属性应该是一个属性的父级,例如当我们通过maya中的“ add attribute”创建矢量属性时,我们得到3个属性(x, y,x),它们将成为一个属性的父级。 那么,我该如何创建它们呢? 正在使用此代码,但我无法得到期望的结果。
nAttr = OpenMaya.MFnNumericAttribute()
cAttr = OpenMaya.MFnCompoundAttribute()
node.old = cAttr.create('oldValue', 'old')
node.oldX =nAttr.create('oldValueX', 'oldX', OpenMaya.MFnNumericData.kFloat)
node.oldY =nAttr.create('oldValueY', 'oldY', OpenMaya.MFnNumericData.kFloat)
node.oldZ =nAttr.create('oldValueZ', 'oldZ', OpenMaya.MFnNumericData.kFloat)
cAttr.setArray(True)
cAttr.addChild(node.oldX)
cAttr.addChild(node.oldY)
cAttr.addChild(node.oldZ)
cAttr.setKeyable(True)
node.addAttribute(node.old)
谢谢...
您走在正确的轨道上,只是有点不知所措。 创建复合属性,然后创建子属性,将所有这些添加到节点类,然后将子属性添加到复合。
compound = OpenMaya.MFnCompoundAttribute()
node.target = compound.create("target", "t")
xv = OpenMaya.MFnUnitAttribute()
node.inTargetX = xv.create("targetTranslateX", "ttx", OpenMaya.MFnUnitAttribute.kDistance)
xv.setStorable(1)
xv.setWritable(1)
compound.addChild(node.inTargetX)
yv = OpenMaya.MFnUnitAttribute()
node.inTargetY = xv.create("targetTranslateY", "tty", OpenMaya.MFnUnitAttribute.kDistance)
yv.setConnectable(1)
yv.setStorable(1)
yv.setWritable(1)
compound.addChild(node.inTargetY)
zv = OpenMaya.MFnUnitAttribute()
node.inTargetZ = xv.create("targetTranslateZ", "ttz", OpenMaya.MFnUnitAttribute.kDistance)
zv.setConnectable(1)
zv.setStorable(1)
zv.setWritable(1)
compound.addChild(node.inTargetZ)
# add to the node
node.addAttribute(node.target)
您还记得使用attributeAffects()
设置属性之间的依赖关系吗? 另外,您可能想对表示空间位置的矢量属性使用MFnUnitAttribute.kDistance
而不是kFloat
值。
除此之外,“没有得到您的期望”到底是什么意思?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.