Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import struct
- import os
- OUTPUT_PATH = "out"
- f = open("room.wgeo", "rb")
- magic = f.read(4)
- version = struct.Struct("<I").unpack(f.read(4))[0]
- meshCount = struct.Struct("<I").unpack(f.read(4))[0]
- triCount = struct.Struct("<I").unpack(f.read(4))[0]
- print "Magic: %s" % magic
- print "Version: %d" % version
- print "Mesh count: %d" % meshCount
- print "Triangle count: %d" % triCount
- fmap = open("mapping.txt", "w+")
- #--------------------------- Mesh -------------------
- for meshIndex in range(0, meshCount):
- textureName = f.read(260).rstrip(' \t\r\n\0')
- materialName = f.read(64).rstrip(' \t\r\n\0')
- spherePos = struct.Struct("<3f").unpack(f.read(12))
- sphereRadius = struct.Struct("<f").unpack(f.read(4))[0]
- minAABB = struct.Struct("<3f").unpack(f.read(12))
- maxAABB = struct.Struct("<3f").unpack(f.read(12))
- vertexCount = struct.Struct("<i").unpack(f.read(4))[0]
- indexCount = struct.Struct("<i").unpack(f.read(4))[0]
- print "Texture: %s" % textureName
- print "Material: %s" % materialName
- print "Sphere pos: %s " % str(spherePos)
- print "Sphere radius: %s" % str(sphereRadius)
- print "Min AABB: %s" % str(minAABB)
- print "Max AABB: %s" % str(maxAABB)
- print "Vertex count: %s" % str(vertexCount)
- print "Index count: %s" % str(indexCount)
- print "<Vertices follow>"
- if textureName is not None:
- fmap.write("%s : %s" % (materialName, textureName))
- meshName = "mesh%d" % meshIndex
- if not os.path.exists(OUTPUT_PATH):
- os.makedirs(OUTPUT_PATH)
- outFile = open(os.path.join(OUTPUT_PATH, "%s.obj") % materialName, "w+")
- vertices = []
- uvs = []
- for i in range(0, vertexCount):
- vertices.append(struct.Struct("<3f").unpack(f.read(12)))
- uvs.append(struct.Struct("<2f").unpack(f.read(8)))
- for vert in vertices:
- outFile.write("v %f %f %f\n" % vert)
- for uv in uvs:
- outFile.write("vt %f %f\n" % uv)
- print "<Indices>"
- for i in range(0, indexCount, 3):
- idx = struct.Struct("<3h").unpack(f.read(6))
- idx = tuple([v & 0xFFFF for v in idx])
- #print idx
- outFile.write("f %d %d %d\n" % idx)
- outFile.close()
- fmap.close()
- #--------------------------- /Mesh -------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement