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); }
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); }
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); }
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; } } }