2014-12-04 2 views

답변

5

메크의 대답은 완벽하게 작동합니다 @. PyMEL 경로를 사용하는 경우 다음을 수행 할 수 있습니다.

import pymel.core.uitypes as pmui 

model_panel = pmui.ModelEditor(pm.getPanel(withFocus=True)) 
print pmui.ModelEditor.getRendererName(model_panel) 

비록이 스 니펫은 변덕스러운 것으로 보입니다. 특히 은 모델 편집기를 찾을 수 없다는 오류를 던집니다. 특히 선반에서 실행 한 경우에는 오류가 발생합니다.

또 다른 약간 말의 것이다 방법,하지만 작동 매번 :

import pymel.core as pm 
import pymel.core.uitypes as pmui 

modelPanelList = [] 
modelEditorList = pm.lsUI(editors=True) 
for myModelPanel in modelEditorList: 
    if myModelPanel.find('modelPanel') != -1: 
     modelPanelList.append(myModelPanel) 

for modelPanel in modelPanelList:  
    if pmui.ModelEditor(modelPanel).getActiveView(): 
     try: 
      # Always better to try in the case of active panel operations 
      # as the active panel might not be a viewport. 
      print pmui.ModelEditor(modelPanel).getRendererName() 
     except Exception as e: 
      # Handle exception 
      print e 

간결한, 의사 PyMEL의 방법이 될 것이다 단지 PyMEL-쓸어 메크의 대답 :

import pymel.core as pm 
print pm.modelEditor(pm.getPanel(wf=True), q=True, rnm=True) 

것은 얻으려면 뷰포트 렌더러의 목록 : 여기

import pymel.core.uitypes as pmui 
print pmui.ModelEditor().getRendererList() 

모델 편집기와 뷰포트 렌더러에 몇 가지 추가 정보입니다. 는 "친숙한"이름을 얻으려면 :

import pymel.core.uitypes as pmui 
print pmui.ModelEditor().getRendererListUI() 

은 간결하게, 그것들을 설정하려면, 나는 PyMEL를 사용 할 것입니다 : 내가 할 것

import pymel.core.uitypes as pmui 

# assuming you know which modelPanel you want to affect 
pmui.ModelEditor("modelPanel4").setRendererName("ogsRenderer") 

모든 뷰포트 (modelPanels)에 영향을하려면

import pymel.core as pm 
import pymel.core.uitypes as pmui 

modelPanelList = [] 
modelEditorList = pm.lsUI(editors=True) 
for myModelPanel in modelEditorList: 
    if myModelPanel.find('modelPanel') != -1: 
     modelPanelList.append(myModelPanel) 

for modelPanel in modelPanelList: 
    pmui.ModelEditor(modelPanel).setRendererName("ogsRenderer") 

초점 단지 뷰포트에 영향을하려면

import pymel.core as pm 
import pymel.core.uitypes as pmui 

modelPanelList = [] 
modelEditorList = pm.lsUI(editors=True) 
for myModelPanel in modelEditorList: 
    if myModelPanel.find('modelPanel') != -1: 
     modelPanelList.append(myModelPanel) 

for modelPanel in modelPanelList:  
    if pmui.ModelEditor(modelPanel).getActiveView(): 
     try: 
      # Always better to try in the case of active panel operations 
      # as the active panel might not be a viewport. 
      pmui.ModelEditor(modelPanel).setRendererName("ogsRenderer") 
     except Exception as e: 
      # Handle exception 
      print e 
+0

이것은 매우 유용하며이 정보를 확실히 사용할 것입니다. 그러나 실제로는 질문에 대답하지 않습니다. :(필자가 필요로하는 것은 render-er를 사용하는 것을 쿼리하는 것이 었습니다. 일반적으로 pymel에서 현재 render-er을 쿼리하는 방법을 보여줄 수 있다면 전환하고 답을 줄 것입니다. – TheBeardedBerry

+0

그 부분을 대답에 포함 시켰습니다. – kartikg3

+0

완벽! 고마워요! – TheBeardedBerry

3

이 스크립트는 집중 패널 렌더러를 반환

import maya.cmds as cmds 

print cmds.modelEditor(cmds.getPanel(wf=True), q=True, rnm=True) 
+0

scriptEditor에 포커스가있는 경우이 문제가 발생합니다. – Zak44

관련 문제