Courses |
Research |
Applications |
Articles |
Code |
Events |
Misc. |
Like many 3D graphics developers, I've developed a library of functions for loading, storing, and rendering 3D models in the OBJ file format. This library also provides an API for building, manipulating, and transforming OBJ model data. It automatically computes tangent and bi-tangent vectors for use in tangent-space surface mapping. It is capable of computing a model's average cache miss ratio (ACMR) and sorting index data to minimize this value and thus maximize rendering performance.
The image module provides support for loading and storing 2D images in PNG, JPEG, TIFF, or EXR format. It is implemented as a very thin abstraction layer atop libpng, libjpeg, libtiff, and OpenEXR, any of which may be optionally omitted if not needed.
The 3D math module implements a right-handed 3D mathematics library supporting three-component vectors, four-by-four matrices, quaternions, and Euler angles. These values are represented using ordinary C arrays of type real, which may be compile-time represented using float or double. Matrix layout is directly compatible with OpenGL.
The noise module implements a three-dimensional coherent noise generator using the Simplex method developed by Ken Perlin, described in Real-Time Shading SIGGRAPH Course Notes (2001), Chapter 2: Noise Hardware.
The typography module uses FreeType2 to efficiently render high-quality, anti-aliased, kerned text using OpenGL.
The demo module provides a simple GLUT application framework with basic interaction and camera control. It allows an OpenGL application to be brought up with near-zero “ceremony.”
The plane module is a very basic OpenGL code that renders a simple gridded plane as on the cover of Edward Tufte's Visual Explanations. This is often useful as a backdrop to simple 3D demos, and it represents an introductory example of vertex buffer object creation, population, and rendering.
The cube module renders the 3D reference cube using OpenGL. It is useful for testing object transformations and debugging OpenGL applictions. The implementation gives a simple example of basic rendering with the ARB vertex buffer object specification.
Summer 2008
Autostereo interleaver is a generalization of the Varrier Combiner algorithm that enables the creation of real-time multi-view autostereo displays using lenticular arrays and parallax barriers. It provides a channel crosstalk mitigation mechanism using destructive interference between adjacent channels.
Spring 2006
The tracker module is a simple library for reading motion tracking data provided by trackd. It is compatible with both Linux and Windows. It enables access to six degree-of-freedom sensor input, button controller input, and joystick controller input, as commonly used in virtual reality display environments.
May 2002
The glyph module provides an efficient, portable means of rendering polygonal text using OpenGL. It is fully self-contained and has no external dependencies, giving a trivially easy means of adding simple on-screen text to any OpenGL application.
kooima@csc.lsu.edu