我目前正在使用Maya ASCII .ma作为源格式和我自己的物理和图形格式作为输出,为我的独立游戏创建基于导入的管道。我会在Maya中保留像运动范围属性这样的东西,例如铰链接头。需要大量调整的其他类型的参数最终会出现在单独的源文件中(对于质量,弹簧常数,物理引擎强度等等,可能会使用.ini)。
输入是一个.ma和一个.ini,输出是一个.physics和几个.mesh文件(每个几何/材质一个.mesh文件)。
我也可能会使用Python 3.1重新格式化数据,我已经找到了一些读取基本Maya ASCII的LGPL 2.1代码。我可能也会在开发过程中使用Python来启动平台。游戏是用C ++开发的。
你会建议反对所有这些吗?对可能存在缺陷的事情的快速总结:
编辑:如果您对如何实施物理/图形导入/导出工具链有更好的建议,我会很感激输入。
答案 0 :(得分:4)
如果你真的想这样做,你应该知道一些事情。主要的一点是,它可能比你最初期望的更麻烦。其他一些是:
vrt = getattr("rpt")
rt = mat4.translation(vrt)
...
m = t * rt * rpi * r * ar * rp * st * spi * sh * s * sp
答案 1 :(得分:1)
作为一种人类可读和人类可写的通用序列化格式,具有出色的Python支持(以及,实际上任何语言支持),您可能需要考虑在ini文件中使用YAML或JSON或XML。
如果您从不手动生成文件,那么在您的情况下可以接受XML。
JSON和YAML的一个优点是输入:两种格式都被解析为Python列表,字典,浮点数,整数......基本上:理智的python类型。
另外,除非你确定你所使用的每个库都适用于3.1,否则你可能会因为库可用性问题而考虑坚持使用2.x.
答案 2 :(得分:1)
您应该考虑使用基于导出的管道或标准化文件格式(如OBJ或COLLADA),而不是重新实现.ma解析器并复制解释它所需的所有Maya内部。
.ma / .mb格式不是由Maya本身以外的任何程序读取的,因此Autodesk不会付出任何努力使这个过程变得简单。要正确解析它,您需要实现整个MEL脚本语言。
我见过的所有基于Maya的管道首先将内容导出为标准化文件格式,或者在Maya中运行MEL脚本以使用MEL节点接口转储内容。
注意Maya可以在“无头”模式下运行,它可以加载场景,执行MEL脚本并且存在,而无需加载GUI。因此,在自动构建系统中使用它没有问题。