[ODE] Inconsistent joints

Roland Plüss roland at rptd.dnsalias.net
Fri Sep 1 10:07:03 MST 2006

Looking closer at the joint code I noticed some inconsistency in there
which is most probably the cause for my problem. Joints like the ball
joint calculate during each interval ( in setBall(...) ) the c-value
depending on the "current" situation. Hence no matter what correction
has been done by other constraints the correct error is used to
calculate the correction force. Now with the contact joint something is
wrong there. The c-value is "static" ( !! ) instead of dynamic. Straight
from the code:

  dReal k = info->fps * erp;
  info->c[0] = k*j->contact.geom.depth;

It is assumed that the depth is recovered gradually over the entire
simulation step but this is not true. After the "New Joint Guide" the
c-value in the contact joint is calculated like this:

c = ( ERP / s ) * nT * [ ( p1 + a1 ) - ( p2 + a2 ) ]

Hence the error ( penetration depth ) between the two collision points (
which are identical on contact ) varies over the run of a simulation
step but the code above assumes that the error is "constant".

In my opinion there's something wrong there or did I overlook something?


Leader and Head Programmer
- Game: Epsylon ( http://epsylon.rptd.dnsalias.net/ )
- Game Engine: Drag(en)gine (
http://epsylon.rptd.dnsalias.net/dragengine.php )
- Normal Map Generator: DENormGen (
http://epsylon.rptd.dnsalias.net/denormgen.php )

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 252 bytes
Desc: OpenPGP digital signature
Url : http://q12.org/pipermail/ode/attachments/20060901/7e8d5887/signature.bin

More information about the ODE mailing list