美术需要导出大量的模型,模型结构又比较单一,手动导出太麻烦了,可以通过maxscript批量导出模型,同时根据max中模型的结构树创建文件夹,代码如下:
--deckArry=$*Deck1* --获取了Deck1
--deckArry=$Deck1/*;
deckArry=$Deck*;--获取所有父级
Print(deckArry.count);
for i in 1 to deckArry.count do
(
print(deckArry[i].name);
global parentPath=@"D:\AllBoat\"+deckArry[i].name;
makeDir parentPath all:true;--创建父级文件夹
for j in 1 to deckArry[i].children.count do
(
select deckArry[i].children[j];
childname=deckArry[i].children[j].name;
childPath=parentPath+"/"+childname;--模型储存空间的
makeDir childPath all:true;
fbxPath=childPath+"/"+childname+".fbx";--fbx模型对象的路径
--Print((FBXExporterGetParam "Cameras").name);
--FBXExporterGetParam "FBXProperties";
exportFile(fbxPath) #noprompt selectedOnly:true using:FBXEXP;
--clearSelection();
)
for j in 1 to deckArry[i].children.count do
(
select deckArry[i].children[j];
childname=deckArry[i].children[j].name;
childPath=parentPath+"/"+childname;--模型储存空间的
fltPath=childPath+"/"+childname+".flt";--flt模型对象的路径
--FLTExporterGetParam "FLTProperties";--找不到参数设置面板内容
--FLTExporterSetParam "CopyTexturestoOutputDirectory" true
--exportFile(fltPath) #noprompt selectedOnly:true using:FLTEXP;
exportFile(fltPath) selectedOnly:true using:FLTEXP;--此选项需要对手动调整界面
)
for j in 1 to deckArry[i].children.count do
(
select deckArry[i].children[j];
childname=deckArry[i].children[j].name;
childPath=parentPath+"/"+childname;--模型储存空间的
objPath=childPath+"/"+childname+".obj";--flt模型对象的路径
exportFile(objPath) #noprompt selectedOnly:true using:OBJEXP;
)
)
唯一美中不足的是没有找到flt格式的模型导出的参数设置代码,官方maxscript参数设置只有fbx的参数设置。
模型结构如下,Deck1_A01_01,程序会以Deck开头的层级创建文件夹,再以子级创建子层级文件夹,并将模型贴图等数据储存在对应的文件夹中。