Go to the previous, next section.

# Interaction

This chapter describes how you interact with Geomview through the mouse and keyboard.

## Starting Geomview

The usual way to start Geomview is to type `geomview `RET`` in a shell window (RET means hit the "Enter" key). It may take Geomview a few seconds to start up; one or more windows will appear and you can begin interacting with Geomview immediately.

It is also possible to specify actions for Geomview to perform at startup time by giving arguments in the shell command line. See section Command Line Options.

## Command Line Options

Here are the command line options that Geomview allows:

``-b r g b'`
  Set the window background color to the given r g b values.

``-c file'`
  Interpret the gcl commands in file, which may be the special symbol ``-'` for standard input. For a description of gcl, See section gcl: the Geomview Command Language.

``-c command'`
  Commands may also be supplied literally, as in

      -c "(ui-panel main off)"

  Since command includes parentheses, which have special meaning to the shell, command must be quoted. Multiple -c options are allowed.

``-wins nwins'`
  Causes Geomview to initially display nwins camera windows.

``-wpos width,height[@xmin,ymin]'`
  Specifies the initial location and size of the first camera window. The values for width, height, xmin, and ymin are in screen (pixel) coordinates.

``-M objectname'`
  Display (possibly dynamically changing) geometry sent from the programs `geomstuff` or `togeomview`. This actually listens to the named pipe ``/tmp/geomview/objectname'`; you can achieve the same effect with the shell commands:

      mkdir /tmp/geomview
      mknod /tmp/geomview/objectname p

  (assuming the directory and named pipe don't already exist), then executing the gcl command: `(geometry objectname < /tmp/geomview/objectname)`

``-Mc pipename'`
  Like ``-M'` above, but expects gcl commands, rather than OOGL geometry data, on the connection.

``-nopanels'`
  Start up displaying no panels, only graphics windows. Panels may be invoked later as usual with the `Px` keyboard shortcuts or with the `ui-panel` command.

``-e module'`
  Start an external module; module is the name associated with the module, appearing in the main panel's Applications browser, as defined by the `emodule-define` command.

``-start module args ...'`
  Like -e but allows you to pass arguments to the external module. "--" signals the end of the argument list; the "--" may be omitted if it would be the last argument on the Geomview command line.

``-run shell-command args ...'`
  Like -start but takes the pathname of executable of the external module instead of the module's name. The pathnames of all known module directories are appended to the UNIX search path when invoking shell-command.

## Basic Interaction: The Main Panel

Normally when you invoke Geomview, three windows appear: the Main panel, the Tools panel, and one camera window. Geomview has many other windows but most things can be done with these three and so by default the others do not appear. This section of the manual introduces some basic concepts that are used throughout the rest of the manual and describes the Main panel.

The Main Panel

Geomview can display an arbitrary number of objects simultaneously. The Targets browser in the Main panel displays a list of all the objects that Geomview currently knows about. This browser has a line for each object that you have loaded, plus some lines for other objects. One of the other objects is called `World` and corresponds to the all the currently loaded objects, treated as if they were one object. Most of the operations that you can do to one object, such as applying a motion or changing a color, can also be done to the "World" object.

The Targets browser also has an entry for each camera. By default there is only one camera; it is possible to add more of them via the New Camera entry of the Main panel's File menu. Geomview treats cameras in much the same way as it does geometric objects. For example, you can move cameras around and add them and delete them just as with geometric objects. Cameras do not usually show up in the display as an object that you see. Each camera has a separate camera window which displays the view as seen by that camera. (It is possible for each camera to display a geometric representation of other cameras. See section Cameras.)

Because Geomview treats cameras and geometric objects very similarly, the term object in this documentation is used to refer to either one. When we need to distinguish between the two kinds of objects, we use the term geom to denote a geometric object and the word camera to denote a camera.

The object which is selected (highlighted) in the Targets browser is called the target object. This is the object that receives any actions that you do with the mouse or keyboard. You can change the target object by selecting a different line in the Targets browser. Another way to change the target object is to put the mouse cursor directly over a geom in a camera window and rapidly double-click the right mouse button. This process is called picking; the picked object becomes the new target.

Geomview objects are all known by two names, both of which are shown in the Targets browser. The first name given there, which appears in square brackets ([ ]), is a short name assigned by Geomview when you load the object. It consists of the letter `g' for geoms and `c' for cameras, followed by a number. The second name is a longer more descriptive name; by default this is the name of the file that the object was loaded from. The two names are equivalent as far as Geomview is concerned; at any point where you need to specify a name you can give either one.

To manipulate an object, make sure you that the object you want to move is the target object, and put the mouse cursor in a camera window. Motions are applied by holding down either the left or middle mouse button and moving the mouse. There are several different motion "modes", each for applying a different kind of motion. The MOTION MODE browser in the Main panel indicates the current motion mode. The default is "Rotate". You can change the current motion mode by selecting a new one in the MOTION MODE browser, or by using the Tools panel. For more information about motion modes, See section Using the Mouse to Manipulate Objects.

The Modules browser lists Geomview external modules. An external module is a separate program that interacts with Geomview to extend its functionality. For information on external modules, See section External Modules.

The menu bar at the top of the main panel offers menus for common operations.

To create new windows, load new objects, save objects or other information, or quit from geomview, see the File menu.

To copy or delete objects, see the Edit menu.

You can invoke any panel from the Inspect menu.

The Space menu lets you choose whether geomview operates in Euclidean, Hyperbolic, or Spherical mode. Euclidean mode is selected by default. For details about using Hyperbolic and Spherical spaces, See section Non-Euclidean Geometry.

Most actions that you can do through Geomview's panels have equivalent keyboard shortcuts so that you can do the same action by typing a sequence of keys on the keyboard. This is useful for advanced users who are familiar with Geomview's capabilities and want to work quickly without having to have lots of panels cluttering up the screen. Keyboard shortcuts are usually indicated in square brackets ([ ]) near the corresponding item in a panel. For example, the keyboard shortcut for Rotate mode is 'r'; this is indicated by "[r]" appearing before the word "Rotate" in the MOTION MODE browser. To use this keyboard shortcut, just hit the `r` key while the mouse cursor is in any Geomview window. Do not hit the ``RET`` key afterwards.

Some keyboard shortcuts consist of more than one key. In these cases just type the keys one after the other, with no ``RET`` afterwards. Keyboard shortcuts are case sensitive.

Many keyboard shortcuts can be preceded by a numeric parameter. For example, typing `ae` toggles the state of drawing edges, while `1ae` always enables edge drawing.

The keyboard field in the upper left corner of the Main panel echos the current state of keyboard shortcuts.

For a list of all keyboard shortcuts, press the `?` key.

## Loading Objects Into Geomview

There are several ways to load an object into Geomview.

the Files panel
  If you click the Load button in Geomview's Main panel, the Files panel will appear.

  The Files Panel

  This panel lets you select a file from a variety of directories. The top of the panel is a standard Motif file browser. Below this is a list of directories on geomview's standard search path; click on one of these to browse files in that directory.

  To select a file, double-click on its name in the browser at upper right, or click on its name and press the `Return` key, or type the file's name into the text box at the bottom of the browser and press `Return`.

  If the selected file contains OOGL geometric data, it will be added to the geomview Targets browser. If it contains GCL commands instead, the file will be interpreted. See section gcl: the Geomview Command Language.

  When the Files panel first appears, the directory selected in the directory browser is the current directory -- the one from which you invoked Geomview. The file browser shows all the files in this directory, including ones that are not Geomview files. If you try to load a file that doesn't contain either an OOGL object or Geomview commands, Geomview will print out an error message.

  The directory browser also lists a second and third directory in addition to the current directory. The second one, which ends in ``data/geom'`, is the Geomview example data directory. This contains a wide variety of sample objects. It also contains several subdirectories. In particular, the ``hyperbolic'` and ``spherical'` subdirectories have sample hyperbolic and spherical objects, respectively. Directory entries in the browser look just like file entries; to view a subdirectory, click on it.

  The third directory shown in the directory browser, which ends in ``geom'`, contains several subdirectories with other Geomview files in them. These are used less frequently than the ones in the ``data/geom'` directory.

  You can change the list of directories shown the Files panel's directory browser by using the `set-load-path` command; see section gcl: the Geomview Command Language.

the `<` keyboard shortcut:
  If you type `<` in any Geomview window, the Load panel will appear. This is a small version of the Files panel; it contains a text field in which you can enter the name of a file to load (or a GCL command surrounded by parentheses). After typing the name of the file to load, type ``RET``; Geomview will load the file as if you had loaded it with the Add button in the Files panel. If, after bringing up the small load panel with `<`, you decide you want to use the larger Files panel after all, press the File Browser button.

  The Load Panel

geometry loading commands:
  The `load`, `geometry`, `new-geometry`, and `read` gcl commands allow you to load an object into Geomview; See section gcl: the Geomview Command Language.

## Using the Mouse to Manipulate Objects

Geomview lets you manipulate objects with the mouse. There are six different mouse motion modes: Rotate, Translate, Cam Fly, Cam Zoom, Geom Scale, and Cam Orbit. The tools panel has a button for each of these modes; to switch modes, click on the corresponding button. You can also select these through the Motion Mode browser on the Main panel.

This section describes basic mouse interaction. For details, see section The Commands Panel.

The Tools Panel

Each of the motion modes uses a common paradigm for how the motion is applied. In particular, each depends on the current target object and the current center object. These are explained in the following paragraphs.

The current target object is shown in the Target field in the Tools panel. This is the same as the selected object in the Targets browser in the Main panel, and you can change it by either selecting a new object in the browser, by typing a new entry in the field, or by picking an object in a camera window by double-clicking the right mouse button with the cursor over the object.

The current center object is shown in the Center field in the Tools panel. Its default value is the special word "target", which means that the center object is whatever the target object is. You can change the center to any object by typing it in the Center field. The origin of the center object is held fixed in Rotate and Orbit modes. Normally the center object is one of the existing geoms listed in the Targets browser, and the actual center of rotations is the origin of that object's coordinate system. It is possible, however, to select an arbitrary point of interest on an object as the center. For details, see section Selecting a Point of Interest.

You apply a mouse motion by holding down either the left or middle mouse button with the cursor in a camera window and moving the mouse. Most of the modes have inertia, which means that if you let go of the button while moving the mouse, the motion will continue. It may be helpful to imagine the mouse cursor as being a gripper; when you hold a mouse button down, it grips the target object and you can move it. When you let go of the mouse button, the gripper releases the object. Letting go of the mouse button while moving the mouse is like throwing the object -- the object continues moving independent of the mouse. Inertia can be turned off; see the Main panel's Motion menu, described below.

Generally, the left mouse button controls motion in the screen plane, while the middle mouse controls motion along or around the forward direction.

Pressing the shift key while dragging with left or middle mouse buttons in most motion modes gives slow-speed motions, useful for fine adjustment.

You can pick any point on an object (not just its origin) as the center of motion by holding down the shift key while clicking the right mouse button; this chooses a point of interest.

Rotate
  In Rotate mode, hold the left mouse button down to rotate the target object about the center object. Rotation proceeds in the direction that you move the mouse. Specifically, the axis of rotation passes through the origin of the center object, is parallel to the camera view plane, and is perpendicular to the direction of motion of the mouse. When the center is "target", this means that the target object rotates about its own origin.

  The middle mouse button in Rotate mode rotates the target object about an axis perpendicular to the view plane.

Translate
  In Translate mode, hold the left mouse button down to translate the target object in the direction of mouse motion. The middle mouse button translates the target along an axis perpendicular to the view plane.

  In Euclidean space, the center object is essentially irrelevant for translations. In hyperbolic and spherical spaces, where translations have a unique axis, this axis is chosen to go through the origin of the center object.

Cam Fly
  Cam Fly is a crude flight simulator that lets you fly around the scene. It works by moving the camera. Move the mouse while holding the left mouse button down to point the camera in a different direction. To move forward or backward, hold down the middle button and move the mouse vertically. Both of these motions have inertia; typically the easiest way to fly around a scene is to give the camera a slight forward push by letting go of the middle button while moving the mouse upward, and then using the left button to steer.

  Cam Fly affects the camera window that the mouse is in; it ignores the target object and the center object.

Cam Orbit
  Cam Orbit mode lets you rotate the current camera around the current center. The left mouse button does this rotation. The middle mouse button in Cam Orbit mode acts as in Cam Fly mode: it moves the camera forward or backward.

  In general Cam Orbit does not move the target object, although if the current camera is selected as the target and the center is also the target, it will pivot that camera about itself just as in Cam Fly mode.

Cam Zoom
  Cam Zoom mode lets you change the current camera's field of view with the mouse; hold the left mouse button down and move the mouse to change it. The numeric value of the field of view is shown in the FOV field in the Camera panel.

Geom Scale
  Geom Scale mode lets you enlarge or shrink a geom. It operates on the target object if that object is a geom. If the target is a camera, Geom Scale operates on the geom that was most recently the target object. Moving the mouse while holding down the left mouse button scales the object either up or down, depending on the direction of mouse motion. The center of the applied scaling transformation is the center object.

  Scaling is meaningful only in Euclidean space; attempts to scale are ignored in other spaces.

  Geom Scale mode does not have inertia.

The Stop, Look At, Center, and Reset buttons on the Tools panel perform actions related to motions but do not change the current motion mode.

Stop
  The Stop button causes all motions to stop. It affects all moving objects, not just the target object. Its keyboard shortcut is `H`.

  The keyboard command `h`, which does not correspond to a panel button, stops the current motion for the target object only.

Look At
  The Look At button causes the current camera to be moved to a position such that it is looking at the target object, and such that the target object more or less fills the window.

  The Look At command is unreliable in non-Euclidean spaces.

Center
  The Center button undoes the target object's transformation, moving it back to its home position, which is where it was when you originally loaded it into Geomview.

Reset
  The Reset button stops all motion and causes all objects to move back to their home positions.

The Tools panel also sports a Main button, to invoke the main panel in case it was dismissed or buried, and a Done button to close the Tools panel.

The Main panel's Motion Style menu has special controls affecting how mouse motions are interpreted.

[ui] Inertia
  Normally, moving objects have inertia: if the mouse is still moving when the button is released, the selected object continues to move. When Inertia is off, objects cease to move as soon as you release the mouse.

[uc] Constrain Motion
  It's sometimes handy to move an object in a direction aligned with a coordinate axis: exactly horizontally or vertically. Selecting Constrain Motion changes the interpretation of mouse motions to allow this; approximately-horizontal or approximately-vertical mouse dragging becomes exactly horizontal or vertical motion. Note that the motion is still along the X or Y axes of the camera in which you move the mouse, not necessarily the object's own coordinate system.

[uo] Own Coordinates
  It's sometimes handy to move objects with respect to the coordinate system where they were defined, rather than with respect to some camera's view. While Own Coordinates is selected, all motions are interpreted that way: dragging the mouse rightward in translate mode moves the object in its own +X direction, and so on. May be especially useful in conjunction with the Constrain Motion button.

### Selecting a Point of Interest

It is sometimes useful to specify a particular point on some object in a geomview window as the center point for mouse motions. You can do this by shift-clicking the right mouse button (i.e. click it once while holding down the shift key on the keyboard) with the cursor over the desired point. This point then becomes the point of interest. The point of interest must be on an existing object.

Selecting a point of interest simplifies examining a small portion of a larger object. Shift-right-click on an interesting point, and select Orbit mode. Use the middle mouse button to approach, and the left mouse to orbit the point, examining the region from different directions.

When you have selected a point of interest, the current center object changes to an object named "CENTER", which is an invisible object located at the point of interest. In addition, mouse motions for the window in which you made the selection are adjusted so that the point of interest follows the mouse.

You can change the point of interest at any time by selecting a new one by shift-clicking the right mouse button again. You can cancel the point of interest altogether by shift-clicking the right mouse button with the cursor on the background (i.e. not on any object). This changes the center object back to its default value, "target".

The object named "CENTER", which serves as the center object for the point of interest, is a special kind of geom called an "alien". It does not appear in the Targets browser. By default it has no geometry associated with it and hence is invisible. You can, however, explicitly give it some geometry using a GCL command, causing it to appear. Use the `geometry` command for this: `(geometry CENTER geometry)`, where geometry is any valid geometry. For example, `(geometry CENTER { < xyz.vect })` causes the file ``xyz.vect'`, which is one of the standard example files distributed with geomview, to be used at the geometry for CENTER.

What happens internally when you select a point of interest is that the center is set to the object called CENTER, and that object is positioned at the point of interest. In addition, in order for mouse motions to track the point of interest, the current camera's focal length is set to be the distance from the camera to the point of interest. You can accomplish this via GCL with the following commands:

    (if (real-id CENTER) nil (new-alien CENTER {}))
    (ui-center CENTER)
    (transform-set CENTER universe universe translate x y z)
    (merge camera cam-id { focus d })

where `(x,y,z)` are the (universe) coordinates of the point of interest, and d is the distance from that point to the current camera, cam-id. The first command above creates the "alien" CENTER if it does not yet exist.

## Changing the Way Things Look

Geomview uses a hierarchy of appearances to control the way things look. An appearance is a specification of information about how something should be drawn. This can include many things such things as color, lighting, material properties, and more. Appearances work in a hierarchal manner: if a certain appearance property, for example face color, is not specified in a particular object's appearance, that object is drawn using that property from the parent appearance. If both the parent and the child appearance specify a property, the child's setting takes precedence unless the parent appearance is set to override.

Every geom in Geomview has an appearance associated with it. There is also an appearance associated with the "World" geom, which serves as the parent of each individual geom's appearance. Finally, there is a global "base" appearance, which is the parent of the World appearance.

The base appearance specifies reasonable values for all appearance information, and by default none of the other appearances specify anything, which means they inherit their values from the base appearance. This means that by default all objects are drawn using the base appearance.

If you change a certain appearance property for a geom, that property is used in drawing that geom. The parent appearance is used for any properties that you do not explicitly set.

Geomview has three panels which let you modify appearances.

### The Appearance Panel

The Appearance panel lets you change most common appearance properties of the target object.

The Appearance Panel

If the target is an individual geom, then changes you make in the appearance panel apply to that geom's appearance. If the target is the World, then appearance panel changes apply to the World appearance and to all individual geom appearances. (Users have found that this is more desirable than having the changes only apply to the World appearance.) If the target is a camera, then appearance panel changes apply to the geom that was most recently the target.

The five buttons near the upper right corner under the word Draw control what parts of the target geom are drawn.

Faces
  This button specifies whether faces are drawn.

Edges
  This button specifies whether edges are drawn.

BBox
  This button specifies whether the bounding box is drawn.

Vects
  This button specifies whether VECT objects are drawn. VECTs are a type of OOGL object that represent points and line segments in 3-space; they are distinct from edges of other kinds of objects, and it is sometimes desirable to have separate control over whether they are drawn.

Normals
  This button specifies whether surface normal vectors are drawn.

The four buttons under Color labeled Faces, Edges, Normals, and BBox let you specify the color of the corresponding aspect of the target geom. Clicking on one of them brings up a color chooser panel.

Color Chooser Panel

This panel offers two sets of sliders: H(ue) S(aturation) V(alue), or R(ed) G(reen) B(lue), each in the range 0 through 1. The square shows the current color, which is given numerically in both HSV and RGB systems in the corresponding text boxes.

In the HSV color system, hue H runs from red at 0, green at .333, blue at .667, and back to red at 1.0. Saturation gives the fraction of white mixed into the color, from 0 for pure gray to 1 for pure color. Value gives the brightness, from 0 for black to 1 for full brightness.

Pressing the RGB or HSV button at top center switches the sliders to the other color system. You can adjust colors either via the sliders, or by typing in either the RGB or HSV text boxes.

Click OK to accept the color that you have chosen, or Cancel to retain the previous color setting.

The SHADING browser lets you specify the shading model that Geomview uses to paint the target geom.

Constant
  Every face of the object is drawn with a constant color which does not depend on the location of the face, the camera, or the light sources. If the object does not contain per-face or per-vertex colors, the diffuse color of the object's appearance is used. If the object contains per-face colors, they are used. If the object contains per-vertex colors, each face is painted using the color of its first vertex.

Flat
  Each face of the object is drawn with a color that depends on the relative location of the face, the camera, and the light sources. The color is constant across the face but may change as the face, camera, or lights move.

Smooth
  Each face of the object is drawn with smoothly interpolated colors based on the normal vectors at each vertex. If the object does not contain per-vertex normals, this has the same effect as flat shading. If the object has reasonable per-vertex normals, the effect is to smooth over the edges between the faces.

CSmooth
  Each face of the object is drawn with exactly the specified color(s), independent of lighting, orientation, and material properties. If the object is defined with per-vertex colors, the colors are interpolated smoothly across the face; otherwise the effect is the same as in Constant shading style.

The Facing Normals button on the Appearance panel indicates whether or not Geomview should arrange that normal vectors always face the viewer. If a normal vector points away from the viewer the color of the corresponding face or vertex usually is darker than is desired. Geomview can avoid this by using the opposite normal in shading calculations. This is the default. Using Facing Normals can give strange flickering dark or light shading effects, though, near the horizon of a fairly smooth facetted object. Press this button to use the normals given with the object.

The three text fields in the lower left corner of the Appearance panel are:

Line Width
  The width, in pixels, for lines drawn by Geomview.

Normal Length
  This is actually a scale factor; when normal vectors are drawn, Geomview draws them to have a length that is their natural length times this number.

Patch Dicing
  Geomview draws Bezier patches by first converting them to meshes. This parameter specifies the resolution of the mesh: if Patch Dicing is n, then an n by n mesh is used to draw each Bezier patch. if Patch Dicing is 1, the resolution reverts to a built-in default value.

The Revert button on the Appearance panel undoes all settings in the target appearance. This causes the target geom to inherit all its appearance properties from its parent.

The Appearance panel's Override button determines whether appearance controls should override settings in the objects themselves -- for example, setting the face color will affect all faces of objects with multi-colored facets. Otherwise, appearance controls only provide settings which the objects themselves do not specify. By default, Override is enabled. This button applies to all objects, and to all appearance-related panels.

### The Materials Panel

The Materials panel controls material properties of surfaces. It works with the target object in the same way that the Appearance panel does.

The Materials Panel

Transparent

  This button determines whether transparency is enabled. Geomview itself does not fully support transparency yet and on some machines it does not work at all. More specifically, the X, NextStep, and some SGI platforms ignore alpha information entirely, while other SGI platforms use the alpha information but the picture is guaranteed to be incorrect. Use RenderMan if you want real transparency: when transparency is enabled, a RenderMan snapshot will contain the alpha information.

Alpha
  This slider determines the opacity/transparency when transparency is enabled. 0 means totally transparent, 1 means totally opaque.

Diffuse Reflectance
  This slider controls the diffuse reflectance of a surface. This has to do with how much the surface scatters light that it reflects.

Shininess
  This slider controls how shiny a surface is. This determines the size of specular highlights on the surface. Lower values give the surface a duller appearance.

Ambient Reflectance
  This slider controls how much of the ambient light a surface reflects.

Specular Reflectance
  This slider controls the specular reflectance of a surface. This has to do with how directly the surface reflects light rays. Higher values give brighter specular highlights.

Done
  This button dismisses the Materials panel.

### The Lighting Panel

The Lighting panel controls the number, position, and color of the light sources used in shading.

The Lighting Panel

The Lighting panel is different from the Appearance and Material panels in that it always works with the base appearance. This is because it usually makes sense to use the same set of lights for drawing all objects in your scene.

LIGHTS
  The LIGHTS browser shows the currently selected light. Changes made using the other widgets on this panel apply to this light. There is always at least one light, the ambient light.

Intensity
  This slider controls the intensity of the current light.

Color
  This button brings up a color chooser which lets you select the color of the current light.

Add
  This button adds a light.

Delete
  This button deletes the current light.

Show Lights
  This button lets you see and change the positions of the light sources in a camera window. Each light is drawn as long cylinder which is supposed to remind you of a light beam. When you click on the Show Lights button Geomview goes into "light edit" mode, during which you can rotate current light by holding down the left mouse button and moving the mouse. Lights placed in this way are infinitely distant, so what you are changing is the angular position. Click on the Show Lights button again to return to the previous motion mode and to quit drawing the light beams.

Done
  This button dismisses the Lighting panel.

Geomview's Appearance, Materials, and Lighting panels are constructed to allow you to easily do most of the appearance related things that you might want to do. The appearance hierarchy that Geomview supports internally, however, is very complex and there are certain operations that you cannot do with the panels. The Geomview command language (gcl) provides complete support for appearance operations. In particular, the `merge-baseap` command can be used to change the base appearance (which, except for lighting, cannot be changed by Geomview's panels). The `merge-ap` command can be used to change an individual geom's appearance. Appearances can also be specified in OOGL files; for details, see section Appearances.

