[ODE] complete 3D Characters with physics?

Nate W coding at natew.com
Tue Mar 12 15:58:01 2002


On Tue, 12 Mar 2002, Dennis Jan Franken wrote:

> Has anybody tried to simulate a fully articulated 3D Character with
> ODE, and can give me some expirience?  That would mean simulating 22
> bones minimum, or about 60 more with fingers and toes, using hinge
> joints and ball and socket joints with rotation limits.

I'm using a 1.4mhz Athlon and a GeForce 3.  I have not tried modelling a
human form yet, but I have tried snakes and 'manypedes' with lots of
joints.  

I can get consistently good (realtime) performance from snakes with ~20
bodies.  My snakes are made from chains of boxes connected with hinges.  
When the boxes are touching the ground with their corners, performance is
good; when many of the boxes have their sides contacting the ground,
performance drops quite a bit.  Box-groundplane collision does not have
the single-contact-joint shortcoming discussed earlier today (that's only
a concern with box-box collision), so it's not unusual to get three ground
contact points per box, and that ends up needing a lot of computing power.

I have a 'manypede' generator (milliepede, centipede, manypede, right?),
and each segment consists of two legs with three joints each, plus two
central bodies with x- and y-axis joints to allow the critter to bend on
both axes.  With four such segments, things start to slow below realtime.  
That's ~32 joints and about as many bodies, plus a ground contact or two
for each of the feet.

I don't know if you've seen the MPEGs I mentioned earlier, but those
simulations all run in real time, except maybe the 'dog.' That one I think
is right on the edge of my computer's ability to run in real time.

I should add that my application is configured so that the maximum
'virtual elapsed time' between simulation steps is 15ms.  That's about 60
frames per second.  As long as the ODE math gets done in 15ms, I get
realtime simulations... if it takes longer, the simulation runs in
Matrix/Max Payne "bullet-time." :-)  You could maybe go down to 40hz
(25ms) without too much stability trouble, but I'm not sure.

IIRC, the memory required for everything I've mentioned here is under 8
megabytes.  Half that amount will work most of the time, but when a lot of
boxes sit squarely on the floor, number of contact joints drives the
memory requirement up sharply.

> Is this reasonably possible with speed, stability and memory?

My guess is that the 22-bone figure will probably work, but I'd hold off
on the 60-bone fingers-and-toes approach for now.

My suggestion is to simplify further still - just model feet, shins,
thighs, a couple of spine segments, upper and lower arms, and a head.  
That should almost guarantee some extra CPU power for things other than
physical simulation.

-- 

Nate Waddoups
Redmond WA USA
http://www.natew.com