gpt4 book ai didi

python - 从 Maya 场景文件获取摄像机列表或渲染全局变量,而无需在 Maya 中打开场景

转载 作者:行者123 更新时间:2023-12-01 05:52:18 29 4
gpt4 key购买 nike

是否可以使用 python 读取 Maya 场景文件而无需打开并获取相机列表或渲染全局设置或对其执行某些操作。我需要这个,这样如果它们是多个场景文件,我就不必打开每个 Maya 场景,只需从 python 脚本中调整它,如果有人可以展示如何开始休息,我将自己做,我将非常感激...

最佳答案

这是可能的,只是不切实际。解析 Maya ASCII 文件非常简单。 Maya 二进制文件没有那么多。现在讨论这些问题可能有点为时过早。

首先要做的事情。 Maya 确实提供了批处理模式,批处理模式不会使用完整许可证。它仍然打开完整的 Maya 环境,但没有 GUI。这是注入(inject)脚本的完美平台。它并不能真正满足您不打开 Maya 的要求,但它满足所有其他要求。有几种方法可以使用这种批处理模式。但大多数情况下,它可以归结为两种通用方法。

方法1,使用mayabatch:mayaXX/bin/目录包含一个名为mayabatch的命令。您可以简单地从 cmd/shell 批处理文件/shellscript 调用它。这是调用现有脚本的一种极其简单的方法。假设 mayabatch 位于您的环境路径中,并且您的脚本位于 Maya 脚本路径中。为了简单起见,我们假设您的脚本如下所示(demo.py):

import maya.cmds as cmd

def func():
print cmd.ls()

# we want this to execute on import
func()

现在在 Windows 下为一个文件调用此方法将如下所示:

mayabatch -command "python(""import demo"") " -file filename.ma

在当前文件夹文件中的所有 Maya 上调用它就很简单:

for %i in (*.ma) do mayabatch -command "python(""import demo"") " -file %i

Mac 和 Linux 上的引用规则有点不同,但应该很容易找到。请参阅您的 shell 手册。

方法 2,使用 mayapy 和独立版本:

现在你也可以直接用mayapy调用python脚本了。它与 mayabtach 位于同一目录中。如果您在系统路径中包含 Maya 模块,那么也可以从其他 python 解释器调用独立版本。现在必须对脚本进行一些更改,以便它执行相同的操作(demo_direct.py):

#init maya
import maya.standalone
maya.standalone.initialize( name='python' )
import maya.cmds as cmd
import glob

def func():
print cmd.ls(shapes=True)

for file in glob.glob('*.m[ab]'):
cmd.file( file, o=True )
func()

调用此表单命令行:

mayapy demo_driect.py

这些方法都不会加载 Mayas 图形用户界面。所以你不能调用诸如 playblast 之类的东西。因为它们依赖于 GUI,因此依赖于完整的 Maya 许可证。没有什么表明您不能在 GUI 中执行与上面类似的加载循环。

然后是没有实际加载 Maya 的方法。这有点棘手。这样做不一定值得,因为批处理节点非常快,因为它们不会最终加载所有内容。解析 Maya ASCII 文件以获取帧范围的示例脚本。您可能会发现它很有用。请参阅以下post 。对于 Maya 二进制文件,cgKit 中有一个 python 模块这将帮助您读取 Maya 二进制 block 。不幸的是,它对理解数据没有任何作用。

关于python - 从 Maya 场景文件获取摄像机列表或渲染全局变量,而无需在 Maya 中打开场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13757962/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com