Character Controller
Capsule character
A character controller is used to move around characters in the physics world. The character is simplified down to a bounding volume and when it moves it does not do it in a physically realistic way. That is mostly evident on the player character in third-person or first-person games.
Dynamic vs Kinematic
There are two ways to make the character controller interact with the rest of the physics way. It can be dynamic or kinematic. With a Dynamic CC you get the basic physic and then you add special cases for when you do not need physics. With a Kinematic CC you add the special cases to get the everything including the physics to work.
Dynamic CC
A DCC is added as a shape to the physics system with a limit on rotation so it does not fall over. To move it around set the velocity or force.
Kinematic CC
Bounding volume
The character controller use a bounding volume to simulate the character and the two common ones are an AABB or a capsule.
An AABB has fixed rotation to avoid the problem of the player getting stuck when rotating. It is made up of a center position and an size vector.
A capsule has a center position, a height and a radius. The height is the distance between the two spheres at end end of the capsule. A capsule is a better choice for climbing stairs.
Changing volume
A way to change the size of the character volume if he crouch for example.
Auto Stepping
Moving
Links
https://forum.unity3d.com/threads/the-limitations-of-the-physics-api-and-creating-a-character-controller.142375/
btKinematicCharacterController.
btDynamicCharacterController
http://stackoverflow.com/questions/25605659/avoid-ground-collision-with-bullet/25725502#25725502
https://www.panda3d.org/manual/index.php/Bullet_Character_Controller
https://hub.jmonkeyengine.org/t/character-controllers-and-collisions/31318