Software Related Tools
There is a wide variety of computer graphics related software packages available on the net. The resources we list here are ones we consider particularly useful to researchers. Most resources listed here come with source code. Also examine the comp.graphics FAQ collection for useful information about all sorts of free resources. Freeware and open-source media players are listed on CleanSoftware.org.
General
- The Graphics Gems Repository is the on-line repository for the code and errata for the Graphics Gems series of books (from Academic Press). This series focusses on short to medium length pieces of code which perform a wide variety of tasks.
- There are many great documents and code bits at David Eberly's site, including a quaternion tutorial and code, animation information, image analysis, etc.
- The journal of graphics tools has source available on-line for some of the articles it publishes.
- The book Numerical Recipes is now online in Postscript and PDF forms. Some figures are missing from the PDF files, but you can't beat the price. The text is free for viewing but the electronic version of the source code must be purchased.
- SourceForge is the best place to check for free, open-source software packages; check the 3D foundry and the graphics area.
- Maxima is a descendant of the Macsyma symbolic computation package, similar to Mathematica. You can use it to manipulation equations, integrate and differentiate, and much more. It's (finally) free and open-source.
- VRPN, the Virtual Reality Peripheral Network, is a de facto standard for the tracker and input device drivers common to interactive simulations.
Image Manipulation
- Netpbm is a free package of file manipulation and conversion programs for a wide variety of file types and operations. The C source code can be freely used in any application.
- ImageMagick is one of the better free conversion and manipulation GUI-based packages available for X Windows systems and MS Windows. It comes with source code and has a liberal reuse license.
- FreeImage is a thread-safe, cross-platform library for image conversion and manipulation.
- DevIL is an open-source library for image conversion with many features, and includes conversion of some newer formats such as DDS.
- The GIMP is a GUI-based image manipulation package (think, "Photoshop") with some advanced plug-ins for Linux and Unix systems. Source code is provided.
- Paint.NET is a free, open-source Windows XP image manipulation program in C#. It's simplified vs. the GIMP, useful for quickly doing basic operations, but still has powerful features such as layers and history.
- Irfanview is a fine free image viewer and converter.
- Sourceforge hosts many other open source projects related to image manipulation and conversion.
- xv is another free for personal use GUI-based image manipulation package with source. There are also binaries for Windows NT.
- The SDSC Image Tools provide a wide range
of file readers and writers as well as image processing tools.
- NIH Image is a public domain image processing and analysis program. In addition to traditional image editing tools, there are other operations for working with CAT scans and MRI data. For example, there is support for measuring the area or perimeter of some piece of the image. The NIH version is for the Macintosh. A free MS Windows version called Scion Image is available from Scion Corp.; Scion also has a free extended version of NIH Image for the Mac. Related is Image/J, a Java version.
- Paul Heckbert's filtered zoom program has had some file support added to it.
- James Murray's 2D file formats FAQ collection has FAQs on a wide variety of formats. Wotsit's Format is another place to look for file format descriptions.
- Paul Heckbert has code available for nicely filtered zooming of raster images and texture mapping/image warping.
- File Formats
Some of the better free code sets for reading and writing particular image file formats are:
- OpenEXR: a new format from ILM that is gaining adherents.
It supports higher precision and dynamic range, as well as additional
storage for data and arbitrary buffers. Open source code is provided.
- TIFF: Sam Leffler's excellent libtiff package.
- JPEG: The easy to use Independent JPEG group code distribution.
- PNG: The PNG software library.
2D Rendering
- The Anti-Grain Geometry package is open source C++ that does SVG-quality (or better) vector graphics rendering.
- The GNU plotutils package has two parts. There is a C/C++ function library for drawing, animating, and exporting 2D vector graphics to many formats. There are also some command-line programs for easily making plots of data. Download the latest version from here.
- gd is a graphics library which is handy for drawing vectors, regions, text, and compositing other images into a GIF. It's free, with source, and works on a wide range of platforms and compilers.
- The Jazz system has elements of 2D rendering and visualization.
It is a free, open-source Java system for accessing large numbers of documents using a zooming metaphor and multiple representation.
Geometric Computations and Computational Geometry
- The Geometric Tools' site includes many articles on geometric computations.
- The Geometry Algorithms site has many useful pages on geometric computations. In particular, articles listed on the Algorithms Archive are well-referenced and usually have worthwhile code snippets.
- For object/object intersection information, see the 3D Object Intersection page.
- Nina Amenta at the Geometry Center has a good collection of links to computational geometry code and other resources.
- Jeff Erickson maintains links to computational geometry code and software libraries, as well as (mostly Java) programs which run over the net.
- CGAL, the Computational Geometry Algorithms Library, is a collection of standard geometric algorithms in C++ which has the goals of being robust, easy to use, and efficient.
- Joseph O'Rourke maintains source code from his book Computational Geometry in C, as well as a number of source code files for other computational geometry problems.
- Steven Skiena maintains a collection of algorithms for solving over 70 combinatorial problems, including a number in computational geometry.
- The journal of graphics tools has source available on-line for ray/triangle and triangle/triangle intersectors and for computation of mass properties for polyhedra.
- A reasonable polygon tessellator in C code can be found at Dinesh Manocha's site.
- A generic polygon clipper library in C is available from Alan Murta. He also has links to other clippers on the web. Michael Leonov has a useful clipper comparison page, and his own solution. Dave Eberly's clipper (look for the Polysolids code) has the most liberal reuse agreement, though it is not appropriate for large line sets.
- A thorough and well-annotated collision detection resource list has been compiled by Jie Gao.
- Ardy Goshtasby has a number of programs that generate rational Gaussian curves and surfaces.
Modelers
There are many shareware and freeware modelers available for specific rendering
programs, particularly for POV-Ray. See
their links page for a good
guide to these. Listed below are only those modelers which have source code available
with them.
- Sourceforge
is a good place to look for open source 3D modelers.
- Blender is a modeling program with some worthwhile features,
and is GPL open source. Impressively, the community of users paid about $100,000 to obtain
this source code and make it available for free.
- Ayam is a free 3D modelling environment for the RenderMan interface.
- IRIT
is a solid modeling program created by Gershon
Elber for educational purposes. It has been developed since 1989, and
runs on many platforms, including Unix, Windows NT, MS-DOS, OS/2, and AmigaDOS.
It includes a control language with powerful operators, including booleans,
splines, trim curves, morphing, and animation. It can export results to many
file formats. Extensive documentation is also provided. [note: this link is
sometimes very slow or unavailable - keep trying]
- MilkShape 3D is a
free modeler and file converter. Mostly for games, but it does support some major modeller
file formats.
- BRL-CAD is a serious, extensive
CSG modeling system, in development since 1979. The system is focussed on
military vehicles and survivability, but can be used in other ways. It is
free for download after signing an agreement.
- Open CASCADE is an Open Source
CAD system. Code is available for manipulating 2D and 3D geometry/topology,
booleans, fillets, chamfers, offsets, sweeps, etc. Data exchange is available
for STEP, IGES, and DXF/SAT.
- 3dom is a Unix/Linux open-source
solid object modeler under GNU license, and includes plug-in capabilities
and scripting in Python.
- GraphicsJungle
is a system for manipulating and rendering implicit surfaces (blobbies) in
a wide variety of ways. The software
runs on SGIs and Linux systems.
- FREEdraft is
a Linux GPL open source modeler for 2D drafting.
- Art of Illusion
is a free, open source modeler in Java. It is in the early stages, but has
a triangle mesh editor and a ray tracer.
- Aztec is a 3D modeler on Sourceforge.
- 'Ray Traced Evolution'
is L-Systems software with a ray tracer and an ability to export to POV-Ray
and NFF formats, among others.
3D Object File Formats, Viewers, and Files
- A history of the famous teapot, as well its data, can be found at Steve Baker's site. (Note that the SPD package can output the teapot to a number of popular formats.)
- 3D format information is available at The
Graphics File Formats Page and Wotsit's
Format. CAD-related file format information can be found at CADCAM
Center.
- MilkShape 3D is a
free modeler and file converter. Mostly for games, but it does support some major modeller
file formats.
- Blender also has a fair number of different file importers and exporters.
- Aztec is a low-polygon modeler with source,
made for making models for games.
- Visit Sourceforge
for many other modeling related projects.
- There are all sorts of model viewers and converters out there (rarely with source, though),
3DLinks has a good list
(3D
Exploration is good for quick viewing, though unfortunately it's now trialware).
- Crossroads
is a reasonable, free 3D file converter (no source, though - why there is no open
source file conversion system at this point is a mystery).
- The Bunny, Buddha, Dragon, and other common models are available from the
Stanford scanning repository.
- The platform independent SPD package
performs simple conversions from DXF (limited), NFF, and Wavefront OBJ to
a wide variety of 3D formats. It includes code to generate the famous teapot model, sphereflake, and
other procedural models.
- For animated ray tracer testing, the BART test scenes have become a standard.
- The 13 million triangle power plant model is available from UNC-CH.
- The Utah 3D Animation Repository has a number of animations available as keyframe files for use in research.
- A wide variety of free models are available at cadalyst.net,
3D Cafe, and The
New Graphics BBS sites, among others. Northwestern has a pretty good
models links page.
- An experimental searcher
based on keywords or model shape is available from Princeton, with
over 20,000 models in its database.
- The Large Geometric Models
Archive is just that, large models to use for testing algorithms. There is also
a good links page.
- MGF (Materials and Geometry
Format) is a format with physically based materials descriptions and therefore
usable for lighting simulation and shading research. The package includes
a free ANSI-C parser and scene/object library.
- VRML resources such as models, parsers, various world browsers and builders,
etc, are available from the VRML
Repository. Note that VRML has been superceded by X3D, but there are still a lot of VRML models out there.
- IBM's Visualization Data Explorer is
now open source.
- The Geometry Center provides a number
of software packages, including Geomview,
an interactive 3D geometry viewing program for the SGI.
- Two software-only solutions for making movies of interactive programs are
FRAPS and
HyperCam.
Interactive 3D Rendering
- The 3D Engines List
lists 500+ different rendering engines available on the web, many including
source.
- Sourceforge
is a good place to look for open source 3D renderers.
- The Mesa 3-D graphics
library is a free software distribution which implements much of OpenGL
functionality. The package is Unix/X-Windows based, but recently a Windows
3.1 driver has been added to the package. The speed appears comparable to
commercial software-only OpenGL implementations; it does not use any platform
specific graphics hardware acceleration.
- The source code for SGI's
sample implementation of OpenGL has become available.
- The Genesis3D engine is a commercial
open source graphics engine for the PC with a huge number of features and
hardware support.
- Lib3d is a high performance
3d C++ library distributed under the GNU Library General Public License. Lib3d
implements sub-affine texture mapping, Gouraud shading and Z-buffer rasterization,
with support for 8, 16 and 32 bit depths. It has been developed under Linux,
and has been tested with DOS, Solaris and OSF/1 on Dec alphas. Compared to
other free renderers, Lib3d is about 3.5 times faster than TAGL v22, many
times faster than Mesa, and perhaps half as fast as a good commercial renderer.
- The book Real-Time Rendering
has a web site with many related programming resources and code snippets.
- Linux Games has links to all sorts
of free 3D code, such as the Crystal
Space rendering engine, which has a large set of features for doing 3D
maze-type games.
- Apprentice is
an SGI Open Inventor emulation library that reads and displays '.iv' files.
It works on Windows95/NT. The source code is available for non-commercial,
educational use.
- Alice is a free 3D graphics
development environment for Windows 95 and NT 4.0. It is script-based and
is useful for exploring VR, interactive techniques, and animation. Alice reads
DXF, OBJ, and VRML 1.0, among other 3D file formats. It also includes an advanced
version of the (entirely fun and cool) Teddy
modeler.
- OpenTeddy is an open source implementation
of the Teddy sketch modeler.
- Tcl-SIPP (tsipp) is a platform
independent hidden surface library and rendering toolkit which includes such
advanced features as shadows and procedural texturing. It uses TCL or an API
for input, and outputs PPM format files and more. See the README for more information.
- Graphics Gems
has generic convex polygon scan conversion and clipping routines.
- The Graphics Gems
V code distribution has a simple z-buffer renderer by Raghu Karinthi,
using NFF as the input language.
- CIDLib is a portable general
purpose C++ development library which includes an object oriented fractal
engine and ray tracing engine. Currently available for Windows NT and Unix.
- Source code for Quake I, II, and III, as well as the (ancient, but hey it runs on some digital cameras) Doom,
have been released under GPL.
- There are a number of open-source scene graph libraries and GUI toolkits available.
Some are based on OpenInventor: Coin3D,
Studierstube's, and
others.
Photorealism and Global Illumination
- BRDF data is available from Cornell and Columbia-Utrecht Universities.
- Arauna and OpenRT are two interactive ray tracers available to researchers.
- POV-Ray is a free ray tracer with a
wide variety of primitives. A massive number of utilities to aid in modeling,
rendering, and animating have made this renderer extremely popular, particularly
on PC and Mac platforms.
- Rayshade
is an popular ray tracer with some support for parallel processing. It is one
of the fastest publicly available, and so stands as a useful benchmark for
efficiency testing. There is a Linux
and Win98 port available.
- Aqsis is an open-source renderer which
uses the RenderMan interface. It is not a ray tracer, but produces high quality imagery.
- The Tachyon Parallel/Multiprocessor
ray tracing system was developed by John Stone to run on a variety of
parallel architectures. It runs about 3 times faster than POV-Ray, though is nowhere near as full
featured. Source code is available.
- RenderPark
is an older software package from the computer graphics research group at Katholieke
Universiteit Leuven, in Belgium. It is a test bed for global illumination
algorithms, and has a large number of these rendering techniques implemented
(Galerkin, Monte Carlo variants, stochastic, bidirectional, etc.). It runs
on Unix/Linux.
- 11 test scenes from the
5th Eurographics Workshop are available for download. These diffuse, grey
environments are designed for testing radiosity and Monte Carlo algorithms.
See the README file
for details. These environments have been translated to the MGF
(Materials and Geometry Format). The MGF site also has other example scenes
available for testing.
- Radiance is a free physically based rendering system. It uses Greg Ward's radiosity algorithm, and implements a wide range of rendering equations. New renderers can be easily added.
Visualization
- The Visualization Toolkit
consists of the C++ and TCL code base for the book The Visualization Toolkit.
It supports a wide variety of visualization algorithms including scalar, vector,
and tensor visualization, and advanced modelling techniques like implicit
modelling, polygon reduction, and Delaunay triangulation. It is now open source.
- IBM's Visualization Data Explorer is
now open source.
- The Teem Toolkit has many
useful routines for volume rendering.
- The Jazz system has elements of 2D rendering and visualization.
It is a free, open-source Java system for accessing large numbers of documents using a zooming metaphor and multiple representation.
Volume Rendering
- VFleet is a volume rendering system for Unix platforms. It can be run either locally or in distributed mode across multiple platforms or on a parallel computer. Its strength lays in viewing large or multi-valued datasets.
- VolPack is a portable software library for volume rendering. It is based on Lacroute and Levoy's new family of fast, high-quality volume rendering algorithms. It is useful for building interactive visualization applications.
- Bob (Brick of Bytes) is an excellent viewer for looking at simple single datasets quickly on SGI platforms. The source can be found on the 3TAG site.
- VolVis is another good volume renderer; its emphasis is on the computer graphics rendering (vs. data visualization) aspects of the task.
- The Teem Toolkit has many useful routines for volume rendering.
back to overview,
or go to research sites or literature
related resources.
Eric Haines,
On-Line Editor / erich@acm.org
Last change: June 18, 2008