Last modified 18 August 2003 by jdavis@math.wisc.edu

Overview

The SMea Kit is an open-source, high-level 3D graphics library, written in Objective-C atop OpenGL and Mac OS X's Cocoa framework. It is designed to support virtual reality applictions, in which multiple articulated human figures interact on an expansive landscape. However, many of the kit's components are quite general, providing functionality needed in any 3D program. You can mix and match classes as you like. You might also use the kit as a tutorial to help you get started with OpenGL.

Let's begin with the miscellaneous, widely applicable classes. SMKCamera packages the OpenGL viewing transformations into a metaphorical camera that you can manipulate intuitively as part of your scene. SMKTester abstracts the OpenGL selection mechanism, greatly simplifying tasks such as picking and collision testing. SMKInterpolator helps you control real time in your program. SMKDrawingManager helps you draw translucent objects and 2D objects, including formatted text.

Now, complicated 3D scenes as usually constructed as scene trees. These are hierarchical models, in which numerous individual elements are positioned relative to one another using rigid-body transformations (rotations and translations). SMKSceneTree provides the nodes for scene trees in the SMea Kit. To each node is attached an SMKTransformation and a drawing object; for example, SMKModelDrawer draws a lit, textured triangular mesh, while SMKBubbleDrawer draws a 2D "speech bubble", like those seen in comic books.

A special sort of hierarchical model is that of a human figure. In upcoming versions of the SMea Kit, the SMKFigure class will provide special methods for handling human anatomy and movement.

A typical 3D program uses a lot of stored information, such as preconstructed 3D models and textures. Often, multiple parts of the program need access to the same data, but only for reading, not writing. For example, various figures might use the same geometric model for their left forearms. Therefore it makes sense to store only one copy of the data and to let this one copy be shared. The SMea Kit provides such a shared resource system, in which resources are identified by numeric keys. SMKResourceManager is the simple database that manages it all. Standard resource classes include SMKTexture and SMKModel.

The SMea Kit, in its current incarnation, was started in March 2001. Thus far, the API has been highly volatile. Features are constantly being added and streamlined. Plans include: