home *** CD-ROM | disk | FTP | other *** search
/ Xentax forum attachments archive / xentax.7z / 8106 / lithtech-pc-lta.7z / lithtech-pc-lta-export.ms next >
Encoding:
Text File  |  2010-04-04  |  9.9 KB  |  309 lines

  1. -- Author   "Drigien"
  2. -- Version: "0.1 alpha"
  3. -- About:   "This script exports the selected mesh to the Lithtech ASCII format"
  4.  
  5.  
  6. fn Formatted  num  output =
  7. (
  8.     sz = num as string
  9.     
  10.     pos = findString sz "e"
  11.     if pos != undefined then
  12.     (
  13.         szArray = filterString sz ". e"
  14.         count = szArray[3] as integer
  15.         print szArray
  16.         print count
  17.         
  18.         if szArray[1] as integer < 0 then
  19.         (
  20.             pos = szArray[1] as integer
  21.             szArray[1] = abs pos as string
  22.             sz  = "-"
  23.         )
  24.         else
  25.             sz = ""
  26.         
  27.         if count < 0 then
  28.         (
  29.             sz += "0."
  30.             for i=1 to abs count do
  31.                 sz += "0"
  32.             sz += szArray[1] + szArray[2]
  33.         )
  34.         else
  35.         (
  36.             sz += szArray[1] + szArray[2]
  37.             sz += "0"
  38.             for i=1 to abs count do
  39.                 sz += "0"
  40.             sz += "."
  41.         )
  42.         print sz
  43.     )
  44.     
  45.     sz += "000000"
  46.     
  47.     inum = num as integer
  48.     sziNum = inum as string
  49.     size = sziNum.count + 7
  50.     
  51.     szOut = substring sz 1 size
  52.     format "% " szOut to:output    
  53. )            
  54.  
  55.     tmesh = snapshotAsMesh selection[1]        
  56.     if tmesh != undefined then 
  57.     (
  58.  
  59.     out_name = getSaveFileName caption:"Export to Lta" initialDir:"$scripts" types:"LithTech Model(*.lta)|*.lta|All|*.*|"
  60.     if out_name != undefined then
  61.     (
  62.         out_file = createfile out_name        
  63.         if out_file != undefined then
  64.         (    
  65.             num_verts = tmesh.numverts 
  66.             num_faces = tmesh.numfaces
  67.             
  68.             format "(lt-model-0 \n" to:out_file
  69.             format "\t(on-load-cmds \n" to:out_file
  70.             format "\t\t( \n" to:out_file
  71.             format "\t\t\t(anim-bindings  \n" to:out_file
  72.             format "\t\t\t\t( \n" to:out_file
  73.             format "\t\t\t\t\t(anim-binding \n" to:out_file
  74.             format "\t\t\t\t\t\t(name \"none\" ) \n" to:out_file
  75.             format "\t\t\t\t\t\t(translation  \n" to:out_file
  76.             format "\t\t\t\t\t\t\t(0.000000 0.000000 0.000000 ) \n" to:out_file
  77.             format "\t\t\t\t\t\t) \n" to:out_file
  78.             format "\t\t\t\t\t\t(interp-time 200 ) \n" to:out_file
  79.             format "\t\t\t\t\t) \n" to:out_file
  80.             format "\t\t\t\t) \n" to:out_file
  81.             format "\t\t\t) \n" to:out_file
  82.             format "\t\t\t(set-node-flags \n" to:out_file
  83.             format "\t\t\t\t( \n" to:out_file
  84.             format "\t\t\t\t\t(\"Scene Root\" 0 ) \n" to:out_file
  85.             format "\t\t\t\t\t(\"Bone01\" 0 ) \n" to:out_file
  86.             format "\t\t\t\t) \n" to:out_file
  87.             format "\t\t\t) \n" to:out_file
  88.             format "\t\t\t(set-command-string \"\" ) \n" to:out_file
  89.             format "\t\t\t(lod-groups \n" to:out_file
  90.             format "\t\t\t\t( \n" to:out_file
  91.             format "\t\t\t\t\t(create-lod-group \"Object\" \n" to:out_file
  92.             format "\t\t\t\t\t\t(lod-dists \n" to:out_file
  93.             format "\t\t\t\t\t\t\t(0.000000 ) \n" to:out_file
  94.             format "\t\t\t\t\t\t) \n" to:out_file
  95.             format "\t\t\t\t\t\t(shapes \n" to:out_file
  96.             format "\t\t\t\t\t\t\t(\"Object\" ) \n" to:out_file
  97.             format "\t\t\t\t\t\t) \n" to:out_file
  98.             format "\t\t\t\t\t) \n" to:out_file
  99.             format "\t\t\t\t) \n" to:out_file
  100.             format "\t\t\t) \n" to:out_file
  101.             format "\t\t\t(set-global-radius 96.000000 ) \n" to:out_file
  102.             format "\t\t\t(add-node-obb-list  \n" to:out_file
  103.             format "\t\t\t\t() \n" to:out_file
  104.             format "\t\t\t) \n" to:out_file
  105.             format "\t\t\t(add-deformer \n" to:out_file
  106.             format "\t\t\t\t(skel-deformer \n" to:out_file
  107.             format "\t\t\t\t\t(target \"Object\" ) \n" to:out_file
  108.             format "\t\t\t\t\t(influences \n" to:out_file
  109.             format "\t\t\t\t\t\t(\"Scene Root\" \"Bone01\" ) \n" to:out_file
  110.             format "\t\t\t\t\t) \n" to:out_file
  111.             format "\t\t\t\t\t(weightsets \n" to:out_file
  112.             format "\t\t\t\t\t\t( \n" to:out_file
  113.                 
  114.             for v = 1 to num_verts do
  115.             (
  116.                 format "\t\t\t\t\t\t\t(1 1.000000 )\n" to:out_file
  117.             )
  118.             
  119.             format "\t\t\t\t\t\t) \n" to:out_file
  120.             format "\t\t\t\t\t) \n" to:out_file
  121.             format "\t\t\t\t) \n" to:out_file
  122.             format "\t\t\t) \n" to:out_file
  123.             format "\t\t) \n" to:out_file
  124.             format "\t) \n" to:out_file
  125.             format "\t(hierarchy  \n" to:out_file
  126.             format "\t\t(children  \n" to:out_file
  127.             format "\t\t\t( \n" to:out_file
  128.             format "\t\t\t\t(transform \"Scene Root\"  \n" to:out_file
  129.             format "\t\t\t\t\t(matrix  \n" to:out_file
  130.             format "\t\t\t\t\t\t( \n" to:out_file
  131.             format "\t\t\t\t\t\t\t(-1.000000 0.000000 0.000000 0.000000 ) \n" to:out_file
  132.             format "\t\t\t\t\t\t\t(0.000000 1.000000 0.000000 0.000000 ) \n" to:out_file
  133.             format "\t\t\t\t\t\t\t(0.000000 0.000000 -1.000000 0.000000 ) \n" to:out_file
  134.             format "\t\t\t\t\t\t\t(0.000000 0.000000 0.000000 1.000000 ) \n" to:out_file
  135.             format "\t\t\t\t\t\t) \n" to:out_file
  136.             format "\t\t\t\t\t) \n" to:out_file
  137.             format "\t\t\t\t\t(children  \n" to:out_file
  138.             format "\t\t\t\t\t\t( \n" to:out_file
  139.             format "\t\t\t\t\t\t\t(transform \"Bone01\"  \n" to:out_file
  140.             format "\t\t\t\t\t\t\t\t(matrix \n" to:out_file
  141.             format "\t\t\t\t\t\t\t\t\t( \n" to:out_file
  142.             format "\t\t\t\t\t\t\t\t\t\t(1.000000 0.000000 0.000000 0.000000 ) \n" to:out_file
  143.             format "\t\t\t\t\t\t\t\t\t\t(0.000000 1.000000 0.000000 0.000000 )  \n" to:out_file
  144.             format "\t\t\t\t\t\t\t\t\t\t(0.000000 0.000000 1.000000 0.000000 ) \n" to:out_file
  145.             format "\t\t\t\t\t\t\t\t\t\t(0.000000 0.000000 0.000000 1.000000 )  \n" to:out_file
  146.             format "\t\t\t\t\t\t\t\t\t) \n" to:out_file
  147.             format "\t\t\t\t\t\t\t\t) \n" to:out_file
  148.             format "\t\t\t\t\t\t\t) \n" to:out_file
  149.             format "\t\t\t\t\t\t) \n" to:out_file
  150.             format "\t\t\t\t\t) \n" to:out_file
  151.             format "\t\t\t\t) \n" to:out_file
  152.             format "\t\t\t) \n" to:out_file
  153.             format "\t\t) \n" to:out_file
  154.             format "\t) \n" to:out_file
  155.             format "\t(shape \"Object\" \n" to:out_file
  156.             format "\t\t(geometry \n" to:out_file
  157.             format "\t\t\t(mesh \"Object\" \n" to:out_file
  158.             
  159.             --VERTICES
  160.             format "\t\t\t\t(vertex \n"  to:out_file
  161.             format "\t\t\t\t\t( \n" to:out_file                
  162.             for v = 1 to num_verts do
  163.             (
  164.                 vert = getVert tmesh v
  165.                 --print vert
  166.                 
  167.                 format "\t\t\t\t\t\t(" to:out_file
  168.                 Formatted vert.x out_file
  169.                 Formatted vert.z out_file
  170.                 Formatted vert.y out_file
  171.                 format ") \n" to:out_file 
  172.             )            
  173.             format "\t\t\t\t\t) \n" to:out_file
  174.             format "\t\t\t\t) \n" to:out_file
  175.             
  176.             --NORMALS
  177.             format "\t\t\t\t(normals \n"  to:out_file
  178.             format "\t\t\t\t\t( \n" to:out_file                
  179.             for v = 1 to num_verts do
  180.             (
  181.                 vert = getNormal tmesh v
  182.                 print vert
  183.                 format "\t\t\t\t\t\t(" to:out_file
  184.                 
  185.                 Formatted vert.x out_file
  186.                 Formatted vert.z out_file
  187.                 Formatted vert.y out_file
  188.                 
  189.                 format ") \n" to:out_file 
  190.             )            
  191.              format "\t\t\t\t\t) \n" to:out_file
  192.             format "\t\t\t\t) \n" to:out_file
  193.             
  194.             --UV COORDS
  195.             format "\t\t\t\t(uvs \n" to:out_file
  196.             format "\t\t\t\t\t( \n" to:out_file            
  197.             for f = 1 to num_faces do
  198.             (
  199.                 face = getFace tmesh f
  200.                 print face
  201.                 
  202.                 uv = getTVert tmesh face.x
  203.                 format "\t\t\t\t\t\t(" to:out_file
  204.                 Formatted uv.x out_file
  205.                 Formatted uv.y out_file
  206.                 format ")\n" to:out_file
  207.                 
  208.                 uv = getTVert tmesh face.y
  209.                 format "\t\t\t\t\t\t(" to:out_file
  210.                 Formatted uv.x out_file
  211.                 Formatted uv.y out_file
  212.                 format ")\n" to:out_file
  213.                 
  214.                 uv = getTVert tmesh face.z
  215.                 format "\t\t\t\t\t\t(" to:out_file
  216.                 Formatted uv.x out_file
  217.                 Formatted uv.y out_file
  218.                 format ")\n" to:out_file
  219.             )            
  220.             format "\t\t\t\t\t) \n" to:out_file
  221.             format "\t\t\t\t) \n" to:out_file
  222.             
  223.             --FACE COUNT
  224.             format "\t\t\t\t(tex-fs \n" to:out_file
  225.             format "\t\t\t\t\t(" to:out_file            
  226.             for f = 0 to num_faces-1 do
  227.             (
  228.                 face = f*3
  229.                 a = face
  230.                 b = face+1
  231.                 c = face+2
  232.                 format "% % % " a b c to:out_file
  233.             )            
  234.             format ") \n" to:out_file
  235.             format "\t\t\t\t) \n" to:out_file
  236.             
  237.             --FACES
  238.             format "\t\t\t\t(tri-fs \n" to:out_file
  239.             format "\t\t\t\t\t(" to:out_file            
  240.             for f = 1 to num_faces do
  241.             (
  242.                 face = getFace tmesh f
  243.                 --print face
  244.                                 
  245.                 a = face.x-1
  246.                 b = face.y-1
  247.                 c = face.z-1
  248.                 a = a as integer
  249.                 b = b as integer
  250.                 c = c as integer
  251.                 format "% % % " c b a to:out_file
  252.             )
  253.             
  254.             format ") \n" to:out_file
  255.             format "\t\t\t\t) \n" to:out_file
  256.             format "\t\t\t) \n" to:out_file
  257.             format "\t\t) \n" to:out_file
  258.             format "\t) \n" to:out_file
  259.             format "\t(animset \"base\"  \n" to:out_file
  260.             format "\t\t(keyframe  \n" to:out_file
  261.             format "\t\t\t(keyframe  \n" to:out_file
  262.             format "\t\t\t\t(times  \n" to:out_file
  263.             format "\t\t\t\t\t(0 ) \n" to:out_file
  264.             format "\t\t\t\t) \n" to:out_file
  265.             format "\t\t\t\t(values  \n" to:out_file
  266.             format "\t\t\t\t\t(\"\" ) \n" to:out_file
  267.             format "\t\t\t\t) \n" to:out_file
  268.             format "\t\t\t) \n" to:out_file
  269.             format "\t\t) \n" to:out_file
  270.             format "\t\t(anims  \n" to:out_file
  271.             format "\t\t\t( \n" to:out_file
  272.             format "\t\t\t\t(anim  \n" to:out_file
  273.             format "\t\t\t\t\t(parent \"Scene Root\" ) \n" to:out_file
  274.             format "\t\t\t\t\t(frames  \n" to:out_file
  275.             format "\t\t\t\t\t\t(posquat  \n" to:out_file
  276.             format "\t\t\t\t\t\t\t( \n" to:out_file
  277.             format "\t\t\t\t\t\t\t\t( \n" to:out_file
  278.             format "\t\t\t\t\t\t\t\t\t(0.000000 0.000000 0.000000 ) \n" to:out_file
  279.             format "\t\t\t\t\t\t\t\t\t(0.000000 1.000000 0.000000 0.000000 ) \n" to:out_file
  280.             format "\t\t\t\t\t\t\t\t) \n" to:out_file
  281.             format "\t\t\t\t\t\t\t) \n" to:out_file
  282.             format "\t\t\t\t\t\t) \n" to:out_file
  283.             format "\t\t\t\t\t) \n" to:out_file
  284.             format "\t\t\t\t) \n" to:out_file
  285.             format "\t\t\t\t(anim  \n" to:out_file
  286.             format "\t\t\t\t\t(parent \"Bone01\" ) \n" to:out_file
  287.             format "\t\t\t\t\t(frames  \n" to:out_file
  288.             format "\t\t\t\t\t\t(posquat  \n" to:out_file
  289.             format "\t\t\t\t\t\t\t( \n" to:out_file
  290.             format "\t\t\t\t\t\t\t\t( \n" to:out_file
  291.             format "\t\t\t\t\t\t\t\t\t(0.000000 0.000000 0.000000 ) \n" to:out_file
  292.             format "\t\t\t\t\t\t\t\t\t(0.000000 1.000000 0.000000 0.000000 ) \n" to:out_file
  293.             format "\t\t\t\t\t\t\t\t) \n" to:out_file
  294.             format "\t\t\t\t\t\t\t) \n" to:out_file
  295.             format "\t\t\t\t\t\t) \n" to:out_file
  296.             format "\t\t\t\t\t) \n" to:out_file
  297.             format "\t\t\t\t) \n" to:out_file
  298.             format "\t\t\t) \n" to:out_file
  299.             format "\t\t) \n" to:out_file
  300.             format "\t) \n" to:out_file
  301.             format ") \n" to:out_file
  302.             
  303.             close out_file
  304.         )
  305.             edit out_name
  306.     )
  307. )
  308.     
  309.