GAMESH

游戏美术动画unity资源搬运工!

剧情党,完美控!
桐崎千棘
当前位置:首页 > 学习 > 正文内容

maxscript零基础教学写一个批量改名并导出插件

admin3年前 (2022-03-16)学习5276617

这篇文章我会用一个案例去讲解如何写一个maxscript脚本,这里我用批量修改max文件的骨骼名称。

目标:修改一批max文件的bone00骨骼名称为bone99,然后导出fbx

操作方法:

1.打开max在菜单栏找到maxscript,然后新建脚本(newscript)

maxscript零基础教学写一个批量改名并导出插件 插件 3dmax maxscript 第1张

2.写一个ui,需要一个开始按钮 和文本框!写一个名为testddl_rollout的界面,createDialog 这个界面,界面尺寸200*200

然后添加一个按钮button,按钮的名称是start,文本框是edittext 名称daoru

rollout testddl_rollout "批量改名导出"
(
button start "开始"  pos:[80,20]
	edittext daoru "导入目录" fieldWidth:180 height:20 labelOnTop:true readOnly:false
)
createDialog testddl_rollout 200 200

maxscript零基础教学写一个批量改名并导出插件 插件 3dmax maxscript 第2张

3.需要打开文件夹,并获取文件下所有的max文件

首先创建一个数组来保存获取到的文件

global my_files   --文件数组

接下来写一个遍历文件夹的模块,方便随时调用

fn getFilesRecursive root pattern =
(
	dir_array = GetDirectories (root+"/*")  --*wild-card
	for d in dir_array do
		join dir_array (GetDirectories (d+"/*"))
	my_files = #()
	if dir_array.count == 0 do append dir_array (root + "\\")
	for f in dir_array do
		join my_files (getFiles (f + pattern))
)

root 是文本框传入的一个路径地址

4.点击按钮打印获取的文件,看看是否获取正确(注意:文件内不要有其它子文件夹)

	on start pressed do ( 
		
				

getFilesRecursive daoru.text "*.max"	
		
		
print (my_files)	

	)

5.依次打开所有文件

rollout testddl_rollout "批量改名导出"
(
button start "开始"  pos:[80,20]
edittext daoru "导入目录" fieldWidth:180 height:20 labelOnTop:true readOnly:false
	
	
global my_files = #()  --文件数组
	
fn getFilesRecursive root pattern =
(
	dir_array = GetDirectories (root+"/*")  --*wild-card
	for d in dir_array do
		join dir_array (GetDirectories (d+"/*"))
			

	
	if dir_array.count == 0 do append dir_array (root + "\\")
	for f in dir_array do
		
		join my_files(getFiles (f + pattern))
				
)

	on start pressed do ( 
		
		
		
		

getFilesRecursive daoru.text "*.max"	
		
for f in my_files do
(
loadMAXFile f;--打开文件

	)	)	
	
	
)
createDialog testddl_rollout 200 200

6.改名:

$Bone00.name="Bone99"

选择bone00将她的name变成bone99

7.导出选择:

这里介绍一下maxscript的宏录制,他可以将你所有的操作步骤用脚本展示出来,你只需要将她的脚本复制到脚本编辑器里面就可以使用

maxscript零基础教学写一个批量改名并导出插件 插件 3dmax maxscript 第3张

这里actionMan.executeAction 0 "40011"  -- File: 导出文件     就是一个导出fbx的宏,它是可以直接再次使用的

所以结合上面我们需要以下几个宏脚本1.选择物体2.导出fbx3.保存并关闭max文件

8.获取文件名   getFilenameFile f

9.输出:

	filename =getFilenameFile f
	filepath=getFilenamePath f
	savepath=filepath+filename
 exportfile savepath #noprompt selectedOnly:true using:FBXEXP
	
	ok
	actionMan.executeAction 0 "40006"  -- File: 保存文件
      actionMan.executeAction 0 "40005"  -- File: Reset File

10.最终组合代码:保存为"改名导出.ms"

rollout testddl_rollout "批量改名导出"
(
button start "开始"  pos:[80,20]
edittext daoru "导入目录" fieldWidth:180 height:20 labelOnTop:true readOnly:false
	
	
global my_files = #()  --文件数组
	
fn getFilesRecursive root pattern =
(
	dir_array = GetDirectories (root+"/*")  --*wild-card
	for d in dir_array do
		join dir_array (GetDirectories (d+"/*"))
			

	
	if dir_array.count == 0 do append dir_array (root + "\\")
	for f in dir_array do
		
		join my_files(getFiles (f + pattern))
				
)

	on start pressed do ( 
		
		
		
		

getFilesRecursive daoru.text "*.max"	
		
for f in my_files do
(
loadMAXFile f;
$Bone00.name="Bone99"
	
	
	
	filename =getFilenameFile f
	filepath=getFilenamePath f
	savepath=filepath+filename
 exportfile savepath #noprompt selectedOnly:true using:FBXEXP
	
	ok
	actionMan.executeAction 0 "40006"  -- File: 保存文件
      actionMan.executeAction 0 "40005"  -- File: Reset File    	
		
		
		
	
	
	
	)	)	
	
	
)
createDialog testddl_rollout 200 200


扫描二维码推送至手机访问。

本サイト上に掲載の文章、画像、写真などを無断で複製することは法律で禁じられています。全ての著作権はGAMESHに帰属します。

本文链接:https://www.pylblog.com/post/226.html

分享给朋友:

相关文章

unity环境资源包SUNTAIL - Stylized Fantasy Village

unity环境资源包SUNTAIL - Stylized Fantasy Village

Suntail - 是一个软件包,其中包含创建幻想中世纪村庄所需的一切:模型,纹理,FX,着色器,声音等。完全可定制且灵活。可编程渲染管线(SRP)兼容性描述235个预制件和84个声音,使一个完整的中...

3dmax批量导出/导入

3dmax批量导出/导入

这是一个免费的脚本,非商业用途。这是将模型从3ds Max传输到ZBrush / Unity / UDK /的完美脚本。基本上,它将对象导出到多个文件。支持的格式:max,obj,fbx,3ds,as...

3dmax官方免费杀毒工具

3dmax官方免费杀毒工具

3ds Max 杀毒工具是 Autodesk 官方发布的用于安全地检测并移除恶意代码。恶意代码可能会损坏 3ds Max 环境和场景文件,导致数据丢失和不稳定,还有可能通过共享 3ds Max 场景文...

Sci-Fi Effects 2.02b unity科幻特效_炫酷子弹爆炸激光等特效合集

Sci-Fi Effects 2.02b unity科幻特效_炫酷子弹爆炸激光等特效合集

科幻效果会测试!   科幻效果是90 +的集合准备使用武器和影响预制包括66奖金的声音,新的模块化炮塔构造函数,针对控制器和一个重新设计的池经理。   ...

3dmax碰撞飘带插件Spring Max

3dmax碰撞飘带插件Spring Max

特征:在骨链上挥动,扭曲和拉伸动画,可以循环动画骨链可以与胶囊和平面碰撞形状在骨链上施加风和爆炸力注意:计算骨骼不应该在场景中有重复的名称对象,并且不应该有负的比例值无法使用Ctrl + Z撤消计算...

使用Three.js在WebGL中导入Json 3D模型和动画

使用Three.js在WebGL中导入Json 3D模型和动画

当您使用3ds Max创建带有动画的模型时,并且需要快速的工作流来使用Three.js将它们加载到WebGL中时,我建议执行以下步骤:1.从3ds Max导出模型通过使用Json Exporter,您...

评论列表

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。