Geomview is an extremely versatile, interactive program for viewing geometric objects in 3 dimensions. Objects can be described by data files in a variety of formats. Once an object is loaded into Geomview, the user can interactively move about the scene looking at objects from all sides. The user can also interactively change the visual characteristics of the object, such as its color and transparency in order to assist visual analysis of complex scenes. Geomview also has facilities for communication with "external modules" provided by users. Such modules can automate sequences of Geomview commands to control real-time deformations of a scene for specialized mathematical research and illustration purposes.
Objects are described in OOGL an Object Oriented Graphics Language. OOGL allows a user to choose from a variety of file formats tailored to different kinds of objects. Simple formats exist for describing curves and points. More complicated formats exist for describing surfaces in terms of meshes, triangulations, bezier patches, and other geometric primitives. Packages provided with Geomview also allow users to convert Mathematica and Maple graphics to Geomview formats, thereby enabling a user to create Geomview objects from high level, mathematical descriptions, without worrying about the technicalities of data file formats. At the same time, users needing finer control over object definitions have the low level descriptions at their disposal.
In addition to their abstract, spatial definitions, visual characteristics of Geomview scenes can be modified in many powerful ways. The user can make modifications interactively at the console, or attributes can be controlled via scripts written in GCL, the Geomview Command Language. Among other things, the user can change lighting, camera and viewpoint attributes, and object appearance. Interactively, the user can rotate and translate objects individually or in groups, as well as "fly" the camera through the scene.
Another noteworthy feature of Geomview is that the user can also set the geometric properties of the underlying space. Thus, Geomview allows a user to "see" into hyperbolic and spherical space, as well as Euclidean space. This capability gives both the researcher and the student a totally unique opportunity to gain an intuitive feel for the classical non-Euclidean geometries of constant curvature.
Because all of Geomview's capabilities can be controlled via GCL, extending Geomview by writing external programs or modules that communicate directly with Geomview is a relatively straight forward matter. Geomview is distributed with a collection of useful general purpose external modules that do things like replicate an object by applying isometries, or animate scenes. However, external modules also permit investigators to easily implement specialized mathematical or graphical tasks, such as deforming objects by flows, applying group actions to objects, and so on.
Geomview represents the current state of an ongoing effort at the Geometry Center to provide interactive geometry software which is particularly appropriate for mathematics research and education. For more in depth discussion of Geomview's capabilities, consult the online Geomview Manual.
ftp.geom.umn.edu
in the directory
/pub/software/geomview
.
You can also download it from the geomview download page. There are binary distributions for SGI, Sun SPARC, Linux, HP-UX, IBM RS/6000, DEC Alpha, and NeXT machines, as well as a source code distribution.
We do not charge for Geomview, but we would like you to send us a letter describing your work (an abstract would be fine), and explaining how Geomview has helped you. This information helps us report to the NSF the ways in which our software is being used. Please send your letters to register@geom.umn.edu. Thank you.
While running Geomview, there is built-in help for Geomview Control Language (GCL) commands. In the Command panel (hotkey sequence "PC"), typing
(? command)
or (??
command)
will give a one line usage summary, or command details, respectively. The command argument to "?" and "??" can include wildcard characters.
Manual pages for Geomview exist in section one (Geomview usage) and section five (GCL documentation). In addition, most modules and auxiliary programs have their own manual pages.
progn
statement to cause Geomview to execute them all at once, instead
of executing them during the first few refresh cycles. Here is
an example .geomview file to illustrate some of the
possibilities.
(progn # To make sure it gets executed in one chunk (window default { size 640 480 } ) # Default window size (ui-panel "Appearance" on) # Want Appearance panel on (emodule-define "Test Module" "/u/testmod") # New module (merge-baseap appearance { linewidth 4 }) # Make lines thicker (backcolor allcams 0.2 0 0.2) # Background color (normalization allgeoms none) # Turn off normalization (bbox-draw allgeoms none) # Bounding boxes off )
Keyboard commands apply while cursor is in any graphics window and most control panels. Most commands allow one of the following selection prefixes (if none is provided the command applies to the current object): g world geom g# #'th geom g* All geoms c current camera c# #'th camera c* All cameras Many allow a numeric prefix: if none they toggle or reset current value. Appearance: ---------- Draw: Shading: Other: --------------- -------------- -------------------------------------- af Faces 0as Constant av eVert normals: always face viewer ae Edges 1as Flat #aw Line Width (pixels) an Normals 2as Smooth #ac edges Closer than faces(try 5-100) ab Bounding Box 3as Smooth,non-lighted aV Vectors aT allow transparency Color: ------ Cf Ce Cn Cb CB face/edge/normal/bbox/backgnd Motions: Viewing: -------------------------------------------- ---------------------------- r rotate [Leftmouse=X-Y plane, 0vp Orthographic view t translate Middle=Z axis, 1vp Perspective view z zoom FOV Shift=slow motion, vd Draw other views' cameras f fly in r/t modes. ] #vv field of View o orbit [Left=steer, Middle=speed ] #vn near clip distance s scale #vf far clip distance w/W recenter/all v+ add new camera h/H halt/halt all vx cursor on/off @ select center of motion (e.g. g3@) vb backfacing poly cull on/off #vl focal length L Look At object v~ Software shading on/off show Panel: Pm Pa Pl Po main/appearance/lighting/obscure ----------- Pt Pc PC Pf tools/cameras/Commands/file-browser Ps P- saving/read commands from tty Lights: ls le Show lights / Edit Lights ------- Metric: me mh ms Euclidean Hyperbolic Spherical ------ Model: mv mp mc Virtual Projective Conformal ------ Other: ------ < Pf load geom/command file N normalization > Ps save something to file 0N none TV NTSC mode toggle 1N each ui motion has inertia 2N all uc constrained (X/Y) motion uo motion in Own coordinate system Rightmouse-double click pick as current target object Shift-Rightmouse pick interest (center) point Renderman: ---------- RR send RIB output toNNN.rib (default fileprefix == "geom") RC Emulate lines using cylinders (default) RP Emulate lines using polygons Ra choose ASCII RIB format (default) Rb choose BINARY RIB format Rt choose Display token to specify .tiff file (default) Rf choose Display token to specify framebuffer Rs Simulate background color with Polygon (default) Rx No background simulation - fully transparent (alpha) background
The first example in the chapter should compile without any problems on any platform. However, the second example has a user interface created with the FORMS interface for SGIs. If you're developing on X11 and are interested in using FORMS, you can use XForms, an X port of FORMS. You can use any X11 toolkit to generate a user interface, such as Motif, Xt, Interviews, or XView. If you haven't decided upon a user interface toolkit, we recommend tcl/tk. It's very easy to learn, has a nice interface with C, and the interpreted language makes for a quick development cycle. If you're developing on the NeXT, your choice is limited to the NeXTSTEP Appkit unless you have an X server, which lets you use any of the previously mentioned toolkits.
The third example in the chapter uses the OOGL libraries. We don't currently distribute binaries of the libraries, as we figure that only a small amount of our user population will need them. To create the libraries, get the Geomview source distribution (from the geomview download page), and compile that. Geomview itself may not compile, since it requires Motif libraries (X11 version), but you'll still get the OOGL libraries and include files, so you can build your own programs and use them with the existing Geomview binaries.
MODULE PLATFORMS DESCRIPTION 4dview: S 4-dimensional slicing & rotation animate: SNX flip through a sequence of objects clipboard: S cut, copy and paste geometric objects crayola: SN interactively color objects drawbdy: SNX compute and draw the boundary of an object flythrough: S interactive version of "Not Knot" hyperbolic flythrough ginsu: S interactively slice objects graffiti: SN draw line segments on objects gvclock: SNX 3D clock, demonstrates real-time motion hinge: S hinge copies of a polyhedron around its edges maniview: S 3-manifold viewer NDview: S N-dimensional viewing controls and demonstration NDdemo: S N-dimensional viewing demonstration nose: SNX demonstrates picking pssnap: SNX generate PostScript snapshot stereo: S hardware, crosseyed, red/cyan stereo (beta version) sweep: SN generate objects of rotation from line segments tackdown: S redefine an object's "home" position transformer: S explicitly control an object's transformation matrix trigrp: S explore triangle symmetry groups warp: SN interactively deform an object(S means SGI version exists, N means NeXTStep version exists, X means X version exists)
Comments to:
webmaster@www.geom.uiuc.edu
Created: Fri Sep 8 11:39:00 1995 ---
Last modified: Tue Sep 26 17:31:13 1995