public static void ObjToBin(String inputFile, String outputFile)
        {
            String modelName = Path.GetFileNameWithoutExtension(inputFile);
            String outputDir = Path.GetDirectoryName(outputFile) + @"\";
            String meshPrefix = "mesh_";

            List<Mesh> meshes = new List<Mesh>();
            Mesh currentMesh  = null;
            StreamReader file = new StreamReader(inputFile);

            while (true)
            {
                // Read a line
                string line = file.ReadLine();

                if (line == null)
                    break;

                if (line == "")
                    continue;

                String[] tokens = line.Split(' ');

                switch (tokens[0])
                {
                    case "v":  Positions.Add(ReadVector3(tokens)); break;
                    case "vn": Normals.Add(ReadVector3(tokens)); break;
                    case "vt": UVs.Add(ReadVector2(tokens)); break;
                    case "f":  if (currentMesh == null)
                               {
                                  currentMesh = new Mesh(meshPrefix + modelName); // First mesh has just the name of the model
                                  meshes.Add(currentMesh);
                               }
                               currentMesh.AddFace(tokens);
                               break;
                    case "o":  currentMesh = new Mesh(meshPrefix + modelName + "_" + tokens[1]);
                               meshes.Add(currentMesh);
                               break;
                    default:   break;
                }
            }

            WriteDescriptor(modelName, meshes, outputDir);
            WriteToFile(outputDir, meshes);
        }
        static void WriteMesh(String outputDir, Mesh mesh)
        {
            FileStream stream = new FileStream(outputDir + mesh.Name + ".bin", FileMode.Create);
            BinaryWriter output = new BinaryWriter(stream);

            mesh.GenerateVerticesAndIndices();

            List<Vertex> vertices = mesh.Vertices;
            List<short> indices   = mesh.Indices;

            output.Write(vertices.Count);
            //output.Write(indices.Count);

            Console.Write("- Vertices: " + vertices.Count);

            foreach (Vertex vertex in vertices)
            {
                WriteVector3(output, vertex.Position);
                WriteVector3(output, vertex.Normal);
                WriteVector2(output, vertex.TextureCoordinates);
            }

            Console.Write("- Indices: " + indices.Count);

            for (int i = 0; i < indices.Count; ++i)
                output.Write(indices[i]);

            Console.WriteLine(" done");
            output.Close();
        }