/// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // Declare variables
            Color             color     = Color.White;
            WireframeSettings wireframe = null;
            Texture           map       = null;

            // Reference the inputs
            DA.GetData(0, ref color);
            if (!DA.GetData(1, ref wireframe))
            {
                wireframe = null;
            }
            if (!DA.GetData(2, ref map))
            {
                map = null;
            }

            // Build the material object
            dynamic material = new ExpandoObject();

            material.Uuid  = Guid.NewGuid();
            material.Type  = "MeshBasicMaterial";
            material.Color = new DecimalColor(color).Color;

            // If the material has map
            if (map != null)
            {
                material.Map = map.Data.Uuid;
            }

            // If the wireframe is set to true, add wireframe attributes
            if (wireframe != null)
            {
                material.Wireframe          = true;
                material.WireframeLinejoin  = wireframe.WireframeLinejoin;
                material.WireframeLinewidth = wireframe.WireframeLinewidth;
            }

            // Build the file object
            Material materialObject = new Material(material);

            if (map != null)
            {
                materialObject.AddTexture(map);
            }

            // Set the outputs
            DA.SetData(0, materialObject);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            string wireframeLinejoin  = "round";
            int    wireframeLinewidth = 1;

            DA.GetData(0, ref wireframeLinejoin);
            DA.GetData(1, ref wireframeLinewidth);

            WireframeSettings wireframe = new WireframeSettings();

            wireframe.WireframeLinejoin  = wireframeLinejoin;
            wireframe.WireframeLinewidth = wireframeLinewidth;

            DA.SetData(0, wireframe);
        }
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // Declare variables
            Color                    color             = Color.White;
            double                   opacity           = 1;
            double                   roughness         = 1;
            double                   metalness         = 0.5;
            Color                    emmisiveColor     = Color.Black;
            double                   emissiveIntensity = 1;
            WireframeSettings        wireframe         = null;
            MeshStandardMaterialMaps materialMaps      = null;

            // Reference inputs
            DA.GetData(0, ref color);
            DA.GetData(1, ref opacity);
            DA.GetData(2, ref roughness);
            DA.GetData(3, ref metalness);
            DA.GetData(4, ref emmisiveColor);
            DA.GetData(5, ref emissiveIntensity);
            if (!DA.GetData(6, ref wireframe))
            {
                wireframe = null;
            }
            if (!DA.GetData(7, ref materialMaps))
            {
                materialMaps = null;
            }

            // Create the material object
            dynamic material = new ExpandoObject();

            material.Uuid              = Guid.NewGuid();
            material.Type              = "MeshStandardMaterial";
            material.Color             = new DecimalColor(color).Color;
            material.Transparent       = true;
            material.Opacity           = opacity;
            material.Roughness         = roughness;
            material.Metalness         = metalness;
            material.Emissive          = new DecimalColor(emmisiveColor).Color;
            material.EmissiveIntensity = emissiveIntensity;

            // If the wireframe is set to true, add wireframe attributes
            if (wireframe != null)
            {
                material.Wireframe          = true;
                material.WireframeLinejoin  = wireframe.WireframeLinejoin;
                material.WireframeLinewidth = wireframe.WireframeLinewidth;
            }

            // Build the file object
            Material materialObject = new Material(material);

            // If there are material maps, add them
            if (materialMaps != null)
            {
                if (materialMaps.Map != null)
                {
                    material.Map = materialMaps.Map.Data.Uuid;
                    materialObject.AddTexture(materialMaps.Map);
                }

                if (materialMaps.AlphaMap != null)
                {
                    material.AlphaMap  = materialMaps.AlphaMap.Data.Uuid;
                    material.AlphaTest = materialMaps.AlphaTest;
                    materialObject.AddTexture(materialMaps.AlphaMap);
                }

                if (materialMaps.BumpMap != null)
                {
                    material.BumpMap   = materialMaps.BumpMap.Data.Uuid;
                    material.BumpScale = materialMaps.BumpScale;
                    materialObject.AddTexture(materialMaps.BumpMap);
                }

                if (materialMaps.DisplacementMap != null)
                {
                    material.DisplacementMap   = materialMaps.DisplacementMap.Data.Uuid;
                    material.DisplacementScale = materialMaps.DisplacementScale;
                    materialObject.AddTexture(materialMaps.DisplacementMap);
                }

                if (materialMaps.NormalMap != null)
                {
                    material.NormalMap = materialMaps.NormalMap.Data.Uuid;
                    materialObject.AddTexture(materialMaps.NormalMap);
                }

                if (materialMaps.EnvMap != null)
                {
                    material.EnvMap          = materialMaps.EnvMap.Data.Uuid;
                    material.EnvMapIntensity = materialMaps.EnvMapIntensity;
                    materialObject.AddTexture(materialMaps.EnvMap);
                }

                if (materialMaps.RoughnessMap != null)
                {
                    material.RoughnessMap = materialMaps.RoughnessMap.Data.Uuid;
                    materialObject.AddTexture(materialMaps.RoughnessMap);
                }

                if (materialMaps.MetalnessMap != null)
                {
                    material.MetalnessMap = materialMaps.MetalnessMap.Data.Uuid;
                    materialObject.AddTexture(materialMaps.MetalnessMap);
                }

                if (materialMaps.AoMap != null)
                {
                    material.AoMap          = materialMaps.AoMap.Data.Uuid;
                    material.AoMapIntensity = materialMaps.AoMapIntensity;
                    materialObject.AddTexture(materialMaps.AoMap);
                }

                if (materialMaps.EmissiveMap != null)
                {
                    material.EmissiveMap = materialMaps.EmissiveMap.Data.Uuid;
                    materialObject.AddTexture(materialMaps.EmissiveMap);
                }
            }

            // Set the outputs
            DA.SetData(0, materialObject);
        }