Beispiel #1
0
        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);
        }
Beispiel #3
0
            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;
 }
Beispiel #5
0
 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;
 }