IPSA Documentation


Welcome to IPSA

IPSA is an easy way to create physically realistic simulations by describing the scenery in the OpenInventor file format.

To make this possible IPSA extends the OpenInventor 3D API with nodes representing objects within the Open Dynamics Engine (ODE).

Currently, Coin3D is the only OpenInventor implementation we tested. However, any OpenInventor implementation should work.


IPSA is available under the ISC License which allows you to use IPSA together with any commercial OpenInventor implementation without requiring you to publish your code under an open source license.

There is however one exception.
In case of using the GPLv2 version of Coin3D together with IPSA the GPL demands from you to publish the created work under the terms of the GPLv2.

For details about the licenses see the links section.


Installation, Documentation and Developer notes

How it works

Most of the IPSA classes are Open Inventor nodes wrapping around the ODE internals (see the documentation of Coin3D for further information on Open Inventor nodes). Therefore, it is not necessary to know how ODE works. IPSA will handle this for you transparently.

IPSA also provides a set of extensible viewer applications (IpsaViewer and IPSRV) which can be used to view and interact with IPSA scenes.

Short example

#Inventor V2.1 ascii

# An instance of SoWorldPhysics is ALWAYS needed
DEF World SoWorldPhysics {
 # Define the gravity of the world
 gravity 0 -9.81 0

 # A nice color for the ground
 DEF GroundMaterial Material {
  ambientColor 0 0 1
 # Define the ground for the simulation. Otherwise the objects just fall through
 DEF Ground SoCollisionShapePlane {
  # Define a material type for the plane (optional)
  surfaceMaterial GREASY

 # Place the following box above the plane so that it can fall down
 DEF BoxToGroundTransform Transform {
  translation 0 0.5 0
 # A nice color for the box including transparency
 DEF BoxMaterial Material {
  diffuseColor 1 1 0
  transparency 0.5
 # Finally the Physics Box (the visualisation is created automatically)
 DEF Box SoPhysicsBox {
  # Define the mass of the box
  mass 15
  # Define the length of the edges
  dimension 0.2 0.2 0.2
  # Define a collisionshape for the box (also optional but needed if surfaceMaterial must be specified)
  collisionShape SoCollisionShapeBox{
   surfaceMaterial WOOD
example file box.iv (can be found in the iv subdirectory)


the example inventor file loaded into the IpsaViewer


now from a different angle

As seen in the example each scene contains at least an instance of SoWorldPhysics and an instance of SoCollisionShapePlane. Any subclass of SoPhysics and SoCollisionShape can be put inside of a world (besides every other Inventor node).

Furthermore it is possible to link objects together by using different kinds of joints. See the documentation of SoJoint and its subclasses for further information and the file ipsa_cubetest.iv in the iv subdirectory.

The best way to get the picture is to take a look at the contents of the examples and iv directories included in the IPSA package.

Who uses IPSA?

Additional Links

Get IPSA - Inventor Physics Simulation API at SourceForge.net. Fast, secure and Free Open Source software downloads
Generated on Sat Mar 10 20:00:13 2012 for IPSA by  doxygen 1.5.8