NAME
hwLight - create a light source for illuminating a scene
PROPERTIES
Color 3F Color of the light source
Positional 1I True if it has a finite distance, false if
is placed an infinite distance from the scene
Pos 3F Position, if Positional is true
Dir 3F Direction the light is pointing
Cutoff 1F Cutoff angle of a positional light, in degrees
LightExp 1F Rate of "fade" as objects get away from the
centerline of the light
Atten 1F Rate of "fade" as objects get farther away from
the light
DEFAULTS
Color = {1,1,1}
Positional = False
Pos = {0,0,-1}
Dir = {0,0,1}
Cutoff = 0.0 # That is, radiate in all directions
LightExp = 0.0 # That is, don't fade
Atten = 0.0 # That is, don't attenuate
DESCRIPTION
The hwLight class creates a light source which will illuminate
objects in the scene. Either directional or positional light
sources may be created; a directional light source lights as if it
were located an infinite distance away from the view and objects; a
positional light source has a specified position in the scene.
For directional light sources, the only relevant parameters are the
Color and the Dir (the direction the light beams are shining). All
other parameters are ignored. Directional light sources are
probably the easiest to use. The Dir parameter will be modified by
the model matrix in place when the light is drawn.
For positional light sources, all parameters are relevant. The Pos
is the position of the light, in *model* coordinates. That is, the
Pos will be effected by whatever matrix is pushed on the stack. The
Dir is only useful if the Cutoff angle is non-zero; it is the
direction that a cone light is pointing. It is modified by the
model matrix in place when the light is drawn. The Cutoff angle is
half of the width, in degrees, of a conical light source. If this
angle is zero, the light source radiates in all directions. The
LightExp is a number between 0.0 and 1.0 which specifies the
spotlight "fade" as the direction from the light to the object gets
farther from the axis. The Atten is a number specifying the rate at
which the light attenuates as objects get farther from it. If this
is 0.0, then the light does not attenuate. Otherwise, it must be
greater than or equal to 1.0.
C EXAMPLE
/* Draw a directional red light */
hwObject
light;
light = hwLight->create( hwLight );
HW_MODIFY_3F( light, hwStrColor, 1, 0, 0 );
HW_MODIFY_3F( light, hwStrDir, 1, 1, 1 );
light->draw( light, disp );
light->destroy( light );
OBJECT FILE EXAMPLE
# A directional red light
hwLight light {
Color = {1,0,0}
Dir = {1,1,1}
}
SEE ALSO
hw(3), hwMatrix(3), hwSpinner(3)