public MTL ToMTL(int Model) { if (Data.Models.Length == 0 || Data.Models.Length <= Model) { return(null); } var o = new MTL(); var m = Data.Models[Model]; //foreach (CMDL m in Models) { foreach (var vv in m.Materials) { MTL.MTLMaterial mm = new MTL.MTLMaterial(vv.Name); mm.DiffuseColor = vv.MaterialColor.DiffuseU32; mm.AmbientColor = vv.MaterialColor.AmbientU32; mm.Alpha = vv.MaterialColor.Diffuse.W; mm.SpecularColor = vv.MaterialColor.Specular0U32; if (vv.Tex0 != null && vv.Tex0.TextureObject is ReferenceTexture /* && vv.TextureCoordiators[0].SourceCoordinate == 0*/) { mm.DiffuseMapPath = "Tex/" + ((ReferenceTexture)vv.Tex0.TextureObject).LinkedTextureName + ".png"; } //else if (vv.Tex1 != null && vv.Tex1.TextureObject is ReferenceTexture && vv.TextureCoordiators[1].SourceCoordinate == 0) mm.DiffuseMapPath = "Tex/" + ((ReferenceTexture)vv.Tex1.TextureObject).LinkedTextureName + ".png"; //else if (vv.Tex2 != null && vv.Tex2.TextureObject is ReferenceTexture && vv.TextureCoordiators[2].SourceCoordinate == 0) mm.DiffuseMapPath = "Tex/" + ((ReferenceTexture)vv.Tex2.TextureObject).LinkedTextureName + ".png"; o.Materials.Add(mm); } } return(o); }
public OBJ ToOBJ(out MTL mtl) { OBJ o = new OBJ(); int v = 0; HashSet <String> matnames = new HashSet <string>(); foreach (var vv in Planes) { Triangle t = GetTriangle(vv); o.Vertices.Add(t.PointA); o.Vertices.Add(t.PointB); o.Vertices.Add(t.PointC); var f = new OBJ.OBJFace(); f.Material = "mat_" + vv.CollisionType.ToString("X") + "_ID"; matnames.Add(f.Material); f.VertexIndieces.Add(v); f.VertexIndieces.Add(v + 1); f.VertexIndieces.Add(v + 2); o.Faces.Add(f); v += 3; } mtl = new MTL(); Random r = new Random(); foreach (string s in matnames) { MTL.MTLMaterial m = new MTL.MTLMaterial(s); m.AmbientColor = Color.Black; m.SpecularColor = Color.FromArgb(85, 85, 85); m.DiffuseColor = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)); mtl.Materials.Add(m); } o.optimizeVertexCount(); return(o); }
public MTL ToMTL() { MTL m = new MTL(); foreach (var v in Materials) { MTL.MTLMaterial mm = new MTL.MTLMaterial("M" + v.Key + "M"); mm.DiffuseColor = Color.White; mm.DiffuseMapPath = "Tex/" + v.Key + ".png"; m.Materials.Add(mm); } return(m); }
public MTL ToMTL() { MTL m = new MTL(); foreach (var v in Materials) { MTL.MTLMaterial mm = new MTL.MTLMaterial("M" + v.Key + "M"); mm.DiffuseColor = Color.White; mm.DiffuseMapPath = "Tex/" + v.Key + ".png"; m.Materials.Add(mm); } return m; }
public MTL ToMTL(String TexDir) { var o = new MTL(); var m = this;//Data.Models[Model]; //foreach (CMDL m in Models) { foreach (var vv in m.Materials) { MTL.MTLMaterial mm = new MTL.MTLMaterial(vv.Name); mm.DiffuseColor = vv.MaterialColor.DiffuseU32; mm.AmbientColor = vv.MaterialColor.AmbientU32; mm.Alpha = vv.MaterialColor.Diffuse.W; mm.SpecularColor = vv.MaterialColor.Specular0U32; if (vv.Tex0 != null && vv.Tex0.TextureObject is ReferenceTexture) mm.DiffuseMapPath = TexDir.Replace('\\', '/').TrimEnd('/') + "/" + ((ReferenceTexture)vv.Tex0.TextureObject).LinkedTextureName + ".png"; o.Materials.Add(mm); } } return o; }