2013-03-10 136 views
0

我有一个Spot Lights的领域,我试图用pm.aimConstraint将他们的目标链接到一个定位器(称为“Light Point”)。以下是我正在努力的部分以及它给我的错误:使用aimConstraint玛雅Python Pymel的错误

import pymel.core as pm 

aimTarget = "Light Point" 

selection = pm.ls(sl = True) 
for each in selection: 
    pm.aimConstraint(aimTarget, each) 

Error: MayaNodeError: file C:\Program Files\Autodesk\Maya2013\Python\lib\site-packages\pymel\internal\pmcmds.py line 140: # 

很明显,选择是所有的聚光灯。

理想我想这样做,而不必选择所有的灯,我觉得会是这个样子:

pm.aimConstraint("Light Point", "spotLight"+light) 

“光”是灯在for循环的范围内的数,转换为一个字符串。这会得到相同的错误。

我对python仍然很陌生,但之前已经使用过第一个脚本,并且很困惑它为什么不适用于任何事情,甚至不是聚光灯。

回答

1

“灯点”不是有效的对象名称。

当您在Maya中创建节点时,您需要捕获您在创建时给定的对象,否则不能保证它是您认为它的对象。

+0

当定位器是由它被重新命名为“光点”。不过,我现在已经意识到它事实上被命名为Light_Point。所以这已被调整。 由于某种原因,脚本现在正在工作。我仍然不清楚为什么,所以任何解释都是值得欢迎的! – user2153909 2013-03-10 16:10:01

+1

空间是一个对象名称中的无效字符。 Maya会将其重写为下划线_。 – joojaa 2013-03-10 16:20:52

0

我意识到这是一个较旧的帖子,但任何人都应该看到它, PyMEL具有PyNode()函数。所以如果你要通过那里传递“光点”,它将返回场景中的物体。

from pymel.core import * 

PyNode("myCube") 
# Result: nt.Transform(u'myCube') #