gpt4 book ai didi

python - 使用外部 python 脚本打开 maya 并在 maya 中运行另一个脚本

转载 作者:太空狗 更新时间:2023-10-30 01:51:05 52 4
gpt4 key购买 nike

是否可以从 Windows 中的命令提示符(或 Linux 中的 bash)调用脚本来打开 Maya,然后随后在 Maya 中运行自定义脚本(可能每次运行时都会更改)?我正在寻找比更改 userSetup 文件然后运行 ​​Maya 更优雅的东西。

这里的目标是能够打开一个 .mb 文件,运行一个脚本来定位场景,设置一组通用的灯光,然后将场景渲染到特定的位置和文件类型。我希望能够将其设置为计划任务以检查目录中是否有任何新场景文件,然后打开 Maya 并继续。

感谢您的帮助!

最佳答案

对于这样的事情,您可以独立使用 Maya 而不是完整的 UI 模式。它更快。它非常适合像这样的批量计划作业。 Maya Standalone 只是在没有 GUI 的情况下运行的 Maya。独立初始化 Maya 后,您可以导入和调用所需的任何脚本,作为原始调用脚本的一部分。首先,这里有一个示例:(请随意使用它作为引用/修改它以满足您的需要)

在您的脚本中,您首先要独立初始化 Maya。

import maya.standalone
maya.standalone.initialize("Python")

import maya.cmds as cmds
cmds.loadPlugin("Mayatomr") # Load all plugins you might need

这将使 Maya 运行。现在我们打开和/或导入所有必要的文件(例如灯光、模型等)

# full path to your Maya file to OPEN
maya_file_to_open = r"C:/Where/Ever/Your/Maya_Scene_Files/Are/your_main_maya_file.mb"

# Open your file
opened_file = cmds.file(maya_file_to_open, o=True)

# full path to your Maya file to IMPORT
maya_file_to_import = r"C:/Where/Ever/Your/Maya_Scene_Files/Are/your_maya_file.mb"

# Have a namespace if you want (recommended)
namespace = "SomeNamespaceThatIsNotAnnoying"

# Import the file. the variable "nodes" will hold the names of all nodes imported, just in case.
nodes = cmds.file(maya_file_to_import, i=True,
renameAll=True,
mergeNamespacesOnClash=False,
namespace=namespace,
returnNewNodes=True,
options="v=0;",
type="mayaBinary" # any file type you want. this is just an example.
)

#TODO: Do all your scene setup/ positioning etc. if needed here...
#Tip: you can use cmds.viewFit(cam_name, fitFactor=1) to fit your camera on to selected objects

现在我们把这个文件保存出来,调用Maya Batch渲染器渲染出来

render_file = "C:/Where/Ever/Your/Maya_Scene_Files/Are/your_RENDER_file.mb"
cmds.file(rename=render_file)
cmds.file(force=True, save=True, options='v=1;p=17', type='mayaBinary')

import sys
from os import path
from subprocess import Popen

render_project = r"C:/Where/Ever/YourRenderProjectFolder"
renderer_folder = path.split(sys.executable)[0]
renderer_exec_name = "Render"
params = [renderer_exec_name]
params += ['-percentRes', '75']
params += ['-alpha', '0']
params += ['-proj', render_project]
params += ['-r', 'mr']
params += [render_file]
p = Popen(params, cwd=renderer_folder)
stdout, stderr = p.communicate()

就是这样!当然,您的脚本必须使用 Maya 的 Python 解释器 (Mayapy) 运行。

请查看文档以了解用于更多选项的所有命令,尤其是: cmds.file() cmds.viewFit() cmds.loadPlugin() Subprocess and Popen

另外,由于 Python 的强大,您可以使用 sched ( docs ) 等模块在您的 Python 代码中安排此方法的运行。

希望这是有用的。玩得开心。干杯。

关于python - 使用外部 python 脚本打开 maya 并在 maya 中运行另一个脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27437733/

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