## Cameras

A camera in Geomview is the object that corresponds to a camera window. By default there is only one camera, but it is possible to have as many as you want. You can control certain aspects of the way the world is drawn in each camera window via the Cameras panel.

The Cameras Panel

If the target object is a camera, the Cameras panel affects that camera. If the target object is not a camera, the Cameras panel affects the current camera. The current camera is the camera of the window that the mouse cursor is in, or was in most recently if the cursor is not in a camera window. Thus, if you use the keyboard shortcuts for the actions in the Cameras panel while the cursor is in a camera window, the actions apply to that camera, unless you have explicitly selected another camera.

To create new camera windows, use the `v+` keyboard shortcut, or see the File menu on the Main panel.

Single-Buffering
  Normally, geomview windows are double-buffered: geomview draws the next picture into a hidden window, then switches buffers to make it visible all at once. On many systems, the memory for the hidden buffer comes from stealing half the bits in each screen pixel, reducing the color resolution. When single-buffering is enabled, the window flickers as each scene is being drawn, but you may get smoother images with reduced grainy dithering artifacts. Single-buffering is possible if Geomview is compiled with GL or OpenGL, but not with plain-X graphics.

Dither
  Many displays offer less than the 24 bits per pixel (8 bits each of red, green, and blue) conventionally needed to show smooth gradations of color. When trying to show a color not accurately available on the display, Geomview normally dithers, choosing pixel colors sometimes brighter, sometimes darker than the desired value, so that the average color over an area is a better approximation to the true color than a single pixel could be. Effectively this loses spatial resolution to gain color resolution. This isn't always desirable, though. Turning Dither off gives less grainy, but less accurately colored, images.

Software Shading
  This button controls whether Geomview does shading calculations in software. The default is to let the hardware handle them, and in Euclidean space this is almost certainly best because it is faster. In hyperbolic and spherical space, however, the shading calculations that the hardware does are incorrect. Click this button to turn on correct but slower software shading.

Background Color
  This button brings up a color chooser which you can use to set the background color of the camera's window.

PROJECTION
  This browser lets you pick between perspective and orthogonal projection for this camera.

Near clip
  This determines the distance in world coordinates of the near clipping plane from the eye point. It must be a positive number.

Far clip
  This determines the distance in world coordinates of the far clipping plane from the eye point. It must be a positive number and in general should be larger than the Near clip value.

FOV
  This is the camera's field of view, measured in its shorter direction. In perspective mode, it is an angle in degrees. In orthographic mode, it is the linear size of the field of view. This number can be modified with the mouse in Cam Zoom mode.

Focal Length
  The focal length is intended to suggest the distance from the camera to an imaginary plane of interest. Its value is used when switching between orthographic and perspective views (and during stereo viewing), so as to preserve apparent size of objects lying at the focal distance from the camera. Focal length also affects interpretation of mouse-based translational motions. Speed of forward motion (in translate, fly and orbit modes) is proportional to focal length; and objects lying at the focal distance from the camera translate laterally at the same rate as the mouse cursor. Finally, in N-D projection mode, cameras are displaced back by the focal distance from the 3-D projection of the world origin.

Lines Closer
  This number has to do with the way lines are drawn. Normally Geomview's z-buffering algorithm can get confused when drawing lines that lie exactly on surfaces (such as the edges of an object); due to machine round-off error, sometimes the lines appear to be in front of the surface and sometimes they appear behind it. The Lines Closer value is a fudge factor -- Geomview nudges all the lines that it draws closer to the camera by this amount. The number should be a small integer; try 5 or 10. 0 turns this feature off completely. Choosing too large a value will make lines visible even though they should be hidden.

SPACE MODEL
  This determines the model used to draw the world. It is most useful in hyperbolic and spherical spaces. You probably don't need to touch this browser if you stay in Euclidean space. For more information about these models, see section Non-Euclidean Geometry.
  Virtual
    This is the default model and represents the natural view from inside the space.

  Projective
    The projective model of hyperbolic and spherical space. Geoms move under isometries of the space, and cameras move by Euclidean motions. By default in the projective model, the Euclidean unit sphere is drawn. In hyperbolic space this is the sphere at infinity. In Euclidean space the projective model is the same as the virtual model except that the sphere is drawn by default.

  Conformal
    The conformal model of hyperbolic and spherical space. Geoms move under isometries of the space, and cameras move by Euclidean motions. In Euclidean space, the conformal model amounts to inverting everything in the unit sphere.

  - Draw Sphere This controls whether Geomview draws the unit sphere. By default the unit sphere appears in the projective and conformal models. In hyperbolic space this is the sphere at infinity. In spherical space it is the equatorial sphere.

  - Done This button dismisses the Cameras panel.

