Software Library for Interference Detection

May the source be with you...

SOLID version 1.0 is still available here.




SOLID is a library for collision detection of three-dimensional objects undergoing rigid motion and deformation. SOLID is designed to be used in interactive 3D graphics applications, and is especially suited for collision detection of objects and worlds described in VRML.  Some of its features are:


The following papers discuss the algorithms used in SOLID:

G. van den Bergen. "Efficient Collision Detection of Complex Deformable Models using AABB Trees." Journal of Graphics Tools, 2(4):1-13 (1997), PostScript (612KB), PDF (164Kb).

G. van den Bergen. "A Fast and Robust GJK Implementation for Collision Detection of Convex Objects." Journal of Graphics Tools, 4(2):7-25 (1999), PostScript (255KB), PDF (79Kb).

G. van den Bergen. "Proximity Queries and Penetration Depth Computation on 3D Game Objects." Game Developers Conference 2001, PostScript (274KB), PDF (78Kb).


The library is written in standard C++ and relies heavily on STL. Currently it compiles under GNU g++ version 2.8.1 and Visual C++ 5.0. The library has a standard C API and can be linked to both C and C++ applications. Note that for the use in C applications, you need to explicitly include the libstdc++ library in the linkage.

For fast intersection tests and distance computations between convex polyhedra, SOLID relies on the Qhull library for convex hull computations.  Qhull is a free software library and is available for most platforms. Note that a properly operating SOLID library  can be compiled without using Qhull. However, it is recommended to incorporate Qhull for a better performance when polyhedra are used.


The FreeSOLID library is released under the terms of the GNU Library General Public License (see documentation).


SourceForge Logo FreeSOLID can be obtained from SourceForge.


Check out the following links related to collision detection:

Last updated on January 19, 2004 by Gino van den Bergen /