LCP, internal error,ODE in general  driving M

OK, I’ve now tried ODE for about 6 months. It’s been a great learning process, before I knew nothing about physics engine, now I know alot more (of course).

What I can say now for sure though is…ODE IS NOT SUITED FOR CREATING ARTICULATED RAGDOLLS.

What I mean by this is, ragdolls who moves with the help of angular motors.

First I tried using only Amotors with joint balls and stops on the motors axises. Should work according to the manual, but NO, stops are not working on AMotors. So you can pose and move the ragdoll around, but once he goes limb (dies) he immediately turns into a pile of bones. Cute !

So fine, ok just wasted a month , now had to regroup.
Then I tried using hinge joints. They work pretty well, except its hard to simulate balljoints (shoulders,hips) using
only hingejoints. BUT ok, I found a way, I just used 3 hingejoints. Now he poses fine, he can move with different speeds. He can go limb as well. Problem is, after a while LCP Internal Error message turns up. Shortly after the dude explodes.
I tried to tweak every single parameter in ODE, but it doesnt matter.
I don’t believe that my ragdoll is so complicated that ODE cant handle it. It’s really doing NOTHING out of the ordinary. Except using Amotors, which is fairly new right ?

Some of there things are very clearly full of bugs. So the “ODE people” should have written this on the ODE homepage instead of acting as if everything is so stable and matured.

Sorry I’m just a little disappointed. Since ODE can’t solve my problem, does anyone know about other Java physics engines out there ? (or just bindings, like ODE).

Thanks for reading this,

NWBTON

The dismount games ( http://jet.ro/dismount/ ) seem to be using ODE quite happilly for ragdolls, perhaps you’re going about things the wrong way…?

[quote]The dismount games ( http://jet.ro/dismount/ ) seem to be using ODE quite happilly for ragdolls, perhaps you’re going about things the wrong way…?
[/quote]
I probably am…just frustratrating. Those are nice ragdolls but of the simplest kinds. I want to make ragdolls who walks and talks.

Do you subscribe to the ODE mailing list? Have you thought about asking your question there?

The collective ODE knowledge of that list surpasses that of this Forum and it is a very good place to ask ODE questions (that arn’t Odejava specific).

Will.

[quote]Do you subscribe to the ODE mailing list? Have you thought about asking your question there?

The collective ODE knowledge of that list surpasses that of this Forum and it is a very good place to ask ODE questions (that arn’t Odejava specific).

Will.
[/quote]
Your right, thank you for your advice.

Hmm it seems that when I scale everything up 10 times (including mass) it works.
Just an advice to everyone who has the same problem, scale everyting in the world with a factor of 10.

PS Sorry I doubted you ODE, your still the K-I-N-G !!

Hi,

I’ve got the same problem, but it doesn’t help to scale about a factor of 10. Please can you write some example values of your bodies after scaling. Maybe my values are still to small after scaling with 10.

Do you also scale the acting forces and torques, e.g. the gravity?

Thanx Ramona

try setting the mass AFTER you’ve added the bodies.

I do this already.

Any other idea?

Yes if its a ragdoll project…DONT use stepFast or quickStep(). They dont work with very complex joined
structures…only step() works.
try increasing maxStepsPerInteractions and or/stepsize.

I used ODE and AgentFX when creating ragdoll demos for Agency9, (http://www.agency9.se/demo/index.php?t=2 http://www.agency9.se/demo/index.php?t=1). I’m stepping the world using quickStep with a small time step, 0.01, and it works like a charm. The ragdolls are built using 12 bodies, 11 joints with no motor parameters. Controlling the joints with motors to get realistic movement sounds complicated, it seems better to use animations for walking and such.

stepFast works well just not with jointforces.
If you use predefined animations for walking etc. then whats the point ? then all you use physics for is death scenes.
Yes it’s complicated but if you can get it to work it’s so much more rewarding.
Theres a tremendous price to pay in performance though and I’m not really sure ode was designed for this.

Well, ragdolls are mostly used for death scenes in games (hence the term “ragdoll” :wink: ), are they not?
It just seems so hard to tweak angular motors to get the desired result.

Yes your right. but it’s allways fun making something different.
Problem is , is it “hard” of impossible ? If it’s just hard nothing should stop us.
Problem is, ODE seems to be a very old fashioned engine by todays standard, it’s free so noone’s complaining of course.
It’s superfast and reliable when you just want to stack boxes or create cars, but for more complicated issues ?

Maybe some of the commercial engines support it better (Novodex,Havok), but neither are for Java.

IMO physics animated characters are the future (it’s the only logical “next step”) but unfortunately neither
hardware or software support it very well right now. But just wait…

Now one question is : Is the java community ready to start a new project of modern open-source physic engine in pure java ?
I am, if i’m not the only one. However I’ve many projects started and I haven’t suffisant knowledge to make an entire physic engine, although I can do test / debugging / API specifications / documentation / linking with 3D scenegraphs.

The smart thing to do might be a java bind (jni) to Novodex, Havok or Meqon. Coding a physics engine is a major undertaking. Developing a bind to an existing also brings the benefit of being able to use their exporters and tools. ODE is a great physics engine, but since its not commercial it is not being developed as much as the commercial ones.

I think it’s not very depending on the physics engine, to make good human like movement with ragdolls, as long the physics engine also want’s to be reality near. Just think about how long a baby takes to learn to walk and it’s said that children learn fastest!!!
I’d say the only solution for that would be an AI (or genetic code), because the problem is much to complicated to be solved directly.