使用mel/python在Maya中创建简单的层次结构

2024-10-04 11:23:11 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我想在Maya中创建一个非常简单的组外和定位器节点结构,然后将其导出以在我的游戏级别中使用。在

例如

Group_Root
  group_parent
    - group1
      - locator1
    - group2
      - locator2
    - group3

文件中只有一个组根目录,有多个组根目录(每个组的名称都是唯一的) 然而,所有group_parent都有相同的三个子组名(“group1”、“group2”、“group3”),并且所有group1都有一个名为locator1的定位器

到目前为止,我得到的是:

^{pr2}$

但是,我在“c.parent(mode\u group)”处得到这个错误

#错误:对象组1无效

大概是因为有多个名为“group1”的节点,所以它不知道哪个节点是父节点。在

你知道我怎么用完整的路径来做吗?e、 g.“组根|组|父组|组1”


Tags: 游戏节点错误group级别结构parent根目录
3条回答

你见过VFX Overflow吗?这是视觉效果的问答,所以我希望很多观察家对Maya/MEL和Python非常熟悉。也就是说,它是相当新的,所以用户群仍然很小。。。在

名字对MEL来说有点烦人。一般来说,最好不要相信你指定的名字。在

这是一个很好的例子,说明如何*不做事:

group -n myGroup1 circle1 sphere1;

……因为这绝不能保证会产生一个名为“group1”的东西。更好的方法是运行命令并将结果捕获到字符串变量中,例如:

^{pr2}$

然后,使用$result引用结果组。即使这个组织最终被称为“myGroup23”,这个方法仍然有效。在

我不确定在Python中上面的情况如何,因为我主要熟悉直接MEL,但是同样的原则应该适用。在

另一个需要注意的是名称空间功能(namespace和namespaceInfo),它可以用来为当前唯一的顶级组定义一个新的名称空间。在

希望有帮助

我猜已经两年多了,你现在已经知道这个了。。但是对于后人来说,有两个问题-首先,你很清楚绝对路径的必要性,但是在应用maya.cmds.parent()打电话。我刚刚做了一些轻重写来说明-主要是你可以使用这样一个事实,当你创建的东西,他们成为默认选择,和maya.cmds.ls()很聪明,会把你需要的东西还给你。。因此:

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 )

相关问题 更多 >