|
The SEDRIS Data Representation Model
APPENDIX A - Classes Volume Light Behaviour |
|---|
An instance of this DRM class is a < Light Rendering Behaviour>, the colour of which varies depending on the observer's position relative to the light's location and to the volume's geometry. The volume surrounds the light. Within the volume, the light has the primary colour; outside the volume, it takes the secondary colour.
The <Volume Light Behaviour> has a primary colour that is a <Colour Index> that has an intensity attribute of 0.95. The <Volume Light Behaviour> also has a secondary colour. The minimum_colour_intensity is 0.0. The use_full_intensity flag is SE_FALSE. The light is in the centre of the volume and the volume is a <Parallelepiped Volume Extent> representing a cube measuring 2000m per side.
if:
eye_distance_from_light = the distance of the viewing
position from the light
volume_distance_from_light = the distance between the light
and the volume boundary along
the same vector
then:
final_intensity =
minimum_colour_intensity +
(((volume_distance_from_light -
eye_distance_from_light) /
volume_distance_from_light) *
(full_intensity -
minimum_colour_intensity))
If my position from the light is a distance of 500m
along a vector from the light to a corner of the volume then
the final_intensity is 0.614.
0.0 + (((1414.2 - 500.0) / 1414.2) * (0.95 - 0.0))
If my position from the light is 3000m then the final_intensity is 1.0 (using the secondary colour) because I am outside the volume and there is a secondary colour on the <Volume Light Behaviour>.
The <Volume Light Behaviour> has a primary colour that is an <Inline Colour> (which makes the full intensity 1.0). The minimum_colour_intensity is 0.5. The use_full_intensity flag is SE_TRUE. The light is in the centre of the volume and the <Volume Extent> is a <Spherical Volume Extent> with a radius of 1000m.
If my distance from the light is a distance of 100m then the final_intensity is 1.0, since my position is inside the volume and the use_full_intensity flag is set to SE_TRUE.
If my distance from the light is a distance of 0 units then the final_intensity is 1.0 since my position is inside the volume and the use_full_intensity flag is set to SE_TRUE.
| SE_Boolean | use_full_intensity; | (notes) |
|---|---|---|
| SE_Long_Float | minimum_colour_intensity; | (notes) |
This specifies the centre of the volume.
This specifies the shape of the volume.
If present, this component serves to locate and orient the volume within the currently scoped spatial reference frame.
If SE_TRUE, indicates that the full intensity of the light is shown within the volume. Otherwise, the intensity of the light decreases (towards the minimum_colour_intensity value) as the observer moves away from the light. The intensity of the light reaches the minimum_colour_intensity value when the observer reaches the boundary of the volume.
This value (between 0.0 and 1.0) is used in conjunction with the intensity value of the primary colour. If the primary colour is a <Colour Index> then the full intensity will be the intensity attribute of that class. If the primary colour is an <Inline Colour> then the full intensity is 1.0. If your location is the same as that of the light then you receive the full (intensity) value. As you move away from the light (but are still within the volume), the intensity decreases toward the minimum_colour_intensity value (unless the use_full_intensity flag is SE_TRUE). Once you get outside the volume, the intensity is that of the minimum_colour_intensity value. If the minimum_colour_intensity value is 0.0 and you're outside the volume, the secondary colour will be seen. If no secondary colour is used then nothing will be seen.
|