A Cone Directional Light is a light whose intensity varies depending on your position relative to the light's location, direction, and shape. This light takes the shape of a cone (which can be elliptical).
A Cone Directional Light can have a plane that divides the light cone into an upper and a lower section along the body of the cone. The upper section receives the primary color while the lower section receives the secondary color, if one is used.
equation:
final_intensity = minimum_color_intensity + ((((width / 2.0) - degrees_away_from_direction_vector) / (width / 2.0)) * (full_intensity - minimum_color_intensity))
If my position from the light direction vector is 15 degrees in the horizontal direction then the final_intensity is 0.35. 0.2 + ((((40.0 / 2.0) - 15.0) / (40.0 / 2.0)) * (0.8 - 0.2))
If my position from the light direction vector is 25 degrees in the horizontal direction then the final_intensity is 0.2, because I am outside the horizontal width.
If my position from the light direction vector is 40 degrees in the horizontal direction, then the final_intensity is 1.0 since the use_full_intensity flag is true and I am inside the horizontal width.
If my position from the light direction vector is 50 degrees in the horizontal direction, then the final_intensity is 0.5, since I am outside the horizontal width.
If my position from the light direction vector is 40 degrees in the vertical direction, then I see the primary color with an intensity of 0.8 since the use_full_intensity flag is true and I am inside the vertical width. If my position from the light direction vector is 40 degrees in the horizontal direction, then I see the secondary color with an intensity of 0.8, since the minimum_color_intensity is 0.0 and I am outside the horizontal width.
If my position from the light direction vector is 25 degrees in the vertical direction, towards the positive end of the vertical axis vector, then I see the primary color with an intensity of 0.8. This is because the minimum_color_intensity value is 0.0 and I am inside the vertical width, in the upper section of the cone.
If my position from the light_direction_vector is 15 degrees in the vertical direction, towards the positive end of the vertical axis vector, then I see the secondary color with an intensity of 0.8. This is because the minimum_color_intensity value is 0.0 and I am inside the vertical width, in the lower section of the cone.
| SE_BOOLEAN | has_plane; | (notes) |
|---|---|---|
| SE_FLOAT64 | plane_angular_offset; | (notes) |
| SE_BOOLEAN | use_full_intensity; | (notes) |
| SE_FLOAT64 | minimum_color_intensity; | (notes) |
| SE_BOOLEAN | invisible_behind; | (notes) |
lobe shape
A flag indicating that a plane, based at the cone apex and extending along the body of the cone, divides the light cone into an upper and a lower section. The upper section receives the primary color. If a secondary color is used, the lower section receives it.
This value defines the angular offset of the plane that may divide the light into an upper and a lower section. It is measured in degrees (-180 to 180) from the lobe's light direction vector (<Lobe Data> component Reference_Vector of type SE_LIGHT_DIRECTION) along its vertical axis vector (<Lobe Data> component Reference_Vector of type SE_VERTICAL_AXIS). The resulting upper section of the light is taken to be between the plane and the positive end of the vertical axis vector. This value is ignored if has_plane is false.
A flag, if true indicates that the full intensity of the light is shown in the cone shaped area. If this flag is false, then the intensity of the light decreases (towards the minimum_color_intensity value) as you move away from the direction vector.
This value (between 0.0 and 1.0) is used in conjunction with the intensity value of the primary color. If the primary color is a <Color_Index> then the full intensity will be the intensity field of that class. If the primary color is an <Inline Color> then the full intensity is 1.0. If your location is in the direct path of the light direction vector (<Lobe Data> component Reference_Vector of type SE_LIGHT_DIRECTION), then you receive the full (intensity) value. As you move away from the light direction vector (but still lie within the horizontal and vertical widths), your intensity decreases toward the minimum_color_intensity value (unless the use_full_intensity flag is TRUE). Once you get outside the horizontal and vertical width area, then the intensity is that of the minimum_color_intensity value. If the minimum_color_intensity value is 0.0 and you're outside the vertical and horizontal widths, the secondary color will be seen. If no secondary color is used then nothing will be seen.
if this flag is set, then the directional light is not seen if you're behind the plane of the directional light.