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

MTK version 0.1.7
mtk-0.1.7.zip
LibGM version 0.1.2
libgm-0.1.2.zip