Migrate from ODE to Bullet

Cirdan
Posts: 2
Joined: Mon Feb 19, 2007 12:39 am

Migrate from ODE to Bullet

Post by Cirdan »

Hello!

I'm thinking of moving from ODE to Bullet. But there are some things i'd like to know first, which i didn't find out myself:

1. Inertia Tensor. In the code i only found a 3 component tensor (vector3), which would mean only axis symmetric shapes, i think. is this true?

2. adding AND removing from compounds. I'd like to remove (or at least deactivate) shapes from compounds. is this possible?

3. correct inertia for compounds. in the compound code i only found the comment about "only aabb inertia for now". what the situation here?

4. is the axis sweep broadphase capable of handling huge distances ~1Billion km? It is a space game, and i'd use doubles.. what about clustering/islands?

Thanks
Gero
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA

Re: Migrate from ODE to Bullet

Post by Erwin Coumans »

Cirdan wrote:Hello!

I'm thinking of moving from ODE to Bullet.
Just keep in mind that Bullet is still actively developed and improved. Not all parts (especially constraint limits/motors) are at the same level as ODE yet.
But there are some things i'd like to know first, which i didn't find out myself:

1. Inertia Tensor. In the code i only found a 3 component tensor (vector3), which would mean only axis symmetric shapes, i think. is this true?
No. The btRigidBody is aligned with the center of mass and local inertia. However, you can still freely shift and rotate the collision shapes around this inertia-frame, by using a btCompoundShape. Some example code should be added to clarify this.
2. adding AND removing from compounds. I'd like to remove (or at least deactivate) shapes from compounds. is this possible?
Removal would be easy to support. You might want to re-compute the inertia tensor.
3. correct inertia for compounds. in the compound code i only found the comment about "only aabb inertia for now". what the situation here?
For most game applications, approximating the inertia tensor should be fine. If not, there is public domain code to solve this issue, if really necessary this can be added to Bullet.
4. is the axis sweep broadphase capable of handling huge distances ~1Billion km? It is a space game, and i'd use doubles.. what about clustering/islands?
Right now, Bullet's 3d axis sweep and prune uses fixed-point precision. This means that the size of the worlds needs to be pre-defined. For massive worlds, double precision axis sweep should be added. This is a minor change. However, the amount of objects is another issue. Sweep and prune slows down when the number of objects inserted into the world is much larger then say 10,000 objects. A multiple-broadphase scheme should be used.