History: Navarro and Malheiros's Mestrado Theses |
This is a preliminary release of MTK. Although it is rather stable, we still consider it in ALPHA state, because the API may need some changes.
Short Description
MTK is implemented as a C++ programming library and aimed at
providing a simple, direct interface to the fundamental operations of
3D graphics rendering and interaction.
Despite their limited graphics primitives, the successful use of OpenGL in a variety of applications has driven us to adopt a subset of its functionalities as the interface of MTK, namely
In this way, for visualization purposes, the
coupling of an application-specific 3D data model and
MTK may be reduced to a data format conversion problem. Moreover,
the information we passed to OpenGL is sufficient for its
picking and selection mechanism to
identify objects drawn on the screen.
For improving the depth perception, we also devised a class of 3D cue objects (Guides class) in addition to the flat and Gouraud shading supported by OpenGL.
The main contribution of our work is the design of a class of
constraining functions (Constraints class) for the movements of a
2D cursor on a 3D perspective or parallel projection mapped on the
screen and a class of draggers (box, ball, and jack) whose
components may be associated
to distinct constraining functions. The constraining functions
enable us to unambiguously unproject the
coordinates of a pixel to a point in the 3D "world" and the
draggers restrict the 2D cursor movements on a set of pre-defined
curves or surfaces. We demonstrated the applicability of the
draggers for 3D rigid transformations in a primitive 3D geometric modeling
system that offers some elementary operations, such as grouping, translation, rotation, and manipulation on the control points of Bézier surfaces.
Requirements
You will need the geometric library Libgm 0.1 and OpenGL 1.0 (or Mesa, 2.3 or later) to build the toolkit. You'll also need GNU make.The included example modeler will need Motif 1.4, plus the 'uil' compiler. You'll also need the GLw library, with the OpenGL-capable drawing area widget.
Finally, you'll need a recent version of STL. For compilers with full template support (like GCC), you can use the SGI implementation available at http://www.sgi.com/Technology/STL/. Note that GCC already includes STL since version 2.7.2. If your compiler has incomplete template support (like Sun CC), get a compatible STL package from http://www.metabyte.com/~fbp/stl/effort.html.
Compatibility
This package was successfully tested under Linux, using GCC 2.7.2, and Solaris, using both GCC 2.8.0 and CC 4.1.
Download