home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Encyclopedia of Graphics File Formats Companion
/
GFF_CD.ISO
/
formats
/
radiance
/
spec
/
tutorial.ms
< prev
next >
Wrap
Text File
|
1994-04-15
|
29KB
|
1,121 lines
.\" SCCSid "@(#)tutorial.1 2.2 1/24/93 LBL"
.\"Print using the -ms macro package
.ps 11
.nr PS 11
.vs 14
.nr VS 14
.TL
RADIANCE Tutorial
.AU
Greg Ward
.br
Lawrence Berkeley Laboratory
.NH
Introduction
.sp .5
.LP
RADIANCE is a lighting simulation program that synthesizes images
from 3-dimensional geometric models of physical spaces.
The input model describes each surface's shape, size, location and
composition.
A model may contain many thousands of surfaces, and is often produced
by a separate CAD program.
In addition to arbitrary (planar) polygons, RADIANCE directly models
spheres and cones.
Generator programs are provided for the creation of more complex
shapes from these basic
surface primitives.
Examples include boxes, prisms and surfaces of revolution.
A transformation utility permits the simple duplication of objects and
hierarchical construction of a scene.
.sp .5
.LP
This tutorial assumes a certain familiarity with the UNIX
operating system and its text editing facilities.
Ask your system administrator for a basic introduction.
.sp .5
.LP
The RADIANCE reference manual will be required to understand the following
examples of scene creation and program interaction.
Text in
.I italics
is user input.
.NH
Input of a Simple Room
.sp .5
.LP
In this example, we will use a text editor to create the input for
a simple room containing a box, a ball, and a light source.
In most applications, a CAD system would be used to describe a scene's
geometry, which would then be combined with surface materials,
light fixtures, and (optionally) furniture.
To get a more intimate understanding of the input to RADIANCE, we will
start without the advantages of a CAD program or an object library.
.sp .5
.LP
The scene we will be working towards is shown in Figure 1.
It is usually helpful to start with a simple drawing showing the
coordinate axis and the relative locations of major surfaces.
.sp .5
.LP
The minimum input required to get an image is a source of
illumination and an object to reflect light to the "camera".*\0
.FS
*In fact, a RADIANCE renderer can be thought of an invisible camera
in a simulated world.
.FE
We will begin with two spheres, one emissive and one reflective.
First we define the materials, then the spheres themselves.
Actually, the order is only important insofar as each modifier definition
(i.e. material) must appear before its first reference.
(Consult the RADIANCE manual for an explanation of the
primitive types and their parameters.)\0
Start your favorite text editor ("vi" in this example) to create the
following file called "room.rad":
.sp .5
.QP
%
.I "vi room.rad"
.sp .5
.QP
.I
.nf
#
# My first scene.
#
# this is the material for my light source:
void light bright
0
0
3 100 100 100
# this is the material for my test ball:
void plastic red_plastic
0
0
5 .7 .05 .05 .05 .05
# here is the light source:
bright sphere fixture
0
0
4 2 1 1.5 .125
# here is the ball:
red_plastic sphere ball
0
0
4 .7 1.125 .625 .125
.fi
.R
.sp .5
.LP
Now that we have a simple scene description, we can look at it with
the interactive viewing program,
.B rview.
First, however, we must create the "octree"
file that will be used to accelerate the rendering process.
To accomplish this, type the following command:
.sp .5
.QP
%
.I
oconv room.rad > test.oct
.R
.sp .5
.LP
Note that the suffixes ".rad" and ".oct" are not enforced by the program,
but are merely a convenience to aid the user in identifying files later.
The command
.B getinfo
can be used to get information on the origin of binary (unviewable)
files created by RADIANCE utilities.
Try entering the command:
.sp .5
.QP
%
.I "getinfo test.oct"
.sp .5
.LP
The usefulness of such a function will be apparent when you find
yourself with a dozen files named "test.pic".
.sp .5
.LP
To make an image of our scene,
we must select a suitable set of view parameters telling RADIANCE
where to point its camera.
To simplify our example, we will use the same starting position for
all our renderings, and change views only once
.B rview
is started:
.sp .5
.QP
%
.I
rview -vp 2.25 .375 1 -vd -.25 .125 -.125 -av .5 .5 .5 test.oct
.R
.sp .5
.LP
The "-vp" option gives the view point, and the "-vd" option gives
the view direction vector.
The "-av" option specifies the amount of light globally present
in the scene, permitting portions of the scene that are not
illuminated directly to be visible.
.B Rview
has many more options, and their default values may be discovered using:
.sp .5
.QP
%
.I "rview -defaults"
.sp .5
.LP
You should start to see an image of a red ball forming on your screen.
Take this opportunity to try each of
.B rview's
commands, as described in the manual.
If you make a mistake in a view specification, use the
.B last
command to get back to where you were.
It is probably a good idea to save your favorite view using the rview
command:
.sp .5
.QP
:
.I "view default.vp"
.sp .5
.LP
You can create any number of "viewfiles"
with this command, and retrieve them with:
.sp .5
.QP
:
.I last
viewfile
.sp .5
.LP
If you look around enough, you may even be able to see the light source
itself.
Unlike many rendering programs, the light sources in RADIANCE are
visible objects.
This illustrates the philosophy behind the program, which is the simulation
of physical spaces.
Since it is not possible to create an invisible light source in reality,
there is no reason to do it in simulation.
.sp .5
.LP
Still, there is no guarantee that the user will create physically meaningful
descriptions.
For example, we have just floated a red ball next to a light source somewhere
in intergalactic space.
In the interest of making this scene more realistic, let's enclose the
light and ball in a room by adding the following text to "room.rad":
.sp .5
.QP
%
.I "vi room.rad"
.sp .5
.QP
.I
.nf
# the wall material:
void plastic gray_paint
0
0
5 .5 .5 .5 0 0
# a box shaped room:
!genbox gray_paint room 3 2 1.75 -i
.fi
.R
.sp .5
.LP
The generator program
.B genbox
is just a command that produces a RADIANCE description, and it is
executed when the file is read.
It is more convenient than specifying the coordinates of four vertices
for each of six polygons, and can be changed later quite easily.
(See the manual genbox page for further details.)\0
.sp .5
.LP
You can now look at the modified scene, but remember first to
regenerate the octree:
.sp .5
.QP
%
.I "oconv room.rad > test.oct"
.br
%
.I "rview -vf default.vp -av .5 .5 .5 test.oct"
.sp .5
.LP
This is better, but our ball and light source are still floating, which
is an unrealistic condition for most rooms.
Let's put a box under the table, and a rod to suspend the light from
the ceiling:
.sp .5
.QP
.I
.nf
# a shiny blue box:
void plastic blue_plastic
0
0
5 .1 .1 .6 .05 .1
!genbox blue_plastic box .5 .5 .5 | xform -rz 15 -t .5 .75 0
# a chrome rod to suspend the light from the ceiling:
void metal chrome
0
0
5 .8 .8 .8 .9 0
chrome cylinder fixture_support
0
0
7
211.5
211.75
.05
.fi
.R
.sp .5
.LP
Note that this time the output of genbox was "piped" into another program,
.B xform.
.B Xform
is used to move, scale and rotate RADIANCE descriptions.
.B Genbox
always creates a box in the positive octant of 3-space with
one corner at the origin.
This was what we wanted for the room, but we wanted the box moved away
from the wall and rotated slightly.
First we rotated the box 15 degrees about the z-axis (pivoting on the
origin), then translated the corner from the origin to (.5,.75,0).
By no small coincidence, this position is directly under our original
ball.
.sp .5
.LP
After viewing this new arrangement, you can try changing some of the
materials -- here are a few examples:
.sp .5
.QP
.I
.nf
# solid crystal:
void dielectric crystal
0
0
5 .5 .5 .5 1.5 0
# dark brown:
void plastic brown
0
0
5 .2 .1 .1 0 0
# light gray:
void plastic white
0
0
5 .7 .7 .7 0 0
.fi
.R
.sp .5
.LP
To change the ball from red_plastic to the crystal defined above, simply
replace
.I "red_plastic sphere ball"
with
.I "crystal sphere ball".
Note once again that the definition of the new materials must
precede any references to them.
Changing the materials for the floor and ceiling of the room is a little
more difficult.
Since
.B genbox
creates six rectangles, all using the same material,
it is necessary to replace the command with its output before we can
make the required changes.
To do this, enter the command directly:
.sp .5
.QP
%
.I
genbox gray_paint room 3 2 1.75 -i >> room.rad
.R
.sp .5
.LP
The double arrow ">>" causes the output to be "appended" to the end
of the file, rather than overwriting its contents.
Now edit the file and change the ceiling
material to "white", and the floor material
to "brown".
(Hint: the ceiling is the polygon whose z coordinates are all high.
And don't forget to remove the original
.B genbox
command from the file!)
.sp .5
.LP
Once you have chosen a nice view, you can generate a high-resolution
image in batch mode using the
.B rpict
command:
.sp .5
.QP
%
.I "rpict -vf"
myview
.I "-av .5 .5 .5 test.oct > test.pic &"
.br
[PID]
.sp .5
.LP
The ampersand "&" causes the program to run in the background, so you can
log out and go home while the computer continues to work on your picture.
The bracketed number [PID]
printed by the C-shell command interpreter is the process
id that can be used later to check the progress or kill the program.
This number can also be determined by the
.B ps
command:
.sp .5
.QP
%
.I ps
.sp .5
.LP
The number preceding the
.B rpict
command is the process id.
If you want to kill the process later, use the command:
.sp .5
.QP
%
.I kill
PID
.sp .5
.LP
If you only want a progress report, use the form:
.sp .5
.QP
%
.I "kill -CONT"
PID
.sp .5
.LP
This sends a "continue" signal to
.B rpict,
which then prints out the percentage completion.
Note that this is a special feature of rpict, and will not work with most
programs.
Also note that this works only for the current login session.
If you log on later on a different terminal (or window),
.B rpict
will not send the report to the correct place.
It is usually a good idea, therefore, to give
.B rpict
an error file argument if it is running a long job:
.sp .5
.QP
%
.I rpict
.I -e
errfile ...
.sp .5
.LP
Now sending an alarm signal will result in
.B rpict
reporting to the end of the specified error file.
Alternatively,
you can use the
.I -t
option to generate reports automatically at regular intervals.
You can check the reports at any time by printing the file:
.sp .5
.QP
%
.I cat
errfile
.sp .5
.LP
This file will also contain a header, and any errors that occurred.
.NH
Addition of a Window
.sp .5
.LP
Adding a window to the room requires two basic steps.
The first step is to cut a hole in the wall an put in a piece of glass.
The second step is to put something outside to make the view worth having.
Since there are no explicit holes allowed in RADIANCE polygons, we use the
trick of coincident edges (making a seam) to give the appearance of a hole.
The new polygon for the window wall is shown in Figure 2.
.KF
.sp 18
.QP
.B "Figure 2."
The window wall with a hole cut in it.
.sp
.KE
.sp .5
.LP
To create the window wall, change the appropriate polygon in the scene
file (modified part in italics).
If you haven't done so already, follow the instructions in
the previous section to change the
.B genbox
command in the file to its corresponding polygons.
.sp .5
.KS
.QP
%
.I "vi room.rad"
.sp .5
.QP
.nf
gray_paint polygon room.5137
0
0
.I
30
321.75
320
300
301.75
3.6251.75
3.625.625
31.375.625
31.3751.375
3.6251.375
3.6251.75
.fi
.R
.sp .5
.KE
.LP
Next, create a separate file for the window.
(The use of separate files is desirable for parts of the scene that
will be manipulated independently, as we will see in a moment.)
.sp .5
.QP
%
.I "vi window.rad"
.sp .5
.QP
.nf
.I
# an 88% transmittance glass window has a transmission of 96%:
void glass window_glass
0
0
3 .96 .96 .96
window_glass polygon window
0
0
12
3.6251.375
31.3751.375
31.375.625
3.625.625
.fi
.R
.sp .5
.LP
The vertex order is very important, especially for polygons with holes.
Normally, vertices are listed in counterclockwise order as seen from the
front.
However, the hole of a polygon has its vertices listed in the opposite
order.
This insures that the seam does not cross itself.
.sp .5
.LP
The next step is the description of the scene outside the window.
A special purpose generator,
.B gensky,
will create a description of the sun and sky which will be
stored in a separate file.
The arguments to
.B gensky
are the month, day and hour (local standard time).
The following command produces a description for 10:00 solar time
on March 20th at latitude of 40 degrees:
.sp .5
.QP
%
.I "gensky 3 20 10 -o 0 -m 0 -a 40 > sky.rad"
.sp .5
.LP
The file "sky.rad"
contains only a description of the sun and the sky
.UL distribution.
The actual sky and ground are still undefined, so we will create another
short file containing a generic background:
.sp .5
.QP
%
.I "vi outside.rad"
.sp .5
.QP
.nf
.I
#
# A standard sky and ground to follow a gensky sun and sky distribution.
#
skyfunc glow sky_glow
0
0
4 .9 .9 1.15 0
sky_glow source sky
0
0
4 0 0 1 180
skyfunc glow ground_glow
0
0
4 1.4 .9 .6 0
ground_glow source ground
0
0
4 0 0 -1 180
.fi
.R
.sp .5
.LP
We can now put these elements together in one octree file using
.B oconv:
.sp .5
.QP
%
.I "oconv outside.rad sky.rad window.rad room.rad > test.oct"
.sp .5
.LP
Note that the above command results in the following error message:
.DS
oconv: fatal - (outside.rad): undefined modifier "skyfunc"
.DE
The modifier is undefined because we put "outside.rad",
which uses
.I skyfunc
before "sky.rad" where
.I skyfunc
is defined.
It is therefore necessary to change the order of the files so that
.I skyfunc
is defined
.UL before
it is used:
.sp .5
.QP
%
.I "oconv sky.rad outside.rad window.rad room.rad > test.oct"
.sp .5
.LP
Now let's look at our modified scene, using the same rview command as before:
.sp .5
.QP
%
.I "rview -vf default.vp -av .5 .5 .5 test.oct"
.sp .5
.LP
As you look around the scene, you will need to adjust the exposure repeatedly
to be able to see detail over the wide dynamic range now present.
To do this, wait a few seconds after choosing each new view and enter the
command:
.sp .5
.QP
:
.I "exposure 1"
.sp .5
.LP
or simply:
.sp .5
.QP
:
.I "e 1"
.sp .5
.LP
All commands in
.B rview
can be abbreviated by one or two letters.
Additional control over the exposure is possible by changing the multiplier
factor to a value greater than one to lighten or less than one to darken.
It is also possible to use absolute settings and spot normalization.
See the
.B rview
manual entry for details.
.sp .5
.LP
You may notice that other than a patch of sun on the floor, the window does
not seem to illuminate the room.
In RADIANCE, certain surfaces act as light sources and others do not.
Whether or not a surface is a light source is determined by its material
type.
Surfaces made from the material types
.I "light, illum, spotlight"
and (sometimes)
.I glow
will act as light sources, whereas surfaces made from
.I "plastic, metal, glass"
and other material types will not.
In order for the window to directly illuminate the room, it is therefore
necessary to change its material type.
We will use the type
.I illum
because it is specially designed for "secondary" light sources such as
windows and other bright objects that are not merely emitters but have
other important visual properties.
An
.I illum
will act as a light source for parts of the calculation, but when viewed
directly will appear as if made from a different material (or disappear
altogether).
.sp .5
.LP
Rather than modify the contents of "window.rad" which is a perfectly
valid description of a non-source window, let's create a new file, which
we can substitute during octree creation, called "srcwindow.rad":
.sp .5
.QP
%
.I "vi srcwindow.rad"
.sp .5
.QP
.nf
.I
#
# An emissive window
#
# visible glass type for illum:
void glass window_glass
0
0
3 .96 .96 .96
# window distribution function, including angular transmittance:
skyfunc brightfunc window_dist
2 winxmit winxmit.cal
0
0
# illum for window, using 88% transmittance at normal incidence:
window_dist illum window_illum
1 window_glass
0
3 .88 .88 .88
# the source polygon:
window_illum polygon window
0
0
12
3 .625 1.375
3 1.375 1.375
3 1.375 .625
3 .625 .625
.R
.fi
.sp .5
.LP
There are a couple of things you should notice in this file
The first definition is the normal glass type, window_glass,
which is used for the alternate material for the
.I illum
window_illum.
Next is the window distribution function, which is the sky distribution
modified by angular transmittance of glass defined in winxmit.cal.
Finally comes the
.I illum
itself, which is the secondary source material for the window.
.sp .5
.LP
To look at the scene, simply substitute "srcwindow.rad" for "window.rad"
in the previous
.B oconv
command, thus:
.sp .5
.QP
%
.I "oconv sky.rad outside.rad srcwindow.rad room.rad > test.oct"
.sp .5
.LP
You can look at the room at different times by changing the
.B gensky
command used to create "sky.rad" and regenerating the octree.
(Although the octree does not strictly need to be recreated for
.UL every
change to the input files, it is good to get in the habit until
the exceptions are well understood.)\0
.NH
Outside Geometry
.sp .5
.LP
If the exterior of a space is not approximated well by an infinitely
distant sky and ground, we can add a better description
to calculate a more accurate window output distribution as well as
a better view outside the window.
Let's add a ground plane and a nearby building to the "outside.rad"
file we created earlier:
.sp .5
.QP
.nf
.I
# Terra Firma:
void plastic ground_mat
0
0
5 .28 .18 .12 0 0
ground_mat ring groundplane
0
0
8
00-.01
001
030
# A big, ugly, mirrored glass building:
void mirror reflect20
0
0
3 .15 .2 .2
!genbox reflect20 building 10 10 2 | xform -t 10 5 0
.R
.fi
.sp .5
.LP
Note that the groundplane was given a slightly negative z value.
This is very important so that the ground does not peek through
the floor we have defined.
The material type
.I mirror,
used to define the neighboring structure, is special in RADIANCE.
Surfaces of this type as well as the types
.I prism1
and
.I prism2
participate in something called the "virtual light source" calculation.
In short, this means that the surfaces of the building we have created
will reflect sunlight and any other light source present in our scene.
The virtual light source material types should be used with care since
they can result in substantial growth in the calculation.
It would be a good idea in the example above to remove the bottom
surface of the building (which cannot be seen from the outside anyway)
and change the roof type to metal or some non-reflecting material.
This can be done using the same manual process described earlier for
changing the room surface materials.
.sp .5
.LP
Now that we have a better description of the outside, what do we do
with it?
If we simply substitute it in our scene without changing the description
of the window
.I illum,
the distribution of light from the window will be slightly wrong because
the "skybright" function only describes light from the sky and the ground,
not from other structures.
Using this approximation might be acceptable in some cases, but let's
assume that accuracy is one of our main goals in life.
There are two ways to an accurate calculation of light from a window.
The first is to treat the window as an ordinary window and rely on the
default interreflection calculation of RADIANCE, and the second is to
use the program
.B mkillum
to calculate the window distribution separately so we can still treat
it as an
.I illum
light source.
Let's try them both.
.sp .5
.LP
Using the default interreflection calculation is probably easier, but
as we shall see it takes a little longer to get a good result in this
case.
To use the interreflection calculation, we first create an octree
using the original glass window and our new description of the outside:
.sp .5
.QP
%
.I "oconv sky.rad outside.rad window.rad room.rad > test.oct"
.sp .5
.LP
Now we just add a few new options to our rview command like so:
.sp .5
.QP
%
.I "rview -vf default.vp -dr 1 -av .5 .5 .5 -ab 1 -ad 200 -as 80 -ar 80 test.oct"
.sp .5
.LP
The
.I \-dr
parameter tells
.B rview
how many reflections to allow in the virtual light source calculation.
Because of the geometry of our scene, there will never be more than
one reflection from our exterior building.
The
.I \-ab
parameter tells
.B rview
how many diffuse interreflections to follow.
When this value is 0, there is no interreflection calculation.
By setting this parameter to 1, we compute the first diffuse interreflection
(eg. from the sun patch to the wall) as well as the contribution from
the sky and exterior objects through the window.
The
.I \-ad
option tells
.B rview
how many rays to use in its initial sampling of the hemisphere for the
diffuse interreflection calculation.
We have set this value high enough so the program can find the
relatively small window and its sun patch.
The
.I \-as
option tells the program how many rays to send to particularly bright
areas of the hemisphere.
Since we know that we will have such bright areas, we set this value to
something which is around half the initial sample.
The
.I \-ar
option tells
.B rview
at what resolution it can relax the accuracy of the interreflection
calculation.
This number is relative to the overall size of our scene, which can be
determined using
.I getinfo
on the octree like so:
.sp .5
.QP
%
.I "getinfo -d test.oct"
.sp .5
.LP
This command reveals that our scene has an overall dimension of 60 (due
to the large ring we have used for our ground plane).
In order to have good resolution in our interior space, we set the value
so that 60 divided by this parameter is somewhat less than one quarter
the dimension of our interior space.
Unfortunately, many of the calculation parameters used in Radiance are
difficult to set correctly the first time, and require some experience
as well as knowledge about the calculation.
.sp .5
.LP
Probably the first thing you notice after starting
.B rview
is that nothing happens.
It takes the calculation a while to get going, as it must trace
may rays at the outset to determine the contribution at each
point from the window area.
Once
.B rview
has stored up some values, the progress rate improves, but it
never really reaches blistering speed.
.sp .5
.LP
A more efficient alternative in this case is to use the program
.B mkillum
to create a modified window file that uses calculated data values to
define its light output distribution.
Applying mkillum is relatively straightforward in this case.
You simply give it an octree defined with the normal window and the file
describing this window and it creates a new window description using
calculated data values:
.sp .5
.QP
%
.I "oconv sky.rad outside.rad window.rad room.rad > test.oct"
.br
%
.I "mkillum -av 18 18 18 -ab 0 test.oct < window.rad > mkiwindow.rad"
.sp .5
.LP
The
.I \-av
value is appropriate for the outside, which is much brighter, as
suggested by the output of the gensky command stored in "sky.rad".
The
.I \-ab
option is set to 0, because outside the building we do not expect
interreflections to play as important a role as in the interior (plus we
are trying to save some time).
The
.B mkillum
command may take a few minutes, so be patient.
If we look at the output file from
.I mkillum,
we see that it uses a pattern type called
.I brightdata,
which refers to a data file called "illum.dat".
This file contains the results of an
.B rtrace
calculation, which traced many rays in each direction from the window in
order to determine its brightness distribution.
Now we can create an octree using this new file and render it with
.B rview,
this time without the interreflection calculation:
.sp .5
.QP
%
.I "oconv sky.rad outside.rad mkiwindow.rad room.rad > test.oct"
.br
%
.I "rview -vf default.vp -av .5 .5 .5 test.oct"
.sp .5
.LP
You will notice that the calculation proceeds much more quickly, and
even produces a smoother looking result.
Aside from waiting for mkillum to finish, there is an additional price
for this speed advantage, however.
The contribution from the sun patch on the floor is no longer being
considered, since we are not performing an interreflection calculation
inside our space.
The light from the window is being taken care of by the mkillum output,
but the solar patch is not.
In most cases, we endeavor to prevent direct sun from entering the
space, and in the morning hours this is true for our model, but
otherwise it is necessary to use the diffuse interreflection calculation
to correctly account for all contributions.
.NH
Discomfort Glare
.sp .5
.LP
Especially in scenes containing daylight, situations arise where the
occupant is uncomfortable due to large differences in the brightness of
the visual field.
For example, trying to look at someone's face when they are backlit by a
bright window is difficult and painful.
We would therefore like some way to predict the effects of such bright
sources of illumination when designing a space.
RADIANCE provides just such a calculation.
.sp .5
.LP
Let's start by generating a fisheye picture of our design space:
.sp .5
.QP
%
.I "rpict -vta -vp 1.5 .8 1 -vd 0 1 0 -vh 240 -vv 180 -av .5 .5 .5 test.oct > fish.pic"
.sp .5
.LP
This picture will be used to identify sources of glare from a particular
view point (1.5, 1, 1) about a particular direction (0, 1, 0).
Since RADIANCE pictures contain true floating point radiance values,
they can be used to analyze a visual environment for problems such as
discomfort glare.
Once
.I rpict
has finished (and this may take the better part of an hour), you may
display the image using
.B ximage
or whatever display program you have available on your system.
A fisheye perspective is a type of distortion that allows a wider field
of view than a standard perspective image.
This larger field is used by the program
.I findglare
to locate any and all bright spots that might affect visual comfort.
.B Findglare
can also use direct calculation with
.B rtrace,
but this takes a long time without providing the nice visual feedback one
gets from an image.
.sp .5
.LP
To facilitate the use of
.B findglare
and the associated programs
.B glarendx
and
.B xglaresrc,
a script has been written called
.B glare.
This script asks you some questions and to make it a little easier to
get a nice result.
To start the script, simply type
.I glare
on the command line.
When it asks you a name for the glare file you want to work with, enter
something innocuous like "test.glr".
It will tell you that the file does not exist, so we will have to create
it.
It then prompts you for the name of the picture and the name of the
octree, which are "fish.pic" and "test.oct", respectively.
When it asks for the view, just hit return because we want to use the
default view from the picture file.
.B Glare
then asks what parameters it should use for the
.B rtrace
calculation.
.B (Findglare
will still use
.B rtrace
to calculate any points that it needs which are off the picture we have
given it.)\0
For this, you should give the
.I \-av
setting from before (.5 .5 .5).
Then
.B glare
will ask you if the sources of glare are small, which they are
not, and if you would like to set the glare threshold manually, which
you would not.
Finally, you will be asked
what maximum angle you want to calculate away from the view
center.
Let's use 60 degrees (to the right and left).
.B Glare
then proceeds to call the program
.B findglare
to locate the actual glare sources.
Once
.B findglare
has finished,
.B glare
will call the program
.B xglaresrc
(if you are running X) to circle the glare sources found on the image.
.sp .5
.LP
You then have a choice of a few different glare indices you may
calculated from the computed sources.
The Guth visual comfort probability (VCP) is perhaps the easiest to
understand for those who are not familiar with glare metrics, because
it gives a result in terms of a percentage of people who would be
satisfied.
Calculating the Guth VCP in this case, we see that looking straight
ahead (ie. 0 degrees), we see that less than 15% of the people would
find this visual environment comfortable.
Although the visual comfort probability increases as we look to the left
(positive angles), it never gets over 20% for the range of angles we've
given.
That is primarily because the window is unshielded and very near the
horizontal line of sight.
Skylights and ceiling fixtures are a little nicer from a glare
standpoint for that reason.