[ODE] enhanced ODE collision API

Russ Smith russ at q12.org
Wed Oct 23 21:48:02 2002


hi all,

erwin and others have been working hard developing extensions to ODEs
collision functionality for the past little while, and i am finally
getting around to integrating this work into ODE.

as a first step, i am publishing my proposed extensions to ODE's native
collision API. please read the updated collision section in:

        http://q12.org/ode/ode-new-collision.html

the new features are: heirarchical spaces, ability to collide spaces
with single geoms, ability to collide spaces together, geom groups are
now spaces, geoms have 'category' and 'collide' bits for early culling,
better definition of function behavior, other stuff i forgot.

note that this is 99% backwards compatible with the existing API,
except for two points noted below. erwin, this API is not exactly the
same as your work, here's where it differs:

  * colliding a geom with a space (or a space with a space) is handled
    with dSpaceCollide2(), not dCollide() - this makes things simpler i
    think, and gives the user the same degree of control.
  * spaces do not need to be explicitly locked before use. rather, the
    spaces will maintain the locked state internally and trigger an
    error when there are any violations. the spaces will detect geoms
    that do not move and precompute e.g. bounding boxes and internal
    collision data structures
  * there is no geom disable/enable. you can delete and add a geom to a
    space to get the same effect.

incompatabilities with the current API are:

  * the dXXXSpaceCreate() functions now take a space argument, which can
    just be set to 0 to get the existing behavior.
  * geometry groups have a slight behavior change if you want self
    intersection - see the doc.

please provide feedback about this new API. erwin - any comments? does
this API work for you? is there any missing functionality?

david - i think you mentioned that geoms might want to be interted into
multiple spaces. can you give me a use case for this? - in the current
API each geom has just one parent.

after getting this API implemented i will focus on integrating erwin's
ray and trimesh work, then adding the cylinder class. there is also a
new quadtree space that is further down the list.

russ.

-- 
Russell Smith
http://www.q12.org