Exemplo n.º 1
0
        private void LoadMaterials(XElement xmlScene)
        {
            if (xmlScene != null && xmlScene.Elements("material_list").Any())
            {
                XElement xmlMaterials = xmlScene.Elements("material_list").First();
                foreach (XElement materialNode in xmlMaterials.Elements("material"))
                {
                    string   name     = materialNode.Attribute("name").Value;
                    Material material = new Material(name);
                    if (materialNode.Elements("texture").Any())
                    {
                        material.FileName = materialNode.Elements("texture").First().Attribute("filename").Value;
                    }
                    if (material.FileName != null && material.FileName != String.Empty && File.Exists(material.FileName))
                    {
                        material.TextureImage = (Bitmap)Bitmap.FromFile(material.FileName);
                    }

                    if (materialNode.Elements("specular").Any())
                    {
                        material.Specular = LoadSpecular(materialNode.Elements("specular").First());
                    }

                    if (materialNode.Elements("diffuse").Any())
                    {
                        material.Diffuse = LoadColor(materialNode.Elements("diffuse").First());
                    }

                    if (materialNode.Elements("transparent").Any())
                    {
                        material.Transparent = LoadColor(materialNode.Elements("transparent").First());
                    }

                    if (materialNode.Elements("reflective").Any())
                    {
                        material.Reflective = LoadColor(materialNode.Elements("reflective").First());
                    }

                    if (materialNode.Elements("refraction_index").Any())
                    {
                        material.RefractionIndex = LoadColor(materialNode.Elements("refraction_index").First());
                    }

                    MaterialDictionary.Add(name, material);
                }
            }
            else
            {
                Material materialDefault = new Material("Yellow");
                materialDefault.FileName = "";
                materialDefault.Diffuse  = new Vector(1, 1, 0);
                materialDefault.Specular = new Vector(0, 0, 0, 5);
                if (!MaterialDictionary.ContainsKey("Yellow"))
                {
                    MaterialDictionary.Add("Yellow", materialDefault);
                }
            }
        }
Exemplo n.º 2
0
        static ModelDataProvider()
        {
            SolidColorBrush transparentBrush = new SolidColorBrush(Colors.LightBlue);

            transparentBrush.Opacity = 0.5;
            MaterialGroup windowMaterial = new MaterialGroup();

            windowMaterial.Children.Add(new DiffuseMaterial(transparentBrush));
            windowMaterial.Children.Add(new SpecularMaterial(transparentBrush, 40));


            _defaultMaterials = new MaterialDictionary();
            _defaultMaterials.Add("IfcProduct", new DiffuseMaterial(new SolidColorBrush(Colors.Wheat)));
            _defaultMaterials.Add("IfcBuildingElementProxy", new DiffuseMaterial(new SolidColorBrush(Colors.Snow)));
            _defaultMaterials.Add("IfcWall", new DiffuseMaterial(new SolidColorBrush(Colors.White)));
            _defaultMaterials.Add("IfcRoof", new DiffuseMaterial(new SolidColorBrush(Colors.LightSteelBlue)));
            _defaultMaterials.Add("IfcSlab", new DiffuseMaterial(new SolidColorBrush(Colors.LightSteelBlue)
            {
            }));
            _defaultMaterials.Add("IfcWindow", windowMaterial);
            _defaultMaterials.Add("IfcPlate", windowMaterial);
            _defaultMaterials.Add("IfcDoor", new DiffuseMaterial(new SolidColorBrush(Colors.CadetBlue)
            {
            }));
            _defaultMaterials.Add("IfcStair",
                                  new DiffuseMaterial(new SolidColorBrush(Colors.Wheat)));
            _defaultMaterials.Add("IfcBeam", new DiffuseMaterial(new SolidColorBrush(Colors.LightSlateGray)
            {
            }));
            _defaultMaterials.Add("IfcColumn", new DiffuseMaterial(new SolidColorBrush(Colors.LightSlateGray)
            {
            }));
            _defaultMaterials.Add("IfcFurnishingElement",
                                  new DiffuseMaterial(new SolidColorBrush(Colors.WhiteSmoke)
            {
                Opacity = 0.7
            }));
            _defaultMaterials.Add("IfcDistributionFlowElement",
                                  new DiffuseMaterial(new SolidColorBrush(Colors.AntiqueWhite)
            {
                Opacity = 1.0
            }));
            _defaultMaterials.Add("IfcFlowFitting",
                                  new DiffuseMaterial(new SolidColorBrush(Colors.PaleGoldenrod)
            {
                Opacity = 1.0
            }));
            _defaultMaterials.Add("IfcFlowSegment",
                                  new DiffuseMaterial(new SolidColorBrush(Colors.PaleVioletRed)
            {
                Opacity = 1.0
            }));
            _defaultMaterials.Add("IfcFlowTerminal",
                                  new DiffuseMaterial(new SolidColorBrush(Colors.IndianRed)
            {
                Opacity = 1.0
            }));
            _defaultMaterials.Add("IfcSpace", new DiffuseMaterial(new SolidColorBrush(Colors.Red)
            {
                Opacity = 0.4
            }));

            _defaultMaterials.Add("IfcRailing", new DiffuseMaterial(new SolidColorBrush(Colors.Goldenrod)
            {
            }));
            _defaultMaterials.Add("IfcOpeningElement", new DiffuseMaterial(new SolidColorBrush(Colors.Red)
            {
                Opacity = 0.4
            }));
        }