GAMESH

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

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

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

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

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

分享给朋友:

相关文章

unity传递参数给安卓

unity传递参数给安卓

package com.psvwifi.gamesh;import android.content.Context;import android.content.Intent;import andro...

我的AE作品合集

我的AE作品合集

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

RealFlow流体模拟牛奶

RealFlow流体模拟牛奶

RealFlow流体模拟牛奶(一)学习重点:学习目的:Maya中场景文件的准备Maya和RealFlow的交互RealFlow系统设置本案例通过牛奶作掌握Maya与RealFlow的交互,RealFl...

php获取网页源代码并朗读

php获取网页源代码并朗读

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

编译的小智AI没有声音

编译的小智AI没有声音

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

newifi路由器注入JS代码

newifi路由器注入JS代码

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

评论列表

发表评论

访客

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