导入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

 

 

 

 

 

posted on 2011-09-11 11:23  盖天00  阅读(382)  评论(0编辑  收藏  举报

导航