2016-09-23 1 views
0

nuke.allNodes()는 하나의 특정 노드 클래스, 즉 nuke.allNodes ("Transform")를 필터링 할 수 있습니다. 하지만 필터를 더 많이 가지고 싶다면 어떻게해야합니까? 일부는 해결할 수 있습니까? [] for 루프에서 nuke.allNodes()를 사용하여 하나 이상의 핵 노드 클래스를 반복하는 방법은 무엇입니까?

= VAR 그러나 방법 예 motionblur 값 (이 용량이 작동하지) 말할 수 내가 액세스 할 :

아마도에 배치

for i in var: 
    print i.knob("motionblur").value() #Transform nuke node class 
    print i.knob("samples").value() #ScanlineRender nuke node class 

당신을 감사합니다.

+0

Nuke 노드 유형 목록을 반복하고 각 유형에서 함수를 호출합니까? Nuke의 API를 보지 못했지만 이미 이것을 지원하는 메소드가있을 것입니다. – ospahiu

+0

방금 ​​파이썬을 배우기 시작했는데 며칠 동안 인터넷에서 누크의 도움말 문서를 검색했습니다. 아무것도 찾을 수 없었습니다. 아마도 나는 무엇을 검색해야할지 모르거나 주위에 어떤 문제가 있습니까? – masky007

답변

0

코드에 i.knob("motionblur")이 있기 때문에 조금 혼란 스럽습니다. .knob()의 문자열은 노드 유형의 이름이 아닌 손잡이의 이름이어야합니다.

모든 노드를 반복하고 각 노드의 유형을 확인하는 것이 좋습니다. 그런 다음 노드 유형에서 필요한 모든 작업을 수행하십시오. 당신이 노드의 두 가지 유형에 같은 일을하는 경우

for i in nuke.allNodes(): 
    if i.Class() == "MotionBlur": 
     #DO SOMETHING 
    elif i.Class() == "Transform": 
     #DO SOMETHING 

, 당신은 두 목록을 병합하고 그것을 반복 할 수있다.

n = nuke.allNodes("MotionBlur") 
n.extend(nuke.allNodes("Transform")) 
for i in n: 
    #DO SOMETHING TO BOTH TYPES 

구체적으로 달성하고자하는 것이 무엇인지 알 수 없으므로 가장 효율적인 방법은 아닙니다.