static void LR2ModelExport(System.IO.StreamWriter log) { Context.Current = new Context(Context.NextGenGame.LegoRacers2, Context.GamePlatform.PC, ""); System.Windows.Forms.OpenFileDialog odialog = new System.Windows.Forms.OpenFileDialog(); odialog.Filter = "MD2 Model (*.MD2)|*.MD2"; if (odialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { using (System.IO.FileStream fs = new System.IO.FileStream(odialog.FileName, System.IO.FileMode.Open)) using (System.IO.BinaryReader reader = new System.IO.BinaryReader(fs)) { MD2File model = new MD2File(reader); foreach (Block b in model.Blocks.Values) { Debug.WriteLine(b.Header.Signature + ": " + b.Header.Length.ToString("X8") + " bytes"); } //System.Console.ReadLine(); System.Windows.Forms.SaveFileDialog sdialog = new System.Windows.Forms.SaveFileDialog(); sdialog.Filter = "Wavefront OBJ (*.obj)|*.obj"; if (sdialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { model.ExportOBJ(sdialog.FileName); } } } }
//--------------------------------------------------------------------------------------------------------- private void Start() { MD2File md2File = new MD2File(MD2File.bytes); MD2Frame[] frames = md2File.GetAllFrames(); Mesh[] meshes = new Mesh[frames.Length]; for (int i = 0; i < meshes.Length; i++) { meshes[i] = ConvertFrameToMesh(frames[i]); } Dictionary <string, MinMaxFrame> animations = GetAnimationDescriptions(frames); Mesh baseMesh = meshes[0]; foreach (var group in animations) { AddBlendShapesToMesh(baseMesh, meshes, group.Value.Min, group.Value.Max, group.Key); string key = group.Key; MinMaxFrame minMaxFrame = group.Value; Debug.Log(key + " " + minMaxFrame.Min + " " + minMaxFrame.Max); } #if UNITY_EDITOR AssetDatabase.CreateAsset(baseMesh, "Assets/baseMesh.asset"); AssetDatabase.Refresh(); #endif GetComponent <MeshFilter>().mesh = baseMesh; }