GAMESH

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

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

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

admin4年前 (2022-03-16)学习5413117

这篇文章我会用一个案例去讲解如何写一个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://pylblog.com/post/226.html

分享给朋友:

相关文章

ILI9488使用lvgl9.x屏幕颜色不正常

ILI9488使用lvgl9.x屏幕颜色不正常

可能的原因:颜色模式不匹配ILI9488 SPI 接口 仅支持 RGB666 (18bit),而 LVGL 默认是 RGB565 (16bit)。你需要将 RGB565 转换成 RGB666。MADC...

编译的小智AI没有声音

编译的小智AI没有声音

我用的NS4168芯片,这款芯片查看了ns4168数据手册,左声道ctrl管脚要接0.9v~1.15v右声道要接1.5v~vdd,我的电路板用了一个10k电阻接的5v,所以使用的右声道,但是我把I2S...

我的AE作品合集

我的AE作品合集

接触AE快五年了,当初因为一个特殊原因开始使用AE!发现自己很容易就上手了,无论是视频修剪处理,还是特效合成都能玩转!近几年由于改做游戏动画行业对AE接触渐渐减少,也慢慢地感到陌生了,电脑里的AE也很...

表演小建议

表演小建议

1.一场戏在中间发生,而不是一开始。2.一个角色应该在100%的时间里都一直“在做”什么。3.一个角色进入场景有因,退出也要有因。4.思考通常导致结论;情感通常导致行为。5.一个姿势不需要语言去说明。...

3dmax动画技巧-将鱼线浮出水面的部分固定(浮漂)

3dmax动画技巧-将鱼线浮出水面的部分固定(浮漂)

这周做一个钓鱼的项目时策划要求待机过程中鱼线露出水面的部分需要固定做一个浮漂,但是我的鱼线是用飘带插件解算的,下面始终在来回摆动。这就不得不需要我想办法去固定住露出水面的那一根骨骼了!首先我尝试使用i...

国产二维动画软件-DragonBones

国产二维动画软件-DragonBones

作为一款国产动画软件DragonBones无疑让我们骄傲,一直以来我们做游戏2d动画都是用的spine,由于spine收费,使得许多人都放弃了,除了一些公司使用之外个人一般不会去使用的,DragonB...

评论列表

发表评论

访客

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