[ODE] Re: ODE/Blender

nlin@nlin.net nlin at nlin.net
Sat Oct 19 07:19:02 2002


On Fri, Oct 18, 2002 at 08:40:11PM -0400, Russ Smith wrote:
[reordering a bit...]

> of course i should just try out your work in blender - but i have found
> it (blender) even more difficult to use for the ininitiated than 3DSMax,
> which is saying something.

The Blender UI is about as intuitive as that of vi or emacs. Hard to learn,
but very fast and powerful once you do know it.

See http://www.cse.cuhk.edu.hk/~wmpang1/blender/blen_ui/blen_ui.html
for a good introduction. It's somewhat old, but still relevant for the
basics.

> > This physics subsystem in the real-time game engine is what I am
> > working on, so that Blender real-time games can have dynamic objects
> > controlled by ODE. (The previous Blender game physics were
> > impulse-based.)
> 
> ah ... how are the dynamical properties of objects set in blender? i
> have in mind something where you select two objects, add a joint at a
> specific position, drag the low/high limits (some kind of draggable
> widgets that surround the joint), pop up a dialog box for the
> joint/body/surface properties, etc etc.

After reading the above tutorial, add a mesh, add a new material to the
mesh, and in the MaterialButtons look for a small button "DYN". This
controls dynamic properties of the material connected with the mesh.
E.g. friction, restitution, or some special Fh force on slopes (for
the old physics, currently unused I think).

Another place to enter material properties is by the GameButtons. Select
a mesh, press F8 to go to the GameButtons, then click on the small "Actor"
button, at which point some more buttons will appear, then click on
"Dynamic" and "Rigid Body" (the old physics system had both "fake" dynamics
and rigid-body dynamics, which is why you had to explicitly select "rigid
body"; currently there is no longer any distinction between "Dynamic" and
"Rigid Body" that I am aware of). At this point you can set the mass of
the rigid body object, some damping properties, and some other properties
which are probably outdated and were for the old physics system (like the
"form factor").

To select the bounding volume for an object, select the object, go to the
EditButtons (press F9), and at the left activate the button "Bounds" then
select either "Box" or "Sphere". This controls whether the physics system will
use a sphere or a box for the rigid body. "Polyheder" is also an option, which
will eventually cause a tri-mesh to be generated using Erwin de Vries's
triangle collider. There are currently some bugs with the bounding volume
selection (see the ToDo list in OdePhysicsController.cpp)

As for joints or constraints, Blender already has a constraints window
designed for animation. You can constraint two objects to have the same
location. By creating "empty" or "dummy" objects, and using these as
parents of "real" objects, you can get point-to-point constraints in
the modeler.  The game engine could use this information for generating
a ODE p2p constraint.  There are some other simple constraints like
"track to" or "copy orientation".  The current constraint types are designed for
animation/modeling help, but we could add new constraint types for physics,
which would then be used in the game engine. Again see OdePhysicsController.cpp
for notes on how this might work.

Blender may be a bit confusing at first, but it a very powerful program and
is worth learning.

-Norman