Exemplo n.º 1
0
        private void CreateDirectionalLight(Assimp.Light light, Spatial spatial)
        {
            DirectionalLight dl = new DirectionalLight();

            dl.Ambient   = ConvertColor(light.ColorAmbient);
            dl.Diffuse   = ConvertColor(light.ColorDiffuse);
            dl.Specular  = ConvertColor(light.ColorSpecular);
            dl.Direction = ConvertVector3(light.Direction);
            spatial.AddLight(dl);
        }
Exemplo n.º 2
0
        private void CreatePointLight(Assimp.Light light, Spatial spatial)
        {
            PointLight pl = new PointLight();

            pl.Constant  = light.AttenuationConstant;
            pl.Linear    = light.AttenuationLinear;
            pl.Quadratic = light.AttenuationQuadratic;
            pl.Ambient   = ConvertColor(light.ColorAmbient);
            pl.Diffuse   = ConvertColor(light.ColorDiffuse);
            pl.Specular  = ConvertColor(light.ColorSpecular);
            pl.Position  = ConvertVector3(light.Position);
            spatial.AddLight(pl);
        }
Exemplo n.º 3
0
        private void CreateSpotLight(Assimp.Light light, Spatial spatial)
        {
            SpotLight sl = new SpotLight();

            sl.Constant  = light.AttenuationConstant;
            sl.Linear    = light.AttenuationLinear;
            sl.Quadratic = light.AttenuationQuadratic;
            sl.Ambient   = ConvertColor(light.ColorAmbient);
            sl.Diffuse   = ConvertColor(light.ColorDiffuse);
            sl.Specular  = ConvertColor(light.ColorSpecular);
            sl.Position  = ConvertVector3(light.Position);
            sl.Direction = ConvertVector3(light.Direction);
            spatial.AddLight(sl);
        }
Exemplo n.º 4
0
        private void ParseLights(Assimp.Scene scene, Spatial root)
        {
            if (!scene.HasLights)
            {
                return;
            }

            Assimp.Light[] lights = scene.Lights;
            Node           isNode = root as Node;

            for (int i = 0; i < lights.Length; i++)
            {
                Assimp.Light light   = lights[i];
                String       name    = light.Name;
                Spatial      spatial = root;

                if (!String.IsNullOrEmpty(name))
                {
                    if (isNode != null)
                    {
                        Spatial descendent = isNode.GetDescendentNamed(name);
                        if (descendent != null)
                        {
                            spatial = descendent;
                        }
                    }
                }

                switch (light.LightType)
                {
                case Assimp.LightSourceType.Spot:
                    CreateSpotLight(light, spatial);
                    break;

                case Assimp.LightSourceType.Point:
                    CreatePointLight(light, spatial);
                    break;

                case Assimp.LightSourceType.Directional:
                    CreateDirectionalLight(light, spatial);
                    break;
                }
            }
        }