Skip to main content
GameDev.net gamedev.net
🔒 Locked

Need understanding/derivation of Bullet's 6D joint, angular part

Started by sjordan@giants-software.com Mar 14, 2025 at 8:05 AM 2 replies 2.1k views
Original Post
sjordan@giants-software.com
sjordan@giants-software.com

Hello everyone

This was intended to be posted to the pyBullet forum but the registration
there is nonfunctional.

We are in the process of adapting bullet's 6D joint constraint for some special
case use. In order to do that we need to exactly understand how bullet calculates
the constraint axes for the angular part. This is done in the function

btGeneric6DofConstraint::calculateAngleInfo()

https://github.com/bulletphysics/bullet3/blob/master/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp

The code calculates rotation errors in the form of euler angles and then
attempts to calculate the axes used for constraint resolution. The calculated axes
are not the euler axes and there is a comment which tries (and fails in our
case) to explain why other axes need to be used. There are hints in the comment
how to derive the formulas. The comment says '... write the expression for angle[0]
from GetInfo1 ...' but we don't know what kind of expression that should be.
We have done online research but haven't found any theoretical explanation that
would explain the formulas used in the code.

Any help is greatly appreciated.

sjordan@giants-software.com
sjordan@giants-software.com

Thanks for the link! Unfortunately I found nothing that would allow me to derive the
formulas used in the bullet code. I would also like to mention that we do understand the
basics of sequential constraint solver and joints, so the question was not about how to
do angular constraints in general. It's really about these particular formulas where
the first and the third axis are not taken to be the euler axes as I would naively expect.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.