Any success with Bullet's CharacterController?

You are right, Coppertop. I remember now. My appologies. I simply forgot about it.

I’d like to add another aspect to your comparison. The original post in this thread has been about “violent jitter” when moving around in a Wolfenstein3D level, and everything has been blamed on the “buggy” Bullet character controller. Well, the Bullet character controller might be incomplete, but it is not buggy. And I’m pretty sure that much of the “jitter” comes from bad normals for collision mesh triangles. Two adjacent triangles with significantly different normals cause problems. He probably just took the mesh he loaded, and fed it to the collision shapes.

There are different solutions for this problem, often called “welding”. Let’s have a look at how the various physics engines handle this:

1.) PhysX: Automatically applies welding (and a few other things) when cooking a mesh. Sidenote: when writing the PhysX wrapper for Panda3D I didn’t know much about such problems, and probably didn’t expose all of the parameters to control cooking.

2.) Havok: Does not automatically apply welding, but offers tool which do a very good job at welding, either during runtime or offline.

3.) Bullet: Has no tools for automatic wleding. At least I don’t know any. You have to provide the right normals yourself. Just to get it right: you could write tools (in Python) which do all this stuff, so it is possible to create good levels using Bullet. But there is no out-of-the-box support.

4.) ODE: Hmm, don’t know how ODE handles this, but I guess that ODE is similar to Bullet here.