从网上淘到了一套人物的模型,当时的心情是激动无比,掏出用的不熟练的3DMax折腾了半天。突然发现了一个蛋疼的事儿,所有的模型文件,材质名称,子材质,以及贴图所实用的是中文命名!!

尽管说是能跑,只是这个命名也忒不规范了,将模型,资源导入了Unity。关联产生的资源和材质名称也都是中文的!!!

虽说是能用,只是心里总感觉有点儿别扭。然而要改动一系列的名称又太太太麻烦....于是我这个懒人就想到了写一个max脚本完毕这个功能。

我搞到的素材在Max里面打开是酱紫的,赤果果的中文命名:

从文件名称,模型名称,材质名称,子材质名称,贴图名称,贴图路径都是中文...

我的思路大概是这样:

1)max文件名保持不变,仍然为中文,方便查找,并且这个无影响。

2.)手动改动模型名称为自己希望的英文名,依据材质名称 手动改动目录下的贴图名称为“模型名称 + 递增编号”

3)通过脚本,自己主动将材质名称改为模型名称,假设有多维子材质,自己主动将子材质重命名为 ”模型名称 + 递增编号“

4)通过脚本,自己主动将材质相应的贴图名称&贴图路径名改为当前路径下相应的贴图

好了,废话不多说了,上代码:

--更换材质包括的贴图的名称
--arg: mat 材质名
--arg: index standard material 中贴图的index 比方2是diffuse 7是Opacity
--arg name 要改动的名称
function ChangeTexName mat index name =
(
tex = getSubTexmap mat index
if tex == undefined then
(
print("Index " + (index as string)+ " isn't exist in mat, so skip it")
)
else
(
tex.name = name
tex.filename = maxFilePath + tex.name + ".dds"
print (name + " texture name changed ok")
)
) --遍历选择的物体
for obj in selection do
(
--改动材质名称为与对象名称一致
obj.material.name = obj.name
local num = getNumSubMtls obj.material
if num == 0 then
(
ChangeTexName obj.material 2 obj.name
ChangeTexName obj.material 7 obj.name
print "main material changed ok"
)
else
( local count = 1
--处理多维子材质,将多维子材质依照对象名称+递增编号重命名
for material in obj.material do
(
local tempName = obj.name
append tempName (count as string)
material.name = tempName
count = count + 1
--将index 2相应的diffuse贴图改名
ChangeTexName material 2 tempName
--将index 7相应的opecity贴图改名(假设不须要刻意去掉此行)
ChangeTexName material 7 tempName
print "sub material changed ok"
)
)
print "Name Change OK"
)

具体的凝视我写在了代码中,主要要注意的是一个地方,因为我的资源是使用了Diffuse和Opecity两个贴图,所以我这样写。假设要改名字的脚本是其它类型的贴图,仅仅须要改动Index值就能够。index的相应关系例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

以下看一下使用:

我首先依据材质编辑器中的贴图,将目录下的贴图改动名称。这时,模型会由于找不到贴图而变成白色:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

然后。我们把模型名称改动一下,改成jingyingbaijianke。然后执行脚本:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

因为最后一个贴图没实用Opecity贴图,所以跳过了改动。这时,我们的模型贴图又回来了。而我们打开材质编辑器,也能够看到,全部的中文都被我们改动成我们想要的命名了:

因为这些模型资源是一个蒙皮文件(max)+若干个动作文件(max)+贴图文件(dds)放在同一个文件夹下,所以我仅仅须要第一次改动一次贴图文件名。然后每次打开一个文件之后。重命名一下模型,执行一下脚本,全部材质,子材质。贴图名,贴图路径就都变成我们设定好的名称了,哇咔咔。!

比方我又一次打开一个动作文件。開始时会提醒我贴图丢失。我们直接点击跳过,然后改动模型名。执行脚本。一切就都自己主动搞定了。然后我们就能够放心大胆的把它们导入到Unity中,最后再来张帅帅哒图片。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

