首页 > 解决方案 > Python 2.7 中的 Maya、渲染层和实例

问题描述

我有几个具有不同随机名称的渲染层。每个渲染层都有一个灯光实例。我需要删除这个实例。

显示实例的屏幕截图

这是据我所知:

import maya.app.renderSetup.model.override as override
import maya.app.renderSetup.model.selector as selector
import maya.app.renderSetup.model.collection as collection
import maya.app.renderSetup.model.renderLayer as renderLayer
from maya.app.renderSetup.model.renderSetup import instance

import maya.cmds as cmds

rs = instance()

#this creates a render layer called MyRenderSetupLayer
rl = rs.createRenderLayer("MyRenderSetupLayer")

#This creates a lights collection instance inside the created render layer
l1 = rl.lightsCollectionInstance()

#deletes the lights collection instance in the render layer
collection.delete(l1)

最后一行是删除创建的渲染层中的灯光实例,所以我知道你可以做到。我的问题是我不知道如何将变量(如 l1)分配给现有的灯光集合实例,以便我可以删除它。

如果我尝试查看 l1 是什么类型,我会得到

<类'maya.app.renderSetup.model.collection.LightsCollection'>

我的渲染层中总是有不同的名称,但即使我这样做了,我也不知道如何删除这些实例,除非我在那个脚本中创建它们,因为它们被分配给一个变量,然后我可以删除它像那样。但是由于这些文件是由不同的人创建的,所以我目前的工作流程不起作用。

非常感谢!我很感激

标签: pythonmaya

解决方案


我已经整理好了。您需要将灯光实例视为一个集合。虽然,集合的名称不会是lights,因为它在渲染层中显示如下:

灯光实例集合

默认情况下,这些实例将命名为lightsCollectionlightsCollection1lightsCollection2等。

您可以在大纲中找到这些实例,以确保您知道您要使用的名称是什么,但您必须首先禁用“仅显示 DAG 对象”,然后在渲染设置菜单中,您需要启用“显示渲染在编辑器中设置节点”,因为它们默认是隐藏的。

不要只删除这些节点,因为它可能会导致场景出现问题。如果有人想了解更多信息,请告诉我,我会发布更多信息。


推荐阅读