maya有的时候需要在场景里切换物体显示效果,比如线框还是贴图之类
有时候在大量场景文件需要单独对一个物体进行贴图查看显示,而不需要显示其他的,因为加载贴图会很卡
一般方法是我们选中需要显示贴图的物体,然后孤立选择,再按6切换,但有的时候切回去的时候忘了关贴图就会直接卡死maya
max有这种方式可以单独对一个物体显示线框,但是maya没有很方便的方式(我用的2016)
所以这里给出一种方式可以单独切换,比如下面的效果
但不影响渲染结果,只是修改视口的显示效果
这里主要根据的是maya里物体对象显示的绘制覆盖属性
这个属性可以覆盖你在视口设置的物体显示模式,线框啊 实体带贴图啊(viewport 2也是这样)
所以可以根据这个对maya里面视口显示进行优化
比如先重置一遍覆盖显示,然后单独对某些物体显示需要的效果
于是写了下面的mel脚本
global proc setAll()
{
string $objects[] = `ls -dag -type mesh`;
for($object in $objects)
{
setAttr ($object+".overrideEnabled") 1;
setAttr ($object+".overrideTexturing") 0;
}
}
global proc setOneVisible()
{
string $objects[] = `ls -dag -type mesh -sl`;
for($object in $objects)
{
setAttr ($object+".overrideEnabled") 0;
}
}
global proc setOneInvisible()
{
string $objects[] = `ls -dag -type mesh -sl`;
for($object in $objects)
{
setAttr ($object+".overrideEnabled") 1;
}
}
global proc wjChangeViewportRender()
{
if(`window -ex myTestWin`)
deleteUI myTestWin;
window -t "材质显示切换" myTestWin;
columnLayout -adj 1;
button -l "初始化全部隐藏" -c "setAll";
button -l "显示材质" -c "setOneVisible";
button -l "隐藏材质" -c "setOneInvisible";
showWindow myTestWin;
}
wjChangeViewportRender();
使用方法是先初始化全部隐藏,然后按6键
另外测试表明一开始初始化后,单独再打开某一个带贴图的物体,那个物体的贴图是单独加载的
并不会加载全部贴图,其他物体因为都覆盖的了显示属性,所以可以优化maya里操作流程
当然这还只是一个原型,可以用其他方式去扩展,比如远处的不显示,或者只显示线框
可以在很大程度上使得maya操作更流畅