Advertisement
Guest User

Untitled

a guest
Jan 3rd, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.25 KB | None | 0 0
  1. import struct
  2. import os
  3.  
  4. OUTPUT_PATH = "out"
  5.  
  6. f = open("room.wgeo", "rb")
  7. magic = f.read(4)
  8. version = struct.Struct("<I").unpack(f.read(4))[0]
  9. meshCount = struct.Struct("<I").unpack(f.read(4))[0]
  10. triCount = struct.Struct("<I").unpack(f.read(4))[0]
  11.  
  12. print "Magic: %s" % magic
  13. print "Version: %d" % version
  14. print "Mesh count: %d" % meshCount
  15. print "Triangle count: %d" % triCount
  16.  
  17. fmap = open("mapping.txt", "w+")
  18.  
  19. #--------------------------- Mesh -------------------
  20. for meshIndex in range(0, meshCount):
  21.     textureName = f.read(260).rstrip(' \t\r\n\0')
  22.     materialName = f.read(64).rstrip(' \t\r\n\0')
  23.     spherePos = struct.Struct("<3f").unpack(f.read(12))
  24.     sphereRadius = struct.Struct("<f").unpack(f.read(4))[0]
  25.     minAABB = struct.Struct("<3f").unpack(f.read(12))
  26.     maxAABB = struct.Struct("<3f").unpack(f.read(12))
  27.     vertexCount = struct.Struct("<i").unpack(f.read(4))[0]
  28.     indexCount = struct.Struct("<i").unpack(f.read(4))[0]
  29.     print "Texture: %s" % textureName
  30.     print "Material: %s" % materialName
  31.     print "Sphere pos: %s " % str(spherePos)
  32.     print "Sphere radius: %s" % str(sphereRadius)
  33.     print "Min AABB: %s" % str(minAABB)
  34.     print "Max AABB: %s" % str(maxAABB)
  35.     print "Vertex count: %s" % str(vertexCount)
  36.     print "Index count: %s" % str(indexCount)
  37.     print "<Vertices follow>"
  38.     if textureName is not None:
  39.         fmap.write("%s : %s" % (materialName, textureName))
  40.     meshName = "mesh%d" % meshIndex
  41.     if not os.path.exists(OUTPUT_PATH):
  42.         os.makedirs(OUTPUT_PATH)
  43.  
  44.     outFile = open(os.path.join(OUTPUT_PATH, "%s.obj") % materialName, "w+")
  45.     vertices = []
  46.     uvs = []
  47.     for i in range(0, vertexCount):
  48.         vertices.append(struct.Struct("<3f").unpack(f.read(12)))
  49.         uvs.append(struct.Struct("<2f").unpack(f.read(8)))
  50.     for vert in vertices:
  51.         outFile.write("v %f %f %f\n" % vert)
  52.     for uv in uvs:
  53.         outFile.write("vt %f %f\n" % uv)
  54.  
  55.     print "<Indices>"
  56.  
  57.     for i in range(0, indexCount, 3):
  58.         idx = struct.Struct("<3h").unpack(f.read(6))
  59.         idx = tuple([v & 0xFFFF for v in idx])
  60.         #print idx
  61.         outFile.write("f %d %d %d\n" % idx)
  62.     outFile.close()
  63. fmap.close()
  64.  
  65. #--------------------------- /Mesh -------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement