How to calculate camera roll...

Started by
1 comment, last by tmason 9 years, 8 months ago

Hello,

I have hopefully a simple question regarding calculating the roll of a camera.

I can calculate the yaw and pitch just fine using GLM:


CameraAxis = glm::cross(DirectionOfWhereCameraIsFacing, DirectionOfUpForPerson);
CameraQuatPitch = glm::angleAxis(CurrentCameraViewingSettings.Pitch, CameraAxis);
CameraQuatYaw = glm::angleAxis(CurrentCameraViewingSettings.Yaw, DirectionOfUpForPerson);

The first problem is calculating the roll of the camera. I tried this but my math is off as this doesn't work:


CameraQuatRoll = glm::angleAxis(CurrentCameraViewingSettings.Roll, CameraAxis);

This seems to me like another pitch calculation.

The second piece is accuratly combining the changed roll to find out where the camera is finally facing.

I do this for the yaw and pitch above by doing the following below:


CameraQuatBothPitchAndYaw = glm::cross(CameraQuatPitch, CameraQuatYaw);
CameraQuatBothPitchAndYaw = glm::normalize(CameraQuatBothPitchAndYaw);
DirectionOfWhereCameraIsFacing = glm::rotate(CameraQuatBothPitchAndYaw, DirectionOfWhereCameraIsFacing);

How do I also incorporate roll into this?

Thank you for your time.

Advertisement

Build qpitch, qyaw, combine for qPitchYaw which now holds the new camera forward after pitch and yawing, build qroll from this new forward direction, combine qroll with qpitchYaw for qPitchYawRoll the new orientation.

Build qpitch, qyaw, combine for qPitchYaw which now holds the new camera forward after pitch and yawing, build qroll from this new forward direction, combine qroll with qpitchYaw for qPitchYawRoll the new orientation.

Thanks, will try this out and report back.

This topic is closed to new replies.

Advertisement