maya批量合并同类材质的方法

一、问题描述:
在项目制作中,由于流程问题,导致灯光渲染时,需要导入同类物体多次,于是产生了大量相同材质节点,数量众多,如何能快速合并同类的材质呢。
maya批量合并同类材质的方法_第1张图片
maya批量合并同类材质的方法_第2张图片

二、测试寻找方法:
1、maya默认提供了,如下图的工具,如下图:经过测试发现,必须手动选择材质节点,但要求材质必须被赋予到物体,对于空材质节点,就失效了,哈哈。为了解决此问题,还是需要写个工具,南无阿弥陀佛。
maya批量合并同类材质的方法_第3张图片
2、当然,还有一种方法就是导入模型前,勾选导入选项,如下图所示,可惜,我们当时项目流程是并行的,材质文件已经合并到一起了。
maya批量合并同类材质的方法_第4张图片
三、插件开发目标:
1、插件工具的原理分析:目的是实现一键自动识别同类材质,并清理无效材质垃圾节点。本工具的原理核心,其实在于maya 的shadingNetworkCompare命令,通过对比材质节点树,来判断材质是否相同。
2、源码如下:

global proc int tjh_compareShaderSG(string $sgA,string $sgB)
{ 
     // create compare task
    string $shadingNetworkComparison = ` shadingNetworkCompare $sgA $sgB `;
    // Result: shadingNetworkComparison1
    
    int $result = ` shadingNetworkCompare -q -equivalent $shadingNetworkComparison `;
    // delete compare task
    shadingNetworkCompare -delete $shadingNetworkComparison;
    return $result;
    
}

//shadingNetworkCompare -q -network1 shadingNetworkComparison1;
global proc tjh_compareShaders_proc()
{
           string $shaders[]= ` ls -type "shadingEngine" `;
           int $i,$j;
           
            for($j =0; $j

3、插件用法:拷贝如上代码到txt文本中,并改txt拓展名为.mel文件,之后拖动mel文件到maya主场口,会弹出如下界面:
maya批量合并同类材质的方法_第5张图片
4、直接点击蓝色按钮即可,材质一下子少了好几倍:
maya批量合并同类材质的方法_第6张图片
好了,分享结束,南无阿弥陀佛,哈哈。

你可能感兴趣的:(Maya原创插件汇总,Maya原创课程汇总,Maya编程Mel语言,maya,材质,maya批量合并同类材质的方法)