【发布时间】:2018-09-14 18:02:15
【问题描述】:
我需要使用 Maya 的 GameFbXExporter 插件导出数千个文件,我想知道是否有任何方法可以为这些导出编写脚本,因为我知道每个文件中的参数都很好。我需要做的就是在 FBX 中填写路径部分和导出文件的名称,然后使用插件启动导出本身。
我有点迷茫,不知道该怎么做。有人可以帮助我了解如何实现吗?
谢谢
【问题讨论】:
我需要使用 Maya 的 GameFbXExporter 插件导出数千个文件,我想知道是否有任何方法可以为这些导出编写脚本,因为我知道每个文件中的参数都很好。我需要做的就是在 FBX 中填写路径部分和导出文件的名称,然后使用插件启动导出本身。
我有点迷茫,不知道该怎么做。有人可以帮助我了解如何实现吗?
谢谢
【问题讨论】:
游戏导出器是用 MEL 编写的,因此您可以使用 maya.mel 模块从 Python 与它进行交互。这将打开对话框,例如:
import maya.mel as mel
mel.eval("gameFbxExporter();")
不幸的是,快速浏览一下实际的游戏导出器脚本(它们位于您的 Maya 安装目录中的 scripts/others 目录中——它们都以前缀“gameFBX”开头)看起来 UI 与实际出口行为;它似乎没有公开任何实际上只是以批处理友好的方式导出当前文件的内容。
操作过程称为gameExp_FBXExport,在“gameFbxExporter.mel”中定义。看起来实际的导出业务实际上委托给了常规的 FBX 插件——游戏导出器中的所有其他东西只是管理 fbx 预设,选择要导出的部分场景(如果你有这样的场景设置)和然后调用 fbx 插件。因此,您可以通过循环文件并从 Python 调用 FBXExport() 来使用 Python 批处理该过程。这会将文件导出到 FBX:
import maya.cmds as cmds
cmds.FBXExport('-file', 'path/to/file.fbx')
它只会使用当前处于活动状态的任何 FBX 设置,因此您需要确信文件已正确设置。你会很想把它写成cmds.FBXExport(f='path/to/file'),但这不会工作——FBX插件命令不使用常规的python语法。
如果您当前的设置依赖于导出选择的功能,您需要弄清楚如何缓存正确的选择 - 如果您使用“导出选择集”功能,您应该能够让您的导出器找到按名称设置并在导出前选择它。
cmds.select("name_of_selection_set")
cmds.FBXExport('-file', 'path/to/file.fbx')
您可以使用其他 FBX 插件命令——记录在案的 here 来检查和操作文件中的设置。
大多数专业用户并不使用 GameExport 管道,因为它非常不透明且不适合批处理。从长远来看,您可能想要编写一个简单的系统,为不同的文件类型提供标准设置,并在没有 GameExporter 的情况下直接导出 FBX - 虽然它是一个不平凡的项目,但它比黑客攻击更容易维护和扩展Autodesk 版本的边缘,坦率地说,相当蹩脚。
如果您还不熟悉它,http://tech-artists.org/ 是寻找管道帮助和建议的好地方。
【讨论】:
FBXExportSplitAnimationIntoTakes。你会遇到同样的语法问题(标志变成引用的参数),但你应该能够设置采取这种方式。