导入3ds的一些操作, 里面有修改器中没有的东西,
--utility threedeeesimporter "Import 3ds Sequence"
rollout rol_UVRandomRotate "UV Rotate" ---借用一下头
(
---导入3ds 格式。
---导入权证的办法
bitmap logo filename:"mondolabs.bmp" --图片显示 觉得没有什么。只是一个解释。
local objbasename = "3dsobj" --名字的显示。
button doit "Import"
on doit pressed do
(
objlist = for o in objects collect o --现在的收集为了以后的删除处理。
if objlist != #() then
(
queryresult = querybox "This process will clear your current scene. \nDo you want to continue?" title:"Are you sure?"
)
if queryresult then
(
delete objlist
loadfilename = getopenfilename caption:"Import 3DS Sequence" types:"3DS(*.3ds)|*.3ds"
---返回一个拾取的路径, 主要的ui结构 下来就是在这个之上做文章了。
if (loadfilename != undefined) then
(
--如果不错的话就是导入一些信息。
local morphlist = #()
mypath = (getfilenamepath loadfilename) ----收取路径
basename = (getfilenamefile loadfilename)--收取名字
basename = substring basename 1 (basename.count - 5) --? 截取的字符有些无理??
filelist = getfiles (mypath + basename + "*.*")---- 就是为了这里的全局性 通过一个找到所有路径
---其实我之前因为好似这样的,但是有
importfile filelist[1] #noprompt ---d就是导入这一个文件。
local objectcount = 1
local nongeometrylist = #()
----在导入的文件中做事情。
for o in objects do
(
if (iskindof o geometryclass) then --(iskindof o geometryclass) 判断某个节点是某个类 这个
--很重要。
(
o.name = objbasename + (objectcount as string) -- 批量该名字。
morphlist = append morphlist (createmorphobject o)
---这里包裹上自己不知道是为什么。
---也不是//?? 在研究
--循环加入数组 ,但是不哟娜循环 到下面 到一下就好 要不这里总是倒 我觉得不好morphlist
objectcount += 1
) else
(
nongeometrylist = append nongeometrylist o ---不是几何体 就就是直接加入。
)
)
delete nongeometrylist ---删除不是几何体的东西。--这个是要干什么/
for i = 2 to filelist.count do
(
nongeometrylist = #()
local newobjects = #()
importfile filelist[i] #noprompt
for o in objects do
(
if (findstring o.name objbasename) == undefined then
(
if (iskindof o geometryclass) then
(
newobjects = append newobjects o
) else
(
nongeometrylist = append nongeometrylist o
)
)
)
delete nongeometrylist
objectcount = 1
for o in newobjects do
(
if (morphlist.count > 0) then
(
at time i
(
animate on (morphlist[objectcount].transform = o.transform)
)
addmorphtarget morphlist[objectcount].morph o 3
objectcount += 1
)
)
)--只有一个的话这个根本就不执行。
for i = 1 to filelist.count do ---这三套循环是干什么。----这里面好像是自动的给了材质。
(
for o in objects do
(
if (iskindof o geometryclass) then
(
addnewkey o.morph i
for j = 1 to i do
(
if j == i then
setmkweight (o.morph.keys[i]) j 100 true ---这个效果是设定显示的% 比 效果很好。
else
setmkweight (o.morph.keys[i]) j 0 true
)
)
)
)
)
)
)
)
---对于导入的3ds 格式 不是集合体类的就删掉。对于有些显示有些不显示。
createDialog rol_UVRandomRotate