Advertisement
Guest User

ConvertANM

a guest
Jul 27th, 2020
1,603
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.68 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import sys
  3. import os
  4.  
  5. version = 1.2
  6.  
  7. def main():
  8.     if(len(sys.argv) < 2):
  9.         print("convert.py <file.in> ")
  10.         return 0
  11.    
  12.     f = open(sys.argv[1], "r")
  13.     mode = "header"
  14.     num_verts = 0
  15.     num_frames = 0
  16.     cur_frame = 0
  17.     cur_verts = 0
  18.     # frame, vertex.
  19.     verts = []
  20.     faces = []
  21.     for line in f:
  22.         if mode == "header":
  23.             print("Header: " + line.strip())
  24.             mode = "vertex"
  25.  
  26.         elif mode == "vertex":
  27.             num_verts = int(line.strip())
  28.             mode = "frame"
  29.             print("vertex count: " + str(num_verts))
  30.         elif mode == "frame":
  31.             num_frames = int(line.strip())
  32.             mode = "read_frames"
  33.             print("frame count: " + str(num_frames))
  34.            
  35.             for i in range(0, num_frames):
  36.                 verts.append([])
  37.            
  38.         elif mode == "read_frames":
  39.             vert = line.strip().split()
  40.             vert[0] = float(vert[0])
  41.             vert[1] = float(vert[1])
  42.             vert[2] = float(vert[2])
  43.             verts[cur_frame].append(vert[0:3])
  44.             cur_verts += 1
  45.             if cur_verts == num_verts:
  46.                 cur_verts = 0
  47.                 cur_frame += 1
  48.                 if cur_frame == num_frames:
  49.                     mode = "read_faces"
  50.                
  51.         elif mode == "read_faces":
  52.             face = line.strip().split()
  53.             for i in range(len(face)):
  54.                 try:
  55.                     face[i] = int(face[i])
  56.                 except ValueError:
  57.                     print("Done")
  58.                    
  59.             faces.append(face) 
  60.  
  61.     f.close()
  62.  
  63.     for fr in range(0, int(num_frames)):
  64.    
  65.         f = open(os.path.splitext(sys.argv[1])[0]+"_frame" + str(fr) + ".obj", "w")
  66.         for v in verts[fr]:
  67.             f.write("v {} {} {} 1\n".format(v[0], v[1], v[2]))
  68.    
  69.         for face in faces:
  70.             if len(face) > 1:
  71.                 f.write("f")
  72.                 for ff in face[1:-1]:
  73.                     f.write(" {}".format(ff+1))
  74.                 f.write("\n")
  75.    
  76.         f.close()
  77.        
  78.     return 0
  79.  
  80. if __name__ == "__main__":
  81.     sys.exit(main())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement