Updating physics on object in
Motion states for objects communicate movement caused by forces in the physics simulation to your program.
There are some important exceptions you need to remember.
Motion States are a way for Bullet to do all the hard work for you getting the objects being simulated into the rendering part of your program.
In most situations, your game loop would iterate through all the objects you're simulating before each frame render.
Static objects don't move so there is no need to communicate movement. Kinematic objects are controlled by your program and the motion state works in reverse.
It communicates movement of your object to bullet so it can detect collisions with it.
This rate is not dependent on the actual framerate and it does not lock the framerate at 60fps.
Instead, when the actual fps is higher than the physics framerate the system will display interpolated positions for the physics objects.
If you want the non-interpolated position of a body [which will be the position as it was calculated at the end of the last physics tick], use bt Rigid Body::get World Transform() and query the body directly.
The Rigid Body Control for example includes a simple constructor that automatically creates a hull collision shape or a mesh collision shape based on the given input mass and the mesh of the spatial it is attached to.
This makes enabling physics on a Geometry as simple as “Control(new Rigid Body Control(1)); Bullet physics runs internally at 60fps by default.
If you just want to create a body, you can construct a bt Default Motion State with no parameters.
Since Ogre3d seems popular [and I'm using it myself], here's a full implementation of a motionstate for Bullet.