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" ) ) ) )
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!