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-ify-Tomek的答案:
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
// find current modelEditor
string $cur_mp;
for ($mp in `getPanel -typ "modelPanel"`){
// check if active
if (`modelEditor -q -av $mp`){
$cur_mp = $mp;
break;
}
}
if ($cur_mp != ""){
// your coude next
print $cur_mp;
$new_rndr = "ogsRenderer";
// set new renderer
modelEditor -e -rnm $new_rndr $cur_mp;
}
py公司:
import maya.cmds as cm
cur_mp = None
for mp in cm.getPanel(type="modelPanel"):
if cm.modelEditor(mp, q=1, av=1):
cur_mp = mp
break
if cur_mp:
# do your stuff
print cur_mp
new_rndr = "ogsRenderer"
cm.modelEditor(cur_mp, e=1, rnm=new_rndr)
皮梅尔:
import pymel.core as pm
# maybe its not the best solution to iterate over all existing modelPanels
mp_ls = [x
for x in pm.lsUI()
if type(x).__name__ == "ModelEditor"
and type(x.getParent()).__name__ == "PyUI"
and x.getActiveView()]
if mp_ls:
# do your stuff
print mp_ls[0] # current modelEditor
new_rndr = "ogsRenderer"
mp_ls[0].setRendererName(new_rndr)
此脚本返回聚焦面板的渲染器:
@托马克的回答会很有效的。如果要走PyMEL路线,可以执行以下操作:
不过,这一片段似乎是喜怒无常。它有时会抛出一个错误,抱怨找不到模型编辑器,特别是在从工具架执行时。
另一种方法可能有点冗长,但每次都有效:
一个简洁的,伪PyMEL的方法就是PyMEL-ify-Tomek的答案:
要获取视口渲染器列表,请执行以下操作:
下面是一些关于模型编辑器和视口渲染器的额外信息。 为了得到他们“友好”的名字:
简明扼要地说,我会使用PyMEL并执行以下操作:
要影响所有视口(modelPanels),我将执行以下操作:
要仅影响焦点中的视口,请执行以下操作:
遍历所有模型面板,找到一个活动的(灰色轮廓) 并请求renderame(rnm)
梅尔:
py公司:
皮梅尔:
相关问题 更多 >
编程相关推荐