An idea is: Trace above. If the trace hits then the player could duck.. All the while following the gravity algorithm. This combined with good collision detection should prevent the camera from "looking through" meshes.
Gravity is covered in the AUMS I think its in the 70's