Maya Python 连接曲线控制器到定位器

0 投票
1 回答
825 浏览
提问于 2025-04-18 07:53

我在想,为什么这个在处理字符串时会出错?我试着找出问题出在哪里,发现好像和变量 ShapeNode 有关系?但我不太明白为什么会这样。我希望有人能帮我解释一下。

谢谢。

import maya.cmds as cmds

cmds.file(new=True, f=True)

nodes = []

# create a line of nodes
for i in range(0,6):
    # create node then move it
    node = cmds.spaceLocator()
    cmds.xform(node, ws=True, t=(4*i,0, 0) )

    nodes.append(node)


# collect positions
pts = []

for n in nodes:
    p = cmds.xform(n, query=True, translation=True, worldSpace=True )
    pts.append(p)

# create curve and rename
line = cmds.curve(d=1, p=pts )
newPath = cmds.rename( line, 'Pathway_00' )

# create connections between objects and curve
count = len(pts)
for i in range(0,count):
    node = nodes[i]

    shapeNode = cmds.listRelatives(node, fullPath=True, shapes=True)
    shapeTransform = cmds.ls(newPath)[0]
    shapePath = cmds.listRelatives(shapeTransform, fullPath=False, shapes=True)

    ctrl =  (shapePath[0] + '.controlPoints[' + str(i) + ']')

    cmds.connectAttr( (shapeNode + '.worldPosition[0]'), ctrl , f=True )

1 个回答

1

shapeNode 是一个列表。你可以这样修改你的最后一行:

cmds.connectAttr( shapeNode[0] + '.worldPosition[0]' , ctrl , f=True )

或者可以这样设置 shapeNode 变量:

shapeNode = cmds.listRelatives(node, fullPath=True, shapes=True)[0]

希望这能帮到你。祝好。

撰写回答