## Saving your work

Geomview's Save panel lets you store Geomview objects and other information in files that you can read back into Geomview or other programs.

The Save Panel

To use the Save panel you select the desired format in the browser next to the word Save, enter the name of the object you want to save in the text field next to the word for, and enter the name of the file you wish to save to in the long text field next to the word in. You can then either hit ``RET`` or click on the OK button. When the file has been written, the Save panel disappears. If you want to dismiss the Save panel without writing a file, click the Cancel button.

If you specify ``-'` as the file name, Geomview will write the file to standard output, i.e. in the shell window from which you invoked Geomview.

The possible formats are given below. The kind of object that can be written with each format is given in parentheses.

Commands (any object)
  This write a file of gcl commands containing all information about the object. Loading this file later will restore the object as well as all other information about it, such as appearance, transformations, etc.

Geometry alone (geom)
  This writes an OOGL file containing just the geometry of the object.

Geometry [in world] (geom)
  This writes an OOGL file containing just the geometry of the object, transformed under Geomview's current transformation for this object. Use this if you have moved the object from its initial position and want to save the new position relative to the world.

Geometry [in universe] (geom)
  This writes an OOGL file containing just the geometry of the geom, transformed under both the object's transformaton and the world's transformation.

RMan [->tiff] (camera)
  Writes a RenderMan file which when rendered creates a tiff image.

