我经常使用 Game Exporter 导出我的动画。但我厌倦了从主菜单中选择“文件”>“游戏导出器”。
我可以使用mel脚本打开Game Exporter吗?或者更好的是,我可以使用 mel 脚本自动生成 Game Exporter 的输入(例如:自动输入导出路径、动画名称、仅导出选择,...)?
我可以使用mel脚本打开Game Exporter吗?
打开游戏导出器
gameFbxExporter;
或者更好的是,我可以使用 mel 脚本自动生成 输入Game Exporter(例如:自动输入导出路径, 动画名称,仅导出选择,...)?
导出路径
(设置为“E:/aaa”)
setAttr -type "string" gameExporterPreset2.exportPath "E:/aaa";
动画名称
(设置为“aaa”)
gameExp_SetUniqueAnimationClipName 0"aaa"gameExporterWindow|gameExporterTabFormLayout|gameExporterTabLayout|gameExporterAnimationTab|anim_gameExporterMainFormLayout|anim_gameExporterExportTypeFormLayout|formLayout344|anim_gameFbxExporterAnimClipFrameLayout|anim_gameFbxExporterAnimClipFormLayout|anim_gameFbxExporterScrollLayout|formLayout345|textField20;
但这并不是真正有效,因为硬代码:
formLayout344|
,formLayout345|textField20
。必须找到一种方法让它变得动态。
所以用这个代替
setAttr -type "string" gameExporterPreset2.exportFilename "aaa";
仅导出选择
setAttr("gameExporterPreset2.exportSetIndex") 2;
gameExp_CreateExportTypeUIComponents;
我是这样算的:我检查Mel的所有记录。
刷新以更新动画剪辑名称
from maya import cmds
from maya import mel as mm
# setting the animation clip name, this is 0 indexed
cmds.setAttr('gameExporterPreset2.animClips[0].animClipName', 'clipNameHere', type='string')
# For changes to Animation clip Name only we need to close and reopen the window
if cmds.window("gameExporterWindow", exists=True):
print 'exists'
cmds.deleteUI("gameExporterWindow")
else:
pass
mm.eval('gameFbxExporter;')
我在梅尔做了以下工作,一切正常,但是
// Get start and end frames
int $startFrame = `playbackOptions -q -min`;
int $endFrame = `playbackOptions -q -max`;
setAttr -type "string" gameExporterPreset2.animClips[0].animClipName $baseName;
gameExp_CreateExportTypeUIComponents;
setAttr -type "string" gameExporterPreset2.animClips[0].animClipStart $startFrame;
gameExp_CreateExportTypeUIComponents;
setAttr -type "string" gameExporterPreset2.animClips[0].animClipEnd $endFrame;
gameExp_CreateExportTypeUIComponents;
面临另一个问题,我的开始帧和结束帧为 0,因为它未声明。
我似乎也无法为clipstart、clipend设置值。
需要一些帮助。