2014-12-04 3 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

Это невероятно полезно, и я определенно буду использовать эту информацию, однако на самом деле он не отвечает на вопрос. :(Все, что мне нужно, это запросить используемый рендеринг. Я переключусь и дам вам ответ, если вы можете показать мне, как запросить текущий рендеринг в pymel, так как это то, что я обычно предпочитаю использовать. – TheBeardedBerry

+0

Я включил эту часть в ответ. – kartikg3

+0

Perfect! Спасибо, человек! – TheBeardedBerry

3

Этот скрипт возвращает визуализатор для сконцентрированного панели:

import maya.cmds as cmds 

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

Это не удается, если scriptEditor находится в фокусе – Zak44

Смежные вопросы