You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maya Python 2.7 如何删除所有render layer中的lights collection实例

你可以直接遍历场景中所有已存在的渲染层,对每个渲染层统一调用lightsCollectionInstance()方法即可获取对应的灯光集合实例,不需要提前知道渲染层名称,也不需要在创建时持有变量。

完整实现代码

import maya.app.renderSetup.model.collection as collection
from maya.app.renderSetup.model.renderSetup import instance

# 获取当前场景的RenderSetup实例
rs = instance()

# 遍历所有已存在的渲染层
for rl in rs.getRenderLayers():
    # 跳过默认的masterLayer(可根据需求删除该行来处理默认层)
    if rl.name() == "masterLayer":
        continue
    # 获取当前渲染层的灯光集合实例
    light_collection = rl.lightsCollectionInstance()
    # 非空判断,避免无灯光集合时执行删除报错
    if light_collection:
        collection.delete(light_collection)
        print(f"已成功删除渲染层【{rl.name()}】的灯光集合实例")

逻辑说明

  • rs.getRenderLayers() 会返回当前场景中全部渲染层的实例列表,不受命名规则限制,可直接批量遍历
  • 任意渲染层实例都内置lightsCollectionInstance()方法,和你手动创建渲染层时调用的接口完全一致,不需要是当前脚本生成的渲染层也能正常调用
  • 如果你不需要处理全部渲染层,可以在遍历中添加名称过滤规则,示例如下:
    # 仅处理名称包含"vray"的渲染层
    if "vray" not in rl.name():
        continue
    

内容的提问来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:48:05