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
相关产品推荐
相关产品推荐

