示例#1
0
        private static void CreateMaterialFile(string folder, string matFilename, Dictionary<string, MyExportModel.Material> materials, List<renderColoredTextureProperties> texturesToRender)
        {
            using (StreamWriter writer = new StreamWriter(matFilename))
            {
                for (int i = 0; i < materials.Count; ++i)
                {
                    MyExportModel.Material mat = materials.ElementAt(i).Value;
                    string materialName = mat.Name;
                    writer.WriteLine(string.Format("newmtl {0}", materialName));
                    writer.WriteLine("Ka 1.000 1.000 1.000");
                    writer.WriteLine("Ks 0.000 0.000 0.000");
                    writer.WriteLine("d 1.0");
                    writer.WriteLine("Tr 0.0000");
                    writer.WriteLine("Tf 1.0000 1.0000 1.0000");
                    writer.WriteLine("illum 2");
                    if (mat.IsGlass)
                    {
                        foreach (var material in MyDefinitionManager.Static.GetTransparentMaterialDefinitions())
                        {
                            if(mat.DiffuseTexture.Equals(material.Texture, StringComparison.OrdinalIgnoreCase))
                            {
                                writer.WriteLine("Kd {0} {1} {2}", material.Color.Y, material.Color.Z, material.Color.W);
                            };
                        }

                        continue;
                    }

                    renderColoredTextureProperties textureToRenderProperties = new renderColoredTextureProperties();
                    textureToRenderProperties.ColorMaskHSV = mat.ColorMaskHSV;
                    textureToRenderProperties.TextureName = mat.DiffuseTexture;
                    textureToRenderProperties.PathToSave = Path.Combine(folder, mat.NewDiffuseTexture);
                    texturesToRender.Add(textureToRenderProperties);

                    writer.WriteLine("Kd 1.000 1.000 1.000");

                    string srcDiffuseTex = mat.NewDiffuseTexture;

                    if (!String.IsNullOrEmpty(srcDiffuseTex))
                    {
                        writer.WriteLine(string.Format("map_Ka {0}", Path.GetFileName(srcDiffuseTex)));
                        writer.WriteLine(string.Format("map_Kd {0}", Path.GetFileName(srcDiffuseTex)));
                    }

                    if (i < materials.Count - 1)
                    {
                        writer.WriteLine(string.Empty);
                    }
                }              
            }
        }
        private static void CreateMaterialFile(string folder, string matFilename, Dictionary<string, MyExportModel.Material> materials, List<renderColoredTextureProperties> texturesToRender)
        {
            using (StreamWriter writer = new StreamWriter(matFilename))
            {
                for (int i = 0; i < materials.Count; ++i)
                {
                    MyExportModel.Material mat = materials.ElementAt(i).Value;
                    string materialName = mat.Name;
                    writer.WriteLine(string.Format("newmtl {0}", materialName));
                    writer.WriteLine("Ka 1.000 1.000 1.000");
                    writer.WriteLine("Ks 0.000 0.000 0.000");
                    writer.WriteLine("d 1.0");
                    writer.WriteLine("Tr 0.0000");
                    writer.WriteLine("Tf 1.0000 1.0000 1.0000");
                    writer.WriteLine("illum 2");
                    if (mat.IsGlass)
                    {
                        continue;
                    }

                    renderColoredTextureProperties textureToRenderProperties = new renderColoredTextureProperties();
                    textureToRenderProperties.ColorMaskHSV = mat.ColorMaskHSV;
                    textureToRenderProperties.PathToSave = Path.Combine(folder, mat.NewDiffuseTexture);
                    texturesToRender.Add(textureToRenderProperties);

                    writer.WriteLine("Kd 1.000 1.000 1.000");

                    string srcDiffuseTex = mat.NewDiffuseTexture;

                    if (!String.IsNullOrEmpty(srcDiffuseTex))
                    {
                        writer.WriteLine(string.Format("map_Ka {0}", Path.GetFileName(srcDiffuseTex)));
                        writer.WriteLine(string.Format("map_Kd {0}", Path.GetFileName(srcDiffuseTex)));
                    }

                    if (i < materials.Count - 1)
                    {
                        writer.WriteLine(string.Empty);
                    }
                }              
            }
        }