3DMax脚本插件--改动材质&贴图名称的更多相关文章

  1. Unity3D研究院之自制批量关联材质与贴图插件

    原地址:http://www.xuanyusong.com/archives/2314 美术做过的模型导出fbx,美术把Fbx和贴图文件给了程序,程序把Fbx导入工程可能会出现贴图和材质没有关联上的问 ...

  2. 福利向:几款给力的Unity脚本插件推荐

    转自:http://www.gamelook.com.cn/2016/09/264877 Unity的Asset Store中除了拥有非常强大的Unity编辑器扩展工具之外,还有一些让开发过程事半功倍 ...

  3. 出售Illustrator脚本插件面板(包含面板源码,以及面板上所有的功能源码)

    出售Illustrator脚本插件面板(包含面板源码,以及面板上所有的功能源码) 购买后可提供相应的小修改,以及教你使用往这个多列面里再加上按钮功能! 这套源码可作为工作使用,也可用为新手学习AI脚面 ...

  4. 2018-05-17-OAA-一种mermaid脚本驱动的软件项目模块图形化表述思路

    layout: post title: 2018-05-17-OAA-一种mermaid脚本驱动的软件项目模块图形化表述思路 key: 20180517 tags: OAA flow chart se ...

  5. python批量改动指定文件夹文件名称

    这小样例仅仅要是说明用python怎么批量改动指定文件夹的文件名称: 记得要把脚本跟改动的文件放在同一个文件夹下 #encoding:utf-8 import os import sys files ...

  6. visual studio code运行时报错,无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称,Cannot find module 'webpack'

    前言 因公司技术需求,这段时间成功进入了Vue 2.0 的坑,刚用起Visual Studio Code,却发现问题很多,发现一个错误:cnpm : 无法将“cnpm”项识别为 cmdlet.函数.脚 ...

  7. 解决:npm中 下载速度慢 和(无法将“nrm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次)。

    1.解决下载速度 因为我们npm下载默认是,连接国外的服务器,所以网速不是特别好的时候,可能下不了包 安装nrm 使用 npm i nrm -g 我们的一般工具包都是下载到全局 安装完毕之后,可以运行 ...

  8. '无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称' 或 'vue不是内部或外部命令' 的解决方法

    如果在使用 vue 初始化项目的时候提示: vue : 无法将“vue”项识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次. 或者: ...

  9. 无法将“Scaffold-DbContext”项识别为 cmdlet、函数、脚本文件或可运行程序的名称...

    原文链接:https://my.oschina.net/taadis/blog/889560 为什么80%的码农都做不了架构师?>>>     PM> Scaffold-DbC ...

随机推荐

  1. ProtoBuffer使用笔记

    ProtoBuffer是由谷歌研发的对象序列化和反序列化的开源工具,ProtoBuffer和Xml类似,都是数据描述工具,后者使用更为广泛,前者Google内部使用且具有更高的效率.该工具安装和使用都 ...

  2. COM/DCOM开发练习之进程内组件实例

    作者 : 卿笃军 题目说明: 仿照例题,在其基础上实现下面功能: 1)使用C++语言实现进程内组件,组件提供复数的加.减.乘.除等计算服务:client部分包含录入(实部和虚部分开录入)和查询部分. ...

  3. SQL Structured Query Language(结构化查询语言) 数据库

    SQL是Structured Query Language(结构化查询语言)的缩写. SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 在使用它时,只需要发出“做什么”的命令,“怎么 ...

  4. JAVA JDOM解析XML 带CDATA数据

    import java.io.StringReader;import java.util.*; import org.jdom.Document;import org.jdom.Element;imp ...

  5. 转 如何在IOS设备中去掉屏幕上的status bar

    引入如何在IOS设备中去掉屏幕上的status bar,即:不显示设备上方的[网络.时间.电池??]条?操作方法一:在-info.list项目文件中,加上“Status bar is initiall ...

  6. KStudio window上编译uclinux

     可能没有几个人能像我这样在Windows下编译Linux内核,甚至于同时进行内核调试.这种事情我不是第一个做到的,至少我们公司的原TKStudio部门已经做过.在TKStudio网站上,提供了一个L ...

  7. JQuery实现可直接编辑的表格

    本文实例讲述了JQuery实现可直接编辑的表格.分享给大家供大家参考.具体分析如下: 功能: 创建一个表格,用户单击某个单元格后,可以直接修改单元格文本.在编辑状态下,用户可按回车键确认修改,按ESC ...

  8. HDU 4462 DFS

    2012 Asia Hangzhou Regional Contest 给出N*N的矩阵,所有标记为0,当中有K个点标记为1.而且能够在该位置放置一个能够覆盖曼哈顿距离为r的草人.问最少放置几个草人, ...

  9. jQuery中开发插件的两种方式(附Demo)

    做web开发的基本上都会用到jQuery,jQuery插件开发两种方式:一种是类扩展的方式开发插件,jQuery添加新的全局函数(jQuery的全局函数是属于jQuery命名空间的函数),如果将jQu ...

  10. Spring boot基础:配置文件配置变量、多环境的配置

    一.配置 resources下面application.properties 1.普通配置 resources下面application.properties,比如写上:server.port=909 ...