Получение объектов коллекции из коллекции, май 2018 - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь завладеть объектами, включенными в коллекцию в новой системе рендеринга Mayas. Я могу получить те, которые включены в поле включения, но не те, которые добавляются с помощью добавления или перетаскивания.

По сути, я пытаюсь найти все источники света, которые активны в сцене, но поскольку новый источник света должен быть нестабильным, мы решили вместо этого использовать коллекции, поэтому мне нужно выяснить, какие источники света в сцена находится в коллекции или дочерней группе, которая находится в коллекции, и была ли эта группа отключена. Это мой очень простой сценарий, который работает до тех пор, пока источники света добавляются в виде «шаблона» рядом с полем для включения текста.

#modules
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
import maya.app.renderSetup.model.renderSetup as renderSetup
import maya.cmds as mc

rs = renderSetup.instance()

rl_test = rs.createRenderLayer("Layer") # create renderlayer
cl_test_lights = rl_test.createCollection("Prod_lights")
cl_test_lights.getSelector().setPattern('Prod_lights_grp')
cl_test_lights.setSelfEnabled(0) #disable collection
collections = rl_test.getCollections() #get collections within renderlayer

DeactivatedLightsLi=[]
for each in collections: 
    if each.isSelfEnabled()==False: #if collection is disabled
    pattern = each.getSelector().getPattern() 
    DeactivatedLightsLi.append(pattern) #add this pattern to the list

Maya screengrab, to visualise what I am after

1 Ответ

0 голосов
/ 15 января 2020

Ну, похоже, я в конце концов нашел свой ответ, так что, возможно, он может помочь кому-то еще. На самом деле был ответ на другой пост, который поставил меня на правильный путь. Его ответ мне не помог, но дал мне ключевое слово для поиска, чтобы найти нужную мне информацию в документации по rendersetup.

C: \ Program Files \ Autodesk \ Maya2018 \ Python \ Lib \ site-packages \ maya \ app \ renderSetup \ model \ selector.py

#modules
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
import maya.app.renderSetup.model.renderSetup as renderSetup
import maya.cmds as mc

rs = renderSetup.instance()

rl_test = rs.createRenderLayer("Layer") # create renderlayer
cl_test_lights = rl_test.createCollection("Prod_lights")
cl_test_lights.getSelector().setPattern('Prod_lights_grp')
cl_test_lights.setSelfEnabled(0) #disable collection
collections = rl_test.getCollections() #get collections within renderlayer

DeactivatedLightsLi=[]

for each in collections: 
    if each.isSelfEnabled()==False: #if collection is disabled
        pattern = each.getSelector().getPattern() 
        DeactivatedLightsLi.append(pattern) #add this pattern to the list
        dragged = each.getSelector().getStaticSelection()
        DeactivatedLightsLi.append(dragged) #add this elements also to the list

print(DeactivatedLightsLi)
...