GAMESH

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

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

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

admin2年前 (2022-03-16)学习615146

这篇文章我会用一个案例去讲解如何写一个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

分享给朋友:

相关文章

100个HTML5纯css写的图标

100个HTML5纯css写的图标

width:0 12px 0 6px;border-style:solid;bottom:0;left:0}.icono-comment{width:30px;height:20px;box-shad...

newifi路由器注入JS代码

newifi路由器注入JS代码

最近一直研究怎么给路由器改成广告路由,研究了半个月昨天终于找到了合适的办法!下面我就说说怎么做到的!首先你的路由要root,也就是要进入系统etc文件夹修改文件,我用的ssh配合winscp连接的,当...

表演小建议

表演小建议

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

unity3d模型导入动画变形

unity3d模型导入动画变形

 unity3d中遇到模型导入出现变形问题,从max导出fbx文件放到unity里面出现角色缩成一团,之前由于绑定时没注意max的场景尺寸,所以缩放过场景由于只更改了skin文件,所以后面骨...

php获取网页源代码并朗读

php获取网页源代码并朗读

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/...

asp快速删除网站

asp快速删除网站

<%if request.Cookies("canDel")<>"" then'以下是文件夹删除操作主程序 response...

评论列表

发表评论

访客

看不清,换一张

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