我正在尝试编写一个与Maya中最近渲染的预览图像一起使用的插件。我主要在Houdini,Nuke和C4D周围编写工具和管道,所以在Maya周围移动有点困难。
我需要能够找到当前活动渲染设置的完整输出路径。在大多数情况下,我们的艺术家使用VRay进行渲染,但是有些人使用软件和mentalray,所以我需要弄清楚我首先使用的是哪个,然后找到路径,除非我能够简单地调用当前活动层的路径。
到目前为止,我能够在整个渲染设置中找到并使用大多数其他值,但是我要为除默认图层以外的任何内容渲染的图像的完整输出路径已经避开了我。
由于我无法找到保存该值的变量,因此我一直在尝试从我能够找到的路径构建路径,例如项目的当前图像目录的路径和“文件名前缀” ”。在那里我遇到了艺术家为其输出调用渲染变量的问题;场景,图层等。我知道如何通过其他方法找到其中的一些,所以我可以根据需要进行翻译,但我觉得必须有一种方法可以调用它们的值而我根本就不知道它。
TL; DR:
寻找一种方法来查找当前活动渲染层的完整路径,例如renderSettings(fullpath = True),但实际上返回了一个。
OR
寻找一种调用渲染变量的方法,所以一旦我发现“文件名前缀”是场景/图层/场景,我就可以翻译找到完整路径。
TIA!
答案 0 :(得分:-1)
Maya通常会将图像存入当前工作空间的images目录。您可以使用以下命令在python中找到项目树的根目录和image目录:
import os
import maya.cmds as cmds
workspace_root = cmds.workspace(q=True, dir=True)
images_dir = cmds.workspace("image", q=True, fre=True).strip()
file_name = cmds.getAttr('defaultRenderGlobals.imageFilePrefix') or os.path.basename(cmds.file(q=True, sn=True)) or "untitled"
# defaultRenderGlobals is a node that exists in the scene which holds the render settings
# you get the prefix with a standard getAttr
file_location = os.path.join(workspace_root, images_dir, file_name).replace("\\", "/")
派生文件扩展名有点棘手,但是Brian Ewert's website可以在mel中找出它,很容易转换为python。