SG3d is meant to be used as a tool for viewing a data sur- face in three dimensions using GRASS on Silicon Graphics IRIS computers. Hardware requirements are a Z-buffer and 24 bit graphics OR a 24 bit graphic emulator, such as that on the IRIS Indigo.
SG3d requires a raster file to use as "elevation" and another raster file to use for surface color (or three files for Red, Green and Blue components of color). While a true elevation data file used as elevation will produce the most realistic surfaces, users are encouraged to be creative in selecting other types of data to be represented by the vert- ical dimension. Most continuous (as opposed to discrete) data types will result in a visualization that makes sense. While developing the program, we used chemical concentra- tions as the elevation file with good visual results.
Emphasis during development was on ease and speed of viewer positioning and flexibility for using a wide range of data values and sizes. Since a wire grid can be drawn very quickly, such a grid is used to provide real-time viewer positioning capabilities. Similarly, a lighting "model" provides real-time feedback as the user adjusts lighting. Grid and polygon resolution control allows the user to further refine drawing speed and detail as needed. Continu- ous scaling of elevation values from 1.0ee-7 to 1.0ee+7 pro- vides the ability to use various data types for the vertical dimension.
In this release, we upgraded SG3d to allow interactive lighting specifications, vector draping, data querying (see What's here?), easier viewer positioning, an option to save current settings in a GRASS database (3d.view) file, anima- tion capabilities, scale objects, labeling, an option to display lat-long data wrapped around a sphere, the ability to save images in IRIS rgb format files, and a few less dramatic changes such as background color options and an animate display type option that allows the user to view a fully rendered image while adjusting viewer positioning (see Options...).
Before starting the program, check your current GRASS region resolution and dimensions. The current resolution will determine the best resolution available in SG3d. Large dimensions such as 1000 x 1000 rows and columns may cause the program to run slower. Try starting out with a smaller (i.e. 300 x 300 or less) region until you get more comfort- able and experienced using the program.
After starting the program, place your GRASS window where it can be seen and typed into, as it is used to issue prompts and warnings and to input filenames.
Any sliders and dials used in the control panels have a FINE ADJUSTMENT: Hold down the Ctrl key while manipulating the dial or slider for fine control.
When compiling under IRIX 3.x, comment out the line #define FOUR_OH in the externs.h file. If compiling under IRIX 4.0, leave the line in (default).
SG3d [-w] [-z] elevfile color=colorfile(s)
[vect=vectfile] [script=scriptfile] [sites=sitesfile]
[3dview=3dviewfile]
-w enables writing to a script file
-z Uses site catagory value as Z value
(height) when displaying sites
elevfile name of a GRASS raster file to use as
elevation
colorfile name of a GRASS raster file to use
for surface color. Three raster
files may be used for red, green, and
blue components of color instead of a
single file:
co=red_filename,green_filename,blue_filename
vectfile (optional) name of a GRASS vector
file.
scriptfile (optional) automatically run this
script file at startup. Script file
must be in user's current directory.
sitesfile (optional) name of a GRASS sites list
file.
3dviewfile (optional) name of a GRASS 3D viewing
parameters file.
If the user types SG3d on the command line without any argu- ments, the program will prompt the user for the arguments.
XY position: The XY position box contains a star-shaped
puck which represents the viewer. Click on the puck
and drag to move the viewer around. The data may be
thought of as always lying in the center of the box,
with north at the top. The puck also has a dial
attached to it that always points in the direction the
viewer is looking.
Height: Adjusts the viewer's height.
look here: Allows the user to click on a spot on the
data surface which will remain centered as the viewer
position changes. Clicking on here results in a prompt
in the GRASS window:
LEFT MOUSE BUTTON to mark new center of view
ESCAPE key to cancel
After clicking on the surface, the new center is
automatically set and the surface is redrawn.
look center: Automatically fixes new center of view at
the center of the graphics window (not the center of
the data). If there is not a surface point at the
center of the window, look center chooses the centroid
of the visible surface for the new center. Requires no
mouse input, so may be used in scripting. (see
script...)
look cancel: Clicking on cancel allows the user to
move over the surface with no fixed center of view
(default).
Z exag: Exagerates the vertical dimension of the sur-
face. An exageration of 1.0 represents the surface
with x, y, and z units all being equal. For example,
if the easting and northing units are in meters and the
elevation in feet, a Z exageration of .305 would be the
true exageration for the surface. For most geographi-
cal applications, greater than true exageration pro-
duces more visually pleasing images.
Z Scale: May be thought of as a course adjustment for
Z exageration. Originally included to handle data sets
with vastly different units or scales used for eleva-
tion, the program now does a decent job of guessing the
desired Z scale at startup.
Perspective: Adjusts the viewer's angle of view.
Ortho: Uses an orthographic projection instead of per-
spective. This type of projection tends to give an
image less feeling of depth, but it can be useful when
perspective causes too much distortion. If the Per-
spective slider is activated while Ortho is toggled on,
Ortho is automatically cancelled.
View Dir., Twist, and View Incline: adjust the viewing
direction. Adjusting the View Dir. or View Incline
dials when the look option (fixed center of view) is on
will result in the look option being cancelled, as if
you clicked on look cancel first.
Reset: Sets all settings to their startup values.
3.2. Control Panel
Use Control panel options to select the type of surface to
be drawn. Most of these options are toggle buttons that are
enabled by clicking once and disabled by clicking again.
After options are set, click on Draw to see the results.
Clicking on Cancel while the surface or vectors are being
drawn cancels the drawing. Clicking on a button other than
Cancel while drawing will produce unexpected results.
Grid Resolution: sets number of cells between grid
lines when drawing wire grids (in both fast display
mode and Draw mode). A larger grid resolution number
produces a more sparce grid.
Poly Resolution: sets number of cells to be used as
dimensions of each polygon drawn when drawing polygons.
Each drawn polygon actually represents (Poly Res x Poly
Res) cells.
Polygon: draw surface using filled polygons (most
realistic).
Wire/Poly: draw surface as polygons, but with wire
mesh draped over it.
Wire: draw surface with a wire mesh. This differs
from the mesh drawn in fast display mode in that hidden
lines are not drawn.
Col Wire: same as Wire, but use colors from raster
file for wires. Also affects grid drawn in fast
display mode - useful when trying to position over a
specific data area more identifiable by color than by
elevation.
Gouraud: smooth shade surface to blend individual cell
colors together.
Fringe: draw fringe around outside edges of surface.
Lights: use lighting to show surface relief.
Surface Only: (when using lights) show surface without
color from raster file (renders using color from
lights).
What's here? Like the GRASS program d.what.rast, you
are prompted to use the mouse to mark spots on the sur-
face that you would like more information about. After
clicking on the surface, data prints to the GRASS win-
dow. First, the geographical coordinates are printed.
Then, elevation is bilinearly interpolated from the
current polygon resolution and this is printed (setting
the resolution to 1 will produce the most accurate
elevation). Then one line for each data file used to
create the surface (two or four files, depending on
number of files used for color) is printed displaying
the file name, mapset, value (not interpolated, only to
the nearest cell), and category. Each time you select
a point, a small x is drawn on the surface at the point
selected. To stop selecting points you must click the
right mouse button.
Triangulate: Under IRIX 3.x, using the triangulate
feature will slightly improve drawing speed. Under
IRIX 4.0, there is no performance gain. When triangu-
late is selected, polygons are always broken into tri-
angles along the same diagonal. Without triangulate,
polygons are still drawn as triangles when all four
vertices of the polygon do not lie in the same plane,
but the diagonal used is determined by the surface nor-
mals at the vertices, resulting in a more natural look-
ing surface. This option may be deleted in future ver-
sions.
No Zeros: do not draw surface where elevation data
values are zero.
Draw: draw the currently defined surface.
Cancel: cancel any drawing that is currently underway.
Vect: draw the currently defined vector file. If no
vector file has been specified, this button is dis-
abled. (also see Vect...)
Sites: draw the currently defined sites file. If no
sites file has been specified, this button is disabled.
When drawn, sites appear as small (X)s draped over the
surface. Using the -z option at startup causes sites
to be drawn using the site category value as elevation
instead of draping the sites on the surface. SG3d uses
the current Poly Resolution to determine the size of
the (X)s; for bigger (X)s, increase the Poly Resolution
after drawing the surface but before drawing the sites.
(also see Options...)
Quit: exit the program.
Img Dump: Prompts user in the GRASS window for a name
to be used for an IRIS rgb format image file, then
writes the contents of the graphics window to that
file. This is basically a screen dump of the portion
of the screen defined by the boundaries of the graphics
window, so if any panel windows or windows from other
applications are partially covering the graphics win-
dow, they will appear in the saved image as well. To
view the image files, you can use the SGI programs
ipaste and imgview. SGI also provides many programs to
convert rgb image files to other formats: toppm,
totarga, tosun, tops, etc.
3.3 Menus
The Menus panel contains buttons that toggle six additional
pop-up panels. To make a hidden window visible, click once
on the desired button. To hide the window, click again on
the button.
3.4 Lights...
The Lights panel contains adjustments and options to control
the position, color and brightness of the lights and the
reflectivity (shininess) of the surface. There are actually
two lights: one dim white light remains directly above the
surface at all times and serves as fill light. The main
light, which the user controls, is a "local" light which is
positioned much like the view position. When lights are
being adjusted, a sphere appears on the surface and is con-
tinuously redrawn to show the effects of lighting changes.
The lighting adjustments do not affect the appearance of the
surface until it is redrawn. Neither light is directional;
light is emitted equally in all directions.
Follow Viewpoint: By default, the light position is
near the viewing position and the light moves with the
viewer. Toggling this option off will keep the light
fixed in one position as the viewer position changes.
Adjusting the Height or XY position of the light
automatically toggles Follow Viewpoint off.
Show Model: The sphere showing current lighting
effects can be removed by toggling this option off.
Height: Adjusts light height.
XY position: Adjusts light position over surface;
north is always at the top.
Light Brightness: Adjusts the brightness of the light.
R, G, B: Adjusts the Red, Green and Blue components of
the main light.
Ambient Light: Adjusts the ambient light associated
with the main light and the brightness of the fill
light.
Surface Reflectivity: Adjusts the shininess of the
surface.
New Vect: Prompts user in the GRASS window for the
name of a new vector file. Only one vector file is
"current" at any given time, but there is no limit to
the number of files that may be loaded and drawn on the
same surface one at a time.
Drape, Flat, Vect Z: If Drape is selected (default),
lines are draped over the surface and Vect Z controls
the distance above the surface that the vector lines
"float". e.g., if vector lines appear to be buried
under the surface in spots, try increasing the Vect Z.
If Flat is selected, lines are drawn in a single plane
and Vect Z controls the vertical position of the plane.
Adjusting Vect Z in flat mode causes an outline of the
plane to be drawn to help the user position the level
of the plane.
Line Width: Width (in pixels) to draw vector lines.
color, Darker: Select color used to draw vector lines.
Toggling Darker will use the selected color at a lower
intensity.
Save Current 3d View: Prompts user in the GRASS window
for the name of a file in which to save the current
position and control settings.
Load 3d View: Prompts user in the GRASS window for the
name of a 3d.view file in which position and control
settings have been saved, loads the file and resets
dials and buttons. If loading a view that was saved
when viewing a different region, a warning is printed
describing the percentage of the region from which the
view was saved that is overlapped by the current
region. In such cases, loaded settings may produce
unexpected results. 3d.view files are GRASS 4.1 data-
base files, and the region may be changed using
g.region 3dview=viewfilename (SG3d would then need to
be restarted). The 3d.view files used by this program
are compatible with 3d.view files used by the GRASS
program d.3d, but minor differences in the view may
occur due to the different ways the two programs inter-
pret parameters.
New Sites File: Prompts user in GRASS window for a new
sites file.
sites color: Select color for sites.
New Cell (color) File: Prompts user in GRASS window
for one or three new raster files to use for surface
color. The program allows the user to use a single
raster file for surface color or three separate raster
files for the red, green, and blue color components.
The first prompt will ask Choose single cell file OR
RED file:. If you want to use a single raster file for
surface color, enter that filename and press RETURN,
then press RETURN again at the second prompt Choose
GREEN file or for single file.
New Elevation File: Prompts user in GRASS window for a
new raster file to use for elevation. After loading
the file, the new surface is immediately drawn using
the current drawing mode, without erasing the screen
first. This is not a bug. Due to memory usage, SG3d
does not allow more than one surface to be in memory at
one time, but drawing the new surface in the same
visual space as the previous surface enables a careful
user to view multiple surfaces simultaneously. If you
only wish to view the new elevation file, you may can-
cel the drawing of the new surface by clicking on the
Cancel button, just below the Draw button. Any subse-
quent drawing will only show the new surface. If the
range of data in the new elevation file is different
than the range of the previous elevation file, it may
be necessary to select Reset from the Movement panel
for the surface to be rescaled for easier viewing.
When displaying multiple surfaces, if you want to use a
different raster file for color you must load the new
color file first, then the new elevation file. There is
no limit to the number of surfaces that can be
displayed in succession, but once Draw is selected and
the surfaces are erased, only the latest surface is
available.
animate display type: Toggling this button will cause
the current display type (Polygon, Wire/Poly, or Wire)
to be drawn instead of the fast display mode wire grid
when the user is adjusting Movement panel controls.
These drawing modes take considerably more time and the
display is double buffered, so drawing progress is not
shown. When animate display type is toggled on, the
program checks currently specified resolution and
issues a warning if drawing time will be very slow.
This button was hidden on the Options pop-up panel to
prevent its accidental use because it can be time con-
suming and frustrating if you have the resolution set
too fine and try to animate a fully rendered surface of
say a quarter of a million polygons (500 x 500). How-
ever, including this option allows those with very fast
graphics systems to take advantage of their hardware.
One further note: double buffering causes available
color bitplanes to be halved, so the image quality
while animating will be degraded. When you release
your mouse button after adjusting viewing position, the
image is redrawn in single buffer mode utilizing all
color bitplanes. This effect is especially noticeable
on systems with only eight bitplanes.
background color: select color for background. The
program chooses a contrasting color to use for the grid
in fast display mode.
map lat-long to globe: This button only appears when
the current GRASS location uses a latitude-longitude
projection rather than UTM or x-y. Toggling this but-
ton ON causes the lat-long data to be mapped to a
sphere. Drawing in this mode is noticeably slower
because each point has to be transformed to spherical
coordinates. This is a relatively new feature and
still has some bugs. The following functions of SG3d
are not available when the surface is mapped to a
sphere: look here, What's here?, Fringe, and none of
the functions on the Scale panel. In addition, viewer
positioning functions are not as intuitive in this
mode. By default, the viewer looks toward the center
of the sphere, but you may use look cancel followed by
View Incline and View Dir. to let you look in a dif-
ferent direction. The look center button always resets
the center of view to the center of the sphere when
using this mode.
Scale... & Label... These two buttons toggle addi-
tional pop up panels.
place scale object: Prompts user in the GRASS window to
use the left mouse button to mark center of scale.
Click with the left button in the graphics window at
the point where you want to place the object. If the
point is on the surface, the object will be placed so
it is resting on top of the surface. If the point is
off the surface, the object will be placed where the
position clicked intersects with the plane of constant
z value at the minimum z value of the surface (or
minimum non-zero, if No Zeros is toggled ON). This
method of determining the elevation of the scale object
may be overriden (see elev below).
solid, wire, north arrow, cube, plane: Combinations of
these toggle buttons determine the appearance of the
scale object.
draw ruler: Draws ruler marks along the selected sides
of the data at intervals determined by the value of
size. For a graded ruler: draw ruler once, reduce size
by an even multiple, draw ruler again, reduce size,
etc. Note: The width of the ruler lines may be changed
by adjusting Line Width on the Vectors panel.
NW, SW, NE, SE: Determines which sides of the data the
ruler will be drawn on and the direction from which the
scale marks begin. For example, if SW is toggled on,
ruler marks will appear on the south and west sides of
the surface, proceeding from the southwest corner. If
both SW and NE are toggled on, ruler marks will appear
on all four sides of the surface, proceeding from the
southwest corner and northeast corner.
elev, auto: When auto is toggled ON, the type-in box
displays the elevation, in units of the raster file
used for elevation, at which the scale object was
placed. You may type in a different elevation by
clicking in the type-in box, entering the elevation at
which you want the object displayed, then pressing
return. This automatically toggles auto off. Subse-
quent placement of scale objects will cause the object
to be drawn resting on a plane of constant z value at
the new elevation (also see place scale object).
size: This type-in box determines the size of scale
objects and the distance between tick marks on the
rulers, in units of the data (meters for UTM, degrees
for lat-long). By default, SG3d chooses some power of
ten times 25, 50, or 100 which results in a desirable
scale size.
color: Select color for scale object and ruler lines.
place label, undo: The place label button prompts user
in GRASS window to use the left mouse button to mark
first letter of label. Click with the left button in
the graphics window at the point where you want to
place the label. The bottom left corner of the first
letter of the label will begin where you click. If you
are not satisfied with the positioning or size, press
the undo button and the label will be removed.
text: Enter the text you want to place in the graphics
window in this type-in box.
size: Enter the point size of the text you want to
display. SG3d chooses the closest point size equal to
or less than the size requested that is available in
the font requested. One inch is equal to 72 pts.
color: Select color for label.
Times-Roman, Helvetica, Italic, Bold: Combinations of
these toggle buttons determine which of eight possible
font styles is used.
new vect path: Prompts user in GRASS window for the
name of a vector file from which to generate a path.
When the path is created, the number of points used
from the vector file is displayed in the total frames
box (see total frames).
Follow Terrain, height, smoothing: With Follow Terrain
toggled on, the path uses the value in the height
type-in box to determine the z value of the viewing
position (z value = height + elevation of terrain under
path position). If smoothing is toggled on, the height
value is used to determine the z value of the viewing
position ONLY at the points along the path that were
obtained from the vector file; any interpolated path
points have their z values interpolated as well.
Constant Elevation, elevation: With Constant Elevation
toggled on, the path uses the value in the elevation
type-in box as the z value of the viewing position. By
default, the maximum value in the raster file used for
elevation is placed in the type-in box.
Look Forward, Tilt: With Look Forward toggled on, the
viewing direction along the path is automatically set
to look toward a forward point along the path. The
value in the type-in box below Look Forward is used to
determine how many points ahead to look. A negative
value in the type-in box may be used to look backward.
Use the Tilt dial to look more toward the ground or the
sky when looking forward. Moving the dial in a coun-
terclockwise direction will set the looking position
more toward the ground. This effect is not displayed
unless the path is running. If Look Forward is toggled
off, the direction of view is determined by the set-
tings in the Movement panel.
step, run, Frames: The Frames slider may be thought of
as a time line representing the path. When a path has
been loaded, clicking on run will move the viewer down
the path, redrawing the wire frame surface at each path
step. The user may cancel a running animation at any
time by clicking on the Cancel button on the Control
panel. The Frames slider shows the progression of the
animation. Use the step arrows to step forward or
backward one frame at a time, or move the Frames slider
to the desired point in the animation. The number to
the right of the step arrows is the frame number being
displayed.
total frames: The value in this type-in box is the
total number of frames in the animation. When a vector
file is first loaded, the number of points in the file
(up to 1000) will be the number of frames. Typically,
to produce smooth animations, the user should use a
vector file with 10 - 50 points, then change total
frames to 100 or more, depending on the length of the
animation desired. Requesting an excessive number of
frames (i.e., 500,000) may cause memory problems.
show path: Toggling this button ON will cause the path
to be drawn each time a new frame is drawn. The color
and thickness of the path line may be changed using
adjustments on the Vectors pop up panel. Showing the
path can be useful while previewing and adjusting the
path.
show vect: Toggling this button ON will cause vectors
to be drawn each time a new frame is drawn, if a vector
file has been loaded. (see also Vect...).
spline, linear, tension: These controls affect the
interpolation method used when the value of total
frames is different than the number of points in the
original vector file used as the path. The points from
the vector file are always used as control points from
which the positioning information for the total number
of requested frames is derived. If spline interpola-
tion is selected, the user may adjust spline tension
(how much slack there is in the path) using the tension
slider. Toggling show path ON prior to adjusting ten-
sion allows the user to judge how much tension to use
for a smoother path.
send path to keyframes: This button reads the
currently defined vector path and copies it to the Key-
frame panel. Keyframes already defined in the Keyframe
panel are overwritten. (See Keyframe....)
run and save images: Prompts user in the GRASS window
for a prefix to be used to name a series of rgb format
image files, one for each frame. The animation is then
run from the beginning, with each frame being fully
rendered using the current display type and resolution
(see Control panel). If show vect is toggled ON, the
vector file is also drawn, then the finished frame is
written to an rgb file. If files already exist with the
same name, they are overwritten. You may cancel run
and save images at any time by selecting Cancel from
the Control panel (it may take several clicks on Can-
cel). This entire process may take several hours of
computer time for a 100 frame animation of a complex
surface, but requires no further intervention from the
user. The finished rendered animation files can be
played back using SGI's movie program if it is a very
short animation or you can capture the images on video.
(Also see Img Dump on the Control panel and Hints -
Animation.)
step, run, Key Frames: The Key Frames slider may be
thought of as a time line representing the animation.
When three or more keyframes have been defined (two or
more if using linear interpolation), clicking on run
will move the viewer along the path beginning from the
current position of the Key Frame slider bar, redrawing
the wire frame surface at each path step, and advancing
the slider bar. The user may cancel a running anima-
tion at any time by clicking on the Cancel button on
the Control panel. The number to the right of the step
arrows is the frame number being displayed. The Key
Frames slider has small black tick marks representing
each frame of the animation and larger blue arrows
above the slider that represent keyframes (none of the
latter exist until keyframes are created - see add a
keyframe). The keyframe arrows can be grabbed with the
mouse and moved along the slider. To delete a keyframe,
grab the arrow representing the keyframe to be deleted
and slide it completely off the slider to the right-
hand side, then release the mouse button. Use the step
arrows to step forward or backward one frame at a time,
or move the Key Frames slider bar to the desired point
in the animation. If the user clicks in the slider at a
point to the left of the first keyframe or to the right
of the last keyframe, or if there have not been enough
keyframes defined to specify a path, current viewer
positioning settings are not changed.
total frames: This is a type-in box containing the
number of total frames requested. To change, click in
the box, edit the value using the keyboard, and press
return. The path will be updated and the Key Frames
slider will be redrawn showing the number of frames
requested as black tick marks along the slider.
add a keyframe: Adds a keyframe at the point in the
animation where the keyframe slider bar is positioned.
If there is already a keyframe at that point, the user
will be asked in the GRASS window whether the old key-
frame should be replaced.
clear all keyframes: Deletes all keyframes currently
defined.
show path: When toggled ON, this button causes the
currently defined path to be drawn as a line with (X)s
marking keyframes. It also changes the display to show
othographic views of the path from the top, south and
east in three seperate viewports along the bottom of
the graphics window. The viewer's current position is
shown in these small viewports by a red dot. The color
and width of the line used to show the path can be
changed using adjustments in the Vect... panel.
show vect: Toggling this button ON will cause vectors
to be drawn each time a new frame is drawn, if a vector
file has been loaded. (see also Vect...).
linear, spline, tension: These controls affect the
interpolation method used. The keyframes are always
used as control points from which the positioning
information for the total number of requested frames is
derived. If spline interpolation is ON, the user may
adjust spline tension (how much slack there is in the
path) using the tension slider. Toggling show path ON
prior to adjusting tension allows the user to judge how
much tension to use for a smoother path.
run and save images: See run and save images on the
VectPath... panel. This button does the same thing,
but for the keyframe-defined path.
script file: This is a type-in box that contains a
default filename, panel.script. To replace with your
own filename, click in the box, edit the name, and
press return.
begin read, stop read: Use to read the script file
indicated. The program will perform the actions saved
in the script with nearly the same pacing as when they
were written to the file, as if somebody was using the
mouse (but you don't see the mouse cursor move). The
READING button will be lit while the actions in the
file are being displayed. You may still adjust set-
tings with the mouse while a script is being read, but
some actions will produce unexpected results. (e.g.,
if you pop up a panel then the script tries to pop up
the same panel, it actually hides it instead)
begin write, begin append, stop write/append: Use
begin write to begin a new script file. After clicking
on begin write, any mouse actions in the panels will be
recorded in the script file until stop write/append is
selected. Begin append will cause mouse actions in the
panels to be appended to an existing specified script
file until stop write/append is selected. The WRITING
button will be lit while the actions that occur in the
panels are being recorded. When writing script files
for demos, avoid actions that require user input (new
cell file, new vect, what's here, look here, etc.), as
only those actions that occur in the PANELS, not the
graphics window or GRASS window, are recorded in the
script. Also it is a good idea to begin each script
writing session by pressing Reset, so that what you see
as you write the script will be the same as when it is
read (no initial conditions are assumed or reset when
reading a script).
When rendering frames for animation, it is usually better to position lights so that they do not move with the viewer position (toggle Follow Viewpoint OFF).
1) use look here to mark a fixed center of view in the
middle of the surface.
2) move the puck in the XY position box to the
southeast corner, adjust Height and Perspective until
the data surface fills your graphics window.
3) pop up the Keyframe panel.
4) Click on add a keyframe.
5) position the Key Frame slider bar to the next place
to add a keyframe by clicking a half inch or so farther
along the slider.
6) move the XY position puck to the northeast corner.
7) Click on add a keyframe and repeat step 5.
8) move the XY position puck to the northwest corner.
9) Click on add a keyframe.
You should now have enough keyframes marked to define a
path, so try clicking on show path and then run (NOT run and
save images). If nothing happens, clear all keyframes and
go back to step 1. Now let's complete the circular path:
10) repeat step 5.
11) move the XY position puck to the southwest corner.
12) Click on add a keyframe.
13) Now to close the loop, move the Key Frames slider
down to frame 1, so that the first frame is displayed,
release the mouse button, then click once on the slider
in the empty part, past the last keyframe, and click on
add a keyframe. This essentially copies the first key-
frame to the fifth & last keyframe.
Now click on run. When the animation stops, adjust the
spline tension or use linear interpolation, change the
number of total frames, and run again. If you wanted to
render the animated frames to .rgb files, you would now tog-
gle show path OFF and click on run and save images, but why
not wait until you get a little more creative - image files
use a lot of disk space.
Changing keyframes: With the above keyframes loaded, try changing a keyframe as follows:
1) Position the Key Frames slider so that it aligns
with the arrow marking the second keyframe.
2) Using the Height adjustment in the Movement panel,
raise your viewing position. Notice that if you have
show path toggled ON, you can see how your viewing
position changes relative to the defined path by watch-
ing the south or east path views. The small red dot
represents your current position.
3) Click on add a keyframe. You will be asked in the
GRASS window if you want to replace the old keyframe:
type 'y' and 'return'.
4) Run the animation again to see how the path has
changed.
5) Delete the middle keyframe: grab its arrow marker
(using your left mouse button), drag the marker com-
pletely off the slider to the right, and release the
mouse button. Run again to see how path has changed.
6) Set total frames to about 50, then one at a time,
grab the center keyframe markers and slide them toward
the right so that they are spaced something like:
1........2..3..4 Run again, notice how movement speed
was affected.
7) Reverse the direction of travel by swapping the
positions of the two interior keyframe markers.
Parameters stored in the keyframe path include viewing posi-
tion, looking direction, twist, and perspective. The look-
ing direction will be overridden though, when the path is
running, if look here is active. To see this effect with
the above path loaded, select look here and click on a
corner of the data, setting a new fixed center of view. Now
run the path again. Click on look cancel and run again.
Adjusting the Twist parameter when creating a path will give
your animation more of a fly-by effect by simulating banking
turns.
4.2.2 Panel Scripts
While vector paths and keyframe animation are good for show-
ing movement around your data surface, often animation can
also be used to show change over time, or perhaps change in
surface properties due to a changing environmental parame-
ter. In such cases, you will be creating multiple grass
data files to represent the change, using your own program
or other GRASS data analysis tools. SG3d can still be used
to produce a 3d surface animation.
Suppose you have generated 30 different raster files that
show diminishing rainforest cover over a period of years.
For this example, we will assume you will always be draping
them over the same elevation file. After setting a good
viewing position and adjusting lights, you could make an
animation by this process: select New Cell (color) File from
the Options panel, load the file, Draw the image, select Img
Dump, name the image file, and repeat (30 times).
An easier way to accomplish the same thing would be to pro-
duce a panel script to do all the work for you. But if you
review the discussion of the Scripting panel, you'll notice
that we said to avoid selecting options that require user
input (e.g. New Cell File) since input in the GRASS window
is not recorded in panel scripts. The way around this is to
know what questions the panel script will be asking and pro-
vide all the answers in a text file that will be redirected
as input to SG3d at startup. This is kind of messy, but it
works great if you're careful. So for the above example,
the text file would look like this:
rast01.file
img01.rgb
rast02.file
img02.rgb ...
rast30.file
img30.rgb
For this example, you would create the panel script as fol-
lows: Start SG3d, using the -w option to allow script writ-
ing. Pop open the scripting panel and the Options panel.
Enter a name for your script in the type-in box on the
scripting panel. Now click on begin write, New Cell (color)
File, [ in GRASS window], [ again in GRASS
window], Draw (wait for surface to draw), Img Dump, [
in GRASS window], begin read, stop write. This creates a
panel script that is an infinite loop, but the program will
terminate when EOF is received in standard input from your
text file.
Finally, you would create the animation itself by starting
the program with: SG3d elev.file co=rast01.file < your.txt.
Adjust lighting and positioning (if you have a 3dview file
you want to use instead, load it at startup with 3dview=file
because if you try to load it once a text file has been
redirected to the program, SG3d will use the first line in
the text file as input in the GRASS window). Then pop-up
the scripting and Options panels, enter the name of your
panel script, click on begin read and take a lunch break.
You may want to save panel scripts created as above, since
they could be used with different text input files to create
completely different animations. On the other hand, once
you've got the hang of it the panel scripts are quite easy
to make. Using this method, it is also possible to "morph"
a surface by loading changing elevation files instead of
color files. Once you get used to this method, you can try
adding multiple vector or site files to your surface,
animating multiple surfaces, or combining movement with a
changing surface.
4.2.3. Vector Paths
The discussion of vector paths in section 3.9 is fairly
detailed, but here are a few more suggestions.
Use the GRASS program v.digit to digitize a path you would
like to follow, using a minimum number of points. Or, use
v.digit to create a subset of a roads or streams vector
file, ending up with a single road or stream in a new vector
file to use for a path.
Using Look Forward with the number of frames to look ahead
set to 5 or 6 for a 50 frame animation gives good results;
looking ahead only a frame or two will usually cause a lot
of jerkiness.
Adjust the Tilt dial while previewing the running animation.
When adjusting spline tension with show path toggled ON, It
may be necessary to temporarily adjust your viewing position
to a place well above your surface, looking down, in order
to get a good view of your path.
4.2.4. Image File Management
Because .rgb image files can end up taking a lot of disk
space, users should be mindful of disk storage capacity when
attempting to create an animation. Keeping animation files
and image dumps in directories dedicated for such files
helps in management. A single rgb image usually takes
between 200K to 3M bytes of storage, depending upon size and
complexity. To save disk space, use the SG3D_WIDTH and
SG3D_HEIGHT environment variables to limit the graphics win-
dow to known dimensions. If you use the SGI movie program
to replay animations, each frame of the animation must have
been saved to files of identical dimensions; so especially
if you are creating an animation piecewise, at different
sessions, it becomes important to use the environment vari-
ables to maintain a consistent size for the graphics window.
With the movie program and with other screen dump animating
programs, there is a zoom option to enlarge the animation
images at time of playback. So if you want the animation to
fill your screen, you could set the width and height of the
graphics window to half or a third their playback sizes when
writing the image files, then use the zoom option (this will
cause a loss of resolution though, since the zoom just
replicates pixels). If you are making an animation to be
recorded onto video tape, it may be necessary to set the
width and height to specific dimensions.
New SGI programs released with IRIX 4.0.5, moviemaker and
movieplayer, are also very useful for animations. Moviemaker
allows you to create movie files from any number of rgb
files at various frame rates. With movieplayer, much longer
animations may be replayed than with movie since the frames
are read directly from disk at run time rather than having
to be loaded into memory.
5. Credits
SG3d written by Bill Brown and David Gerdes, U.S. Army Corps
of Engineers Research Laboratories, Champaign, Illinois.
This report written by Bill Brown, Fall 1992. Your comments
and suggestions are appreciated.
Bill Brown
USACERL - ECA
PO Box 9005
Champaign, IL 61826-9005
e-mail: brown@zorro.cecer.army.mil
phone: (217) 352-6511 ext 676