The SEDRIS Data Representation Model
APPENDIX A - Classes Pyramid Directional Light |
---|
An instance of this DRM class specifies a light, the intensity of which varies depending on the observer's position relative to the light's location, direction, and pyramid-shaped lobe.
If a secondary colour exists, it is seen outside the lobe.
Consider a light represented by a DRM object L with a <Light Rendering Properties> component having a <Pyramid Directional Light> component of its own. The primary colour of the light is represented by a <Colour Index> component of L that has colour_mapping = { Primary_Light_Rendering_Behaviour } and intensity_level = 0.9, and which also has a secondary colour. The minimum_colour_intensity is 0.0. The use_full_intensity flag is SE_FALSE. The <Lobe Data> component has horizontal_width = 1.04 radians and vertical_width = 1.04 radians.
The following equation computes the final intensity:
final intensity = minimum_colour_intensity +
((((width / 2.0) - radians_away_from_direction_vector) /
(width / 2.0)) ×
(full_intensity - minimum_colour_intensity))
At 0.177 radians (approximately 10 degrees) from the SE_REFVEC_LIGHT_DIRECTION vector in the horizontal direction, the final intensity is
0.6 = 0.0 + ((((60.0 / 2.0) - 10.0) / (60.0 / 2.0)) × (0.9 - 0.0))
At 0.6195 radians (approximately 35 degrees) from the SE_REFVEC_LIGHT_DIRECTION vector in the horizontal direction, the final intensity is 1.0 (using the secondary colour), because this lies outside the lobe.
Consider a light represented by a DRM object L with a <Light Rendering Properties> component having a <Pyramid Directional Light> component of its own. The primary colour of the light is represented by an <Inline Colour> instance, so that the full intensity is 1.0. The minimum_colour_intensity is 0.2. The use_full_intensity flag is SE_TRUE. The horizontal_width of the <Lobe Data> component is 0.354 (approximately 20 degrees) and the vertical_width is 0.354.
Lying on the SE_REFVEC_LIGHT_DIRECTION vector (that is, at 0 radians), the final intensity is 1.0.
At 0.177 radians (approximately 10 degrees) from the SE_REFVEC_LIGHT_DIRECTION vector in the horizontal direction, the final intensity is 0.2, since this position is outside the lobe.
No FAQs supplied.
SE_Boolean | use_full_intensity; | 2 |
---|---|---|
SE_Long_Float | minimum_colour_intensity; | 3 |
SE_Boolean | invisible_behind; | 4 |
If SE_TRUE, the use_full_intensity field specifies that the full intensity of the light is shown in the pyramid shaped area. Otherwise, the intensity of the light decreases (towards the minimum_colour_intensity value) as one moves away from the SE_REFVEC_LIGHT_DIRECTION vector.
The minimum_colour_intensity field's value is used in conjunction with the primary colour's full intensity value. If the primary colour is a <Colour Index> instance, the full intensity is specified by its intensity_level field. If the primary colour is an <Inline Colour> instance, the full intensity is 1.0.
A location in the direct path of the <Lobe Data> instance's SE_REFVEC_LIGHT_DIRECTION vector receives the full intensity value. If use_full_intensity is SE_FALSE, the intensity decreases with increasing distance from the SE_REFVEC_LIGHT_DIRECTION vector, until the boundary specified by the horizontal_width and vertical_width of the <Lobe Data> instance is reached. Outside the lobe, the intensity is minimum_colour_intensity. If the minimum_colour_intensity value is 0.0, the secondary colour (if present) shall be seen outside the lobe at full intensity. If no secondary colour is present, nothing shall be visible outside the lobe.
If the value of the invisible_behind field is SE_TRUE, the directional light is invisible when viewed from behind the plane of the directional light.
|