VR建模中由于对模型材质等要求较为规范,所以不可避免需要整理场景,脚本就发挥作用了。
最近一次VR项目中用到几个:
多维子材质分离:有的VR引擎不支持多维子材质必须分离,而用这个工具正好可以整理材质,将因为合并多个场景导致的材质重复给清理掉。
随机选取变换:大面积种树的时候,有时可以用Forest达到随机,但有时场景情况比较多,这个脚本就很好用了。
自己写了个材质清理:防止3dsmax软件中的一些设置在不同引擎中表现不一致。
--材质清理 global allMtls=sceneMaterials for i=1 to allMtls.count do ( local curMtl=allMtls[i] if (classof curMtl==Standardmaterial) then ( curMtl.ambient = color 150 150 150 curMtl.Diffuse = color 150 150 150 curMtl.Specular = color 230 230 230 ) if (classof curMtl==Multimaterial) then ( for j=1 to curMtl.materialList.count do ( curMtl.materialList[j].ambient = color 150 150 150 curMtl.materialList[j].Diffuse = color 150 150 150 curMtl.materialList[j].Specular = color 230 230 230) ) )
改贴图后缀:
--将场景中所有贴图后缀改为dds,绝对路径改为相对路径 global allMtls=sceneMaterials for i=1 to allMtls.count do ( local curMtl=allMtls[i] if (classof curMtl==Standardmaterial) then (--标准材质 curFilePath=curMtl.diffuseMap.fileName--"c:\xxx.jpg" curFileName=getFilenameFile curFilePath--"xxx" curDif=curMtl.diffuseMap curOpc=curMtl.opacityMap curDif.fileName=curFileName+".dds" if curOpc!=undefined then ( curOpc.fileName=curFileName+".dds" ) ) if (classof curMtl==Multimaterial) then (--多维子材质 for j=1 to curMtl.materialList.count do ( curFilePath=curMtl.materialList[j].diffuseMap.fileName curFileName=getFilenameFile curFilePath curDif=curMtl.materialList[j].diffuseMap curOpc=curMtl.materialList[j].opacityMap curDif.fileName=curFileName+".dds" if curOpc!=undefined then ( curOpc.fileName=curFileName+".dds" ) ) ) )