使用 Python 在 Maya 中生成具有位置的对象

问题描述

我有一些代码使用 Python 从文件中读取一些数据,然后在仍然使用 Python 的同时根据该文件在 Maya 中生成一个对象。一切正常,对象看起来正确。然而,问题是组成对象的所有段都没有正确的实际位置,即使它们看起来正确,所有这些段的平移 XYZ 都设置为 0。这样做的问题是,当我稍后将模型导入 Unity3D 时,我无法与对象正确交互,因为位置仍然为 0 而网格应该是。有没有一些正确的方法生成对象,使它们有一个位置?

代码调用多个函数来制作不同的段(下面显示了这些函数之一的一个示例)。然后它使用 maya.cmds.polyUnite 将它变成一个对象。然后使用运行一定次数(在文件中指定)的 for 循环重复此操作。这个 for 循环调用 cmds.duplicate(object made above) 并使用 cmds.move(0,z,duped object) 在 z 轴上移动新对象。由于一些糟糕的编码,代码然后调用 polyUnite 将其全部合并为一个大对象,然后调用 polySeperate 再次将其拆分为小段。这可能是导致问题的原因吗?

每个片段的生成方式如下:

    cmds.polyCube(n='leftWall',w=w,h=h,d=d,sw=w,sh=h,sd=d)
    cmds.setAttr('leftWall.translateX',-Bt/float(2)-(THICKnesS/float(2)))
    cmds.setAttr('leftWall.translateY',a)
    cmds.setAttr('leftWall.rotateZ',-90)
    cmds.polynormal('leftWall',nm=0,unm=0)

    cmds.polyCube(n='rightWall',sd=d)
    cmds.setAttr('rightWall.translateX',Bt/float(2)+(THICKnesS/float(2)))
    cmds.setAttr('rightWall.translateY',a)
    cmds.setAttr('rightWall.rotateZ',90)
    cmds.polynormal('rightWall',unm=0)

    cmds.polyUnite('leftWall','rightWall',n='walls')
    addTexture('walls','wall.jpg')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)