
Software Library for Interference Detection
Version 1.0
Contents
Introduction
SOLID 1.0 is a library for interference detection of three-dimensional
polygonal objects undergoing rigid motion. The shapes used by SOLID are
sets of nonconvex polygons without topological constraints (polygon soups).
An object is an instance of a shape. A shape may be used to instance multiple
objects. Motion is given by changing the position and orientation of each
object's local coordinate system.
The
position and orientation may be set either by using a vector and a non-zero
quaternion, or by using a 4x4 column-major matrix as used in OpenGL.
As SOLID evolved, VRML97
came to be. I've tried to keep the API flexible enough to allow fast and
easy communication with a VRML browser. Some features that are useful in
this context are:
-
Models are composed of nonconvex polygons, without topological
constraints (polygon soups). No polygon triangulation necessary.
-
Collision response is defined by the client by means of call-back
functions. Response may be defined per object pair, for all pairs containing
a specific object, and as default for all pairs of objects.
-
Objects are refered to by client-defined pointers.
Response may be simple or smart. Simple response uses no
collision data. Smart response uses a list representing the set of intersection
segments of the intersecting pair of polygons.
The library exploits frame coherence by maintaining a
set of pairs of proximate objects (incremental sweep and prune of axis-aligned
bounding boxes). The update time for this set is small for scenes with
much frame coherence. This feature is optional and may be turned on/off
at any time during a simulation.
Requirements
The library is written in standard
C++ and relies heavily on STL.
Currently it compiles under GNU g++
version 2.7.2. The library has a standard C API and can be linked to both
C and C++ applications. In order to link it to C applications you need
the libstdc++ library.
License
The
SOLID library and accompanying C++ classes for 3D transformations are released
under the terms of the GNU Library General Public License (see documentation).
This means that you can do anything with the source code, as long as you
do not try to own it.
Download
Current SOLID is version 1.01a. It is available for downloading
in any of these archived formats:
Installation
The README file has instructions on how to build and install
SOLID for your platform. In case you have a recent GNU developers environment
installed simply typing make in the root of the distribution directory
will suffice.
Demo
Smart response is demonstrated in a demo application written
by Elisabeth Melby. The demo source is available for downloading in the
following archived formats:
Besides the SOLID library, you need to have Mesa
installed in order to be able to compile the demo. Mesa is a freely available
OpenGL implementation. Questions regarding compilation and use of the demo
should be sent to liesbeth@win.tue.nl.
Differences between SOLID and V-COLLIDE:
-
No polygon triangulation needed for SOLID. Shapes are composed
of non-convex polygons. This saves effort and memory since, for n
> 3, a polygon of n vertices takes up less space than n-2
triangles.
-
SOLID allows multiple instances of a model.
-
SOLID refers to objects by client-defined pointers
-
SOLID handles response by means of call-back functions, which
allows for faster and more flexible collision handling.
-
SOLID uses hierarchies of axis-aligned bounding boxes (AABBs)
for finding the possibly colliding pairs of polygons.
accesses
to this page since August 26, 1998.
Last updated on August 20, 1998 by Gino van den Bergen / gino@win.tue.nl