У любого есть хорошее решение для запроса текущего рендеринга viewa Maya (Viewport 2.0, Default Viewport, High Quality Viewport) в python?Как запросить текущий визуализатор визуализации в Maya
ответ
@ ответ Томек будет прекрасно работать. Если вы собираетесь маршрут 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
Этот скрипт возвращает визуализатор для сконцентрированного панели:
import maya.cmds as cmds
print cmds.modelEditor(cmds.getPanel(wf=True), q=True, rnm=True)
Это не удается, если scriptEditor находится в фокусе – Zak44
Это невероятно полезно, и я определенно буду использовать эту информацию, однако на самом деле он не отвечает на вопрос. :(Все, что мне нужно, это запросить используемый рендеринг. Я переключусь и дам вам ответ, если вы можете показать мне, как запросить текущий рендеринг в pymel, так как это то, что я обычно предпочитаю использовать. – TheBeardedBerry
Я включил эту часть в ответ. – kartikg3
Perfect! Спасибо, человек! – TheBeardedBerry