RMan [->frame] (camera)
  Writes a RenderMan file which when rendered causes an image to appear in a window on the screen.

SGI snapshot (camera)
  Write an SGI raster file. A bell rings when the snapshot is complete. Only available on SGI systems.

PPM Screen snapshot (camera)
  Take a snapshot of the given window and save it as a PPM image. If you specify a string beginning with a vertical bar (`|`) as the file name, it's interpreted as a Bourne shell command to which the PPM data should be piped, as in ``| pnmtotiff > snap.tiff'` or ``| convert -geometry 50% ppm:- snap.gif'`.

  PPM screen snapshots are only available with GL and Open GL, not plain X graphics. The window should be entirely on the screen. Geomview will ensure that no other windows cover it while the snapshot is taken.

PPM software snapshot (camera)
  Writes a snapshot of that window's current view, as a PPM image, to the given file. The file name may be a Bourne shell command preceded by a vertical bar (`|`), as with the PPM screen snapshot. The software snapshot, though, is produced by using a built-in software renderer (related to the X-windows renderer). It doesn't matter whether the window is visible or not, and doesn't depend on GL or OpenGL. It also doesn't support some features, such as texture mapping.

Postscript snapshot (camera)
  Writes a Postscript snapshot of the camera's view. It's made by breaking up the scene into lines and polygons, sorting by depth, and generating Postscript lines and polygons for each one. Advantages over pixel-based snapshot images: resolution is very high, so edges look sharp even on high-resolution printers, or comparable-resolution images are typically much more compact. Disadvantages: depth-sorting gives good results on some scenes, but can be wildly wrong as a hidden-surface removal algorithm for other scenes. Also, Postscript doesn't offer smoothly interpolated shading, only flat shading for each facet.

