所以我想在Maya中用组和定位器节点创建一个非常简单的结构,然后将其导出以用于我的游戏级别。
e.g。
Group_Root
group_parent
- group1
- locator1
- group2
- locator2
- group3
文件中只有一个Group_Root,有很多group_parents(每个都是唯一命名的) 但是所有group_parent具有相同的三个子组名称(“group1”,“group2”,“group3”),并且所有group1都有一个名为locator1的定位器
到目前为止我所拥有的是:
group_parent = c.group( em=True, name="group_parent", parent="Group_Root")
modes = ["group1", "group2", "group3"]
for mode in modes:
mode_group = c.group( em=True, n=mode, parent=group_parent )
if mode == "group1":
s = c.spaceLocator(name="locator1")
c.parent( mode_group )
elif mode == "group3":
s = c.spaceLocator(name="locator2")
c.parent( mode_group )
但是我在“c.parent(mode_group)”
中收到此错误#Error:对象group1无效
大概是因为有多个节点叫做“group1”,所以它不知道哪个节点是父节点。
知道我如何用完整路径做到这一点?例如“Group_Root | group_parent |组1”
答案 0 :(得分:0)
你见过VFX Overflow吗?这是视觉效果的Q& A,所以我希望许多观察者对Maya / MEL和Python非常熟悉。也就是说,这是相当新的,所以用户群仍然很小......
答案 1 :(得分:0)
MEL的名称可能有点烦人。一般来说,最好永远不要相信你所指定的名称。
这是*不做事情的一个很好的例子:
group -n myGroup1 circle1 sphere1;
..因为这绝不能保证会产生名为“group1”的东西。更好的方法是运行命令并将结果捕获到字符串变量中,例如:
string $result = `group -n myGroup circle1 sphere1`;
然后,使用$ result来引用结果组。即使该小组最终被称为“myGroup23”,这仍然有效。
我不确定上面的内容在Python中是怎样的,因为我主要熟悉直接MEL,但同样的原则应该适用。
另一个需要注意的是名称空间功能(名称空间和名称空间信息),它可用于为手头的唯一顶级组定义新的名称空间。
希望有所帮助
答案 2 :(得分:0)
我猜这是两年多了,你现在已经想到了这个......但是对后人来说,有两个问题 - 首先,你需要绝对路径,但是有你应用maya.cmds.parent()调用的方式也有一点点错误。我刚刚做了一些简单的重写来说明 - 主要是你可以使用这样一个事实:当你创建它们时它们会被默认选中,而maya.cmds.ls()足够聪明,可以返回你需要的东西.. Ergo:< / p>
c.group( em=True, name="group_parent", parent="Group_Root")
group_parent = c.ls(sl=True)[0]
modes = ["group1" , "group2", "group3"]
for mode in modes:
c.group( em=True, n=mode, parent=group_parent )
mode_group = c.ls(sl=True)[0]
if mode == "group1":
c.spaceLocator(name="locator1")
s = c.ls(sl=True)[0]
# maya.cmds.parent() with something selected will actually
# parent the specified object to the selected object.
# You don't want that.
# We might as well use the explicit syntax to be sure
# (parent everything specified to the last item in the list)
c.parent( s, mode_group )
elif mode == "group3":
c.spaceLocator(name="locator2")
s = c.ls(sl=True)[0]
c.parent( s, mode_group )