我沿着nurbsPlane完成了卵泡的创建。但是,当我连接“输出平移”(OutTranslate)属性以使它们随顶点一起移动时,除第一个属性外的所有属性都会移动到平面的末端。有人能解释它为什么这样做吗?我是一个初学者,所以如果有什么东西写得很奇怪,请告诉我,这样我可以提高。提前谢谢
import maya.cmds as cmds
listName = ['spine01', 'spine02','spine03', 'spine04','spine05', 'spine06','spine07', 'spine08', 'spine09', 'spine10' ]
planeLength = 45.00
cmds.select(all=True)
cmds.delete()
cmds.nurbsPlane(p=[planeLength/2,0,0], ax=[0,0,0], w=planeLength, lr=0.1 , d=3, u=9, v=1, n='spineNurbsPlane')
cmds.rotate(0,0,90, 'spineNurbsPlane')
cmds.select(d=True)
cmds.group(em=True, n='follicle_grp')
for i in range( len(listName)):
y=str(i+1)
cmds.createNode( 'follicle', n='follicle'+listName[i])
cmds.parent('follicle'+y,'follicle_grp', s=True )
cmds.setAttr('follicle'+listName[i]+'.simulationMethod', 0)
cmds.makeIdentity('spineNurbsPlane', apply=True, t=1, r=1, s=1, n=0 )
cmds.connectAttr('follicle'+listName[i]+'.outRotate','follicle'+y+'.rotate', f=True )
cmds.connectAttr('follicle'+listName[i]+'.outTranslate','follicle'+y+'.translate')
cmds.connectAttr('spineNurbsPlaneShape.worldMatrix','follicle'+listName[i]+'.inputWorldMatrix')
cmds.connectAttr('spineNurbsPlaneShape.local','follicle'+listName[i]+'.inputSurface')
cmds.setAttr( 'follicle'+y+'.parameterV', 0.5)
cmds.setAttr( 'follicle'+y+'.parameterU', i*5)
问题是您正在设置毛囊的parameterU属性的值。该属性的范围是从0到1(是的,您可以设置为1以上,但不应该设置),并且您传递的值远远超过1,使它们在顶部聚集在一起
为了举例说明,让我们看看当前使用
i*5
获得的几个值,并用循环中的值替换i
:所以你需要传递一个有意义的值。要重新映射,使值介于0-1之间,可以使用以下简单公式:
loopIndex / (totalFollicleCount - 1)
。就是这样,这将沿着平面的长度正确地设置它们,因为它将使值在0-1之间。顺便说一下,我们需要将总长度减去1,以得到最后一个要放置在顶部的毛囊哦,请利用空白使代码更可读,否则会让我的眼睛流血
相关问题 更多 >
编程相关推荐