Saphyre2

Saphyre2 is a C++ library/engine for animating 3D objects by several animation techniques (from simple Keyframed animation to complex physics based simulation) in a unified framework.

Even though the main effort is directed towards offering fast and robust Physically Based Animation, achieving seamless integration between PBA and other "traditional" animation methods (Keyframes, Animation Curves) and Control is also of foremost interest.

Have a look at What the FAQ? for further enlightment and some bad jokes...

Several kinds of Connectors ("Geometric Features") can be defined on a physical object. Connectors can be linked by constraints or affected by forces and impulses in an object type independent way.

Several hard and soft Constraints or Joints that can link a pair of features (Connectors) defined on any kind of physical object. These include: Point to Point (Ball and Socket), Hinge, Point on Surface, Point on Curve, etc...

Control: Each DOF can be animated by Saphyre2 or controlled externally.

Subsystem based architecture: Saphyre2 is divided in a few subsystems (Kernel, Integrator, Constraint Solver, Collision Detector, Collision Solver, Contact Solver...) which only colaborate through a clear interface defined in an Abstract Base Class (ABC) for each one. This allows selecting and switching the implementation of any Subsystem at run time or even reimplementing it transparently.

Configurability and tradeoffs: Some aspects can be individually configured for each System:

Precision

Timestep

Integration Method

Constraint Solver

Collision Solver

Collision Detection Frequency

Contact Solver

Object auto-freezing: Resting or very slow moving objects can be automatically skipped by the simulation until they come to life again due to some external or internal interaction.

SEGUR? Simple collision detection library COLD included: Though Saphyre2 is designed to be independent from the collision detection library used in the application, a very simple lib called COLD is provided for testing and demostration purposes.