Advertisement
Selzier

WoWMapper .mesh to .obj conversion

Dec 3rd, 2020
499
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.71 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using UnityEngine;
  6.  
  7. public class MeshConvert : MonoBehaviour
  8. {
  9.     // Start is called before the first frame update
  10.     void Start()
  11.     {
  12.         CreateOBJFile();
  13.     }
  14.  
  15.     public void CreateOBJFile() {
  16.         Debug.Log("Creating OBJFile.");
  17.  
  18.         System.IO.BinaryReader reader = new BinaryReader(File.Open("D:/Games/WorldofWarcraft3.3.5a/wowmapper/bin/29_48.mesh", FileMode.Open)); // stormwind
  19.  
  20.         System.IO.TextWriter tw = new System.IO.StreamWriter("D:/Games/WorldofWarcraft3.3.5a/wowmapper/bin/stormwind.obj");
  21.  
  22.         reader.ReadBytes(32); //jump over BBX
  23.         reader.ReadBytes(16); //jump over ADT
  24.  
  25.         // INDICES
  26.         reader.ReadChars(3);
  27.         reader.ReadByte();
  28.         UInt32 indexSize = reader.ReadUInt32();
  29.         int[] indexes = new int[indexSize];
  30.         for (int i = 0; i < indexSize; i++) {
  31.             indexes[i] = (int)(reader.ReadInt32() + 1);
  32.         }
  33.  
  34.         Console.WriteLine("Done with saving indices.");
  35.  
  36.         // write VERTICES
  37.         reader.ReadChars(3);
  38.         reader.ReadByte();
  39.  
  40.         UInt32 vertexSize = reader.ReadUInt32();
  41.         for (int i = 0; i < vertexSize; i++) {
  42.             tw.WriteLine("v " + reader.ReadSingle() + " " + reader.ReadSingle() + " " + reader.ReadSingle());
  43.         }
  44.  
  45.         Console.WriteLine("Done with writing vertices.");
  46.  
  47.         // write INDICES
  48.         for (int i = 0; i < indexSize;) {
  49.             tw.WriteLine("f " + indexes[i++] + " " + indexes[i++] + " " + indexes[i++]);
  50.         }
  51.  
  52.         Console.WriteLine("Done with writing indices.");
  53.  
  54.         tw.Close();
  55.  
  56.         Console.WriteLine("Done.");
  57.     }
  58. }
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement