maya导入arnold代理ass文件后,无法修改ass内贴图路径问题的解决方法

一、问题描述

最近遇到了maya模型standIn方式导入arnold .ass格式后,贴图内部路径不对,无法在maya中直接修改的问题,而ass文件是很大文本格式数据。maya中没有现成的工具显示ass文件原有丢失贴图路径,所以考虑用pilotedit超大文本编辑器来手动查询,修改路径链接:一方面可以查看原有图片路径;另一方面快速批量替代图片新路径。

二、解决方法如下:

1、用pilotEdit打开.ass文件,如果是.gz压缩文件,可以用7z压缩软件先解压,打开后,直接拖拽ass文件到pilotEdit中。几秒后,将ass中涉及的 image{}标签类 filename名后的图片路径的对应图片文件,都拷贝到现有maya工程的sourceimages目录里。
2、在pilotEdit中,按ctrl+r,或 点击查找>替换 菜单命令,弹出替换窗,替换路径,快速替代新图片根路径。编辑完成后,可以关闭7z,即可自动保存修改结果,到gz压缩包中了。如果硬盘空间够大,还是建议使用ass未压缩文件,替换如下图:
在这里插入图片描述
3、最终的替换结果如下:
在这里插入图片描述

三、maya内批量替换gz为ass路径mel程序方法:

此方法可以把场景中所有的standIn节点的XXXXX.ass.gz 压缩文件路径,转换为XXXXX.ass 非压缩文件路径,拷贝代码在maya的脚本编辑其中粘贴,运行,阿弥陀佛。

//批量standin节点路径 gz 转 ass 路径
global proc  tjh_arnold_standin_gzToAss()
{
    string $ass_array[] = ` ls -type "aiStandIn" `;
    string $ass;
    
    for($ass in $ass_array)
    {
        string $path = ` getAttr ($ass+".dso") `;
        string $splitPath[];
        tokenize $path "." $splitPath;
        if( $splitPath[ size($splitPath)-1 ]== "gz")
        {
           print ($ass+":::"+$path+"\n"); 
           string $finalPath =$splitPath[0];
           for($i=1;$i<size($splitPath)-1;$i++ )
           {
               $finalPath += "."+$splitPath[$i];              
           }
            setAttr ($ass+".dso") -type "string" $finalPath  ;
        }
        
    }
   
}
tjh_arnold_standin_gzToAss ;


//批量standin节点路径 ass 转 gz 路径
global proc  tjh_arnold_standin_assToGz()
{
    string $ass_array[] = ` ls -type "aiStandIn" `;
    string $ass;
    
    for($ass in $ass_array)
    {
        string $path = ` getAttr ($ass+".dso") `;
        string $splitPath[];
        tokenize $path "." $splitPath;
        if( $splitPath[ size($splitPath)-1 ]== "ass")
        {
           print ($ass+":::"+$path+"\n"); 
           string $finalPath =$splitPath[0];
           for($i=1; $i<size($splitPath); $i++ )
           {
               $finalPath += "."+$splitPath[$i];               
           }
           $finalPath += ".gz";	
           setAttr ($ass+".dso") -type "string" $finalPath  ;	
        }
        
    }
   
}
tjh_arnold_standin_assToGz;

四、maya场景内查找ass文件路径 与 批量替换路径mel方法:

如下代码可以批量查找制定ass 包含名的standIn节点,并可以批量替换为制定路径名。


//查找standin 节点 ass图片名是否存在检测,和路径替换
global proc  arnold_ass_path_findname(string $find_path,string $replace_path)   //$replace_path 为空 "" 时,仅仅显示满足查找条件的图片路径结果。
{
    string $ass_array[] = ` ls -type "aiStandIn" `;
    string $ass;
    
    for($ass in $ass_array)
    {
        string $path = ` getAttr ($ass+".dso") `;
        string $result =` match $find_path $path `;
        if($result == $find_path)
        {
        print ($ass+":::"+$path+"\n");
        if($replace_path !="")setAttr ($ass+".dso") -type "string" $replace_path  ;
        } 
    }
   
}
//查询ass路径,如果存在 替换为新路径
arnold_ass_path_findname "e:/Tree/Tree_D.ass" "E:/Tree_D.ass";

//仅仅查询 standin 中的ass文件名是否存在
arnold_ass_path_findname "e:/Tree/Tree_D.ass" "";

结束语:

最终效果看,,对于超大ass文件的图片路径修改,还是比较高效的。特别是查过几个G的大文件都可以用此pilotEdit编辑器,快速打开和修改。南无阿弥陀佛。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maya动画技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值