Camera (camera)
  Writes an OOGL file of a camera.

Transform [to world] (any object)
  Writes an OOGL transform file giving Geomview's transform for the object.

Transform [to universe] (any object)
  Writes an OOGL transform file giving a transform which is the composition of Geomview's transform for the object and the transform for the world.

Window (camera)
  Writes an OOGL window file for a camera.

Panels
  Writes a gcl file containing commands which record the state of all the Geomview panels. Loading this file later will restore the positions of all the panels.

## The Commands Panel

The Commands panel lets you type in a gcl command. When you hit ``RET``, Geomview interprets the command and prints any resulting output or error messages on standard output. You can edit the text and hit ``RET`` as many times as you like, in general, whenever you hit ``RET`` with the cursor in the Commands panel, Geomview tries to interpret whatever text you have typed in the text field as a command.

The Commands Panel

[Move this.] Normalization is a kind of scaling; Geomview can scale an object so that it fits within a certain region. The main point of normalization is to allow you to easily view all of an object without having to worry about how big it is. We are gradually replacing Geomview's normalization feature with more robust camera positioning features. In general, the best way to make sure you are seeing all of an object is to use the Look At button on the Tools panel. Normalization may be completely replaced by this and other features in a future version of Geomview.

Normalization is a property that applies to each geom separately. The NORMALIZE GEOMETRY browser affects the normalization property of target geom. If the target geom is "World", it affects all geoms.

