[ODE] Breakable Joints
shalinor at gmail.com
Thu Aug 31 07:52:46 MST 2006
> > - Can you explain the advantage over your code over the existing
> > approach?
> I think the key advantages are clarity and ease of use - to a new
> user, it's very clear how to achieve the desired effect of a joint
> breaking when a given force or torque exceeds a limit. Setup for this
> condition is easy to setup and can be left for to ODE manage.
Conditions that ODE brings about internally are very, very hard to
react to in external code.
In this case, for instance, a car never just has its wheel "fall off."
The axel snaps (KAPAW!), the car should clang down on that side and
skid around in a circle throwing off sparks, the guy riding the car
should freak the heck out, etc.
You could also argue that it would be useful for ragdolls, but again,
that's utterly useless. A ragdoll's limb can't just "fall off" -
you've got to modify or load the visual mesh it's attached to,
probably play a sound effect, and assumedly spawn a particle effect.
It makes far more sense to just manually modify the phys mesh and
spawn an "arm" mesh when you detect the conditions that break the
There's too much involved in what happens when a joint breaks in a
real application to make this sort of internal evaluation useful.
It's only of use in physics demos where all that needs to happen is
the flat-shaded object falls apart silently.
... and I would argue that giving users this feature wouldn't make ODE
any friendlier. It would present a friendly image, then frustrate the
users as soon as they tried to implement that feature into a game
This is a lot like the ray car / avatar problem. A generic avatar /
"car" class might well make initial users happy, but would be
absolutely useless as they got past "physics demo" stage.
So, solve the problem the same way. Set up a new demo to sit beside
the excellent Ray Car example, and in it provide a properly-integrated
breaking joint complete with world responses. Or, if you're so
inclined, add it to Ray Car (but that would seem to muddy what is
currently a pretty good and simple example app).
More information about the ODE