None
  Do no normalization.

Individual
  Normalize this geom to fit within a unit sphere.

Sequence
  This resembles "Individual", except when an object is changing. Then, "Individual" tightly fits the bounding box around the object whenever it changes and normalizes accordingly, while "Sequence" normalizes the union of all variants of the object and normalizes accordingly.

Keep
  This leaves the current normalization transform unchanged when the object changes. It may be useful to apply "Individual" or "Sequence" normalization to the first version of a changing object to bring it in view, then switch to "Keep".

## Keyboard Shortcuts

Most actions that you can do through Geomview's panels have equivalent keyboard shortcuts so that you can do the same action by typing a sequence of keys on the keyboard. This is useful for advanced users who are familiar with Geomview's capabilities and want to work quickly without having to have lots of panels cluttering up the screen. Keyboard shortcuts usually are indicated in square brackets ([ ]) near the corresponding item in a panel. For example, the keyboard shortcut for Rotate mode is 'r'; this is indicated by "[r]" appearing before the word "Rotate" in the MOTION MODE browser. To use this keyboard shortcut just hit the `r` key while the mouse cursor is in any Geomview window. You don't need to press the ``RET`` or ``SPACE`` keys.

Some keyboard shortcuts consist of more than one key. In these cases just type the keys one after the other, with no ``RET`` afterwards. Keyboard shortcuts are case sensitive. You can cancel a multi-key keyboard shortcut that you have started by typing any invalid key, for example the space bar.

Keyboard commands apply while the cursor is in any camera window and most control panels.

Many keyboard shortcuts allow numeric arguments which you type as a prefix to the command key(s). For example, the shortcut for Near clip in the camera panel is `v n`. To set the near clip plane to ``0.5'`, type `0.5vn`. Commands that don't take a numeric prefix toggle or reset the current value.

Most commands allow one of the following selection prefixes. If none is provided the command applies to the target object.

`g`
  world geom
`g#`
  #'th geom
`g*`
  All geoms
`c`
  current camera
`c#`
  #'th camera
`c*`
  All cameras

For example, `g4af` means toggle the face drawing of object g4.

Simply typing a selection prefix, like `g4`, doesn't yet select an object; that only happens when a command, like `ae`, follows the prefix. To select an object as the target without doing anything else to it, use the `p` command. So `g3p` selects object g3.

The text field in the upper left corner of the Main panel shows the state of the current keyboard shortcut.

In addition to the keyboard shortcuts for the panel commands, there is also a shortcut for picking a target object: type the short name of the object followed by `p`. For example, to select object g3, type `g 3 p`. This only works with the short names -- the ones that appear in square brackets ([ ]) in the Targets browser of the Main panel.

Below is a summary of all keyboard shortcuts.

Draw
  @table @kbd @item af Faces @item ae Edges @item an Normals @item ab Bounding Boxes @item aV Vectors @end table
Shading
  @table @kbd @item 0as Constant @item 1as Flat @item 2as Smooth @item 3as Smooth, non-lighted @item aT allow transparency @item at texture mapping @end table
Other
  @table @kbd @item av eVert normals: always face viewer @item #aw Line Width (pixels) @item aC handle concave polygons @item #vc edges Closer than faces (try 5-100) @end table
Color
  @table @kbd @item Cf faces @item Ce edges @item Cn normals @item Cb bounding boxes @item CB background @end table
Motions
  @table @kbd @item r rotate @item t translate @item z zoom FOV @item f fly @item o orbit @item s scale @item w recenter target @item W recenter all @item h halt @item H halt all @item @ select center of motion (e.g. `g 3 @`) @item L Look At object @end table
Viewing
  @table @kbd @item 0vp Orthographic view @item 1vp Perspective view @item vd Draw other views' cameras @item #vv field of View @item #vn near clip distance @item #vf far clip distance @item v+ add new camera @item vx cursor on/off @item vb backfacing poly cull on/off @item #vl focal length @item v~ Software shading on/off @end table
Panels
  @table @kbd @item Pm Main @item Pa Appearance @item Pl Lighting @item Po Obscure @item Pt Tools @item Pc Cameras @item PC Commands @item Pf Files @item Ps Save @item P- read commands from tty @item PA Credits ("about") @end table
Lights
  @table @kbd @item ls show lights @item le edit lights @end table
Space
  @table @kbd @item me Euclidean @item mh Hyperbolic @item ms Spherical @end table
Model
  @table @kbd @item mv Virtual @item mp Projective @item mc Conformal @end table
Other
  @table @kbd @item 0N normalizaton: none @item 1N normalization: each @item 2N all normalization: all @item ui motion: Inertia @item uc motion: Constrain to axis @item uo motion: object's Own coordinates @item < @item Pf load geometry/command file @item dd delete target object @item > @item Ps save state to file @item TV NTSC mode toggle @item p pick as target object (e.g. `g 3 p`) With no prefix, selects the object under the mouse cursor (like double-clicking the right mouse) @end table

Go to the previous, next section.