#include ".\thirdpersoncamera.h" ThirdPersonCamera::ThirdPersonCamera(void) { rot=0; yaw=0; dist=1; m_LookAt=Vector(0.5,0,0); } ThirdPersonCamera::~ThirdPersonCamera(void) { } void ThirdPersonCamera::setViewforBbox() { glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0,0,0,-m_EyePosition.x, -m_EyePosition.y, -m_EyePosition.z, m_UpVector.x, m_UpVector.y, m_UpVector.z); } void ThirdPersonCamera::SetViewandProjection(void) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(m_FovY,m_AspectRatio,m_NearClipDistance,m_FarClipDistance); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(m_EyePosition.x, m_EyePosition.y, m_EyePosition.z, m_LookAt.x, m_LookAt.y, m_LookAt.z, m_UpVector.x, m_UpVector.y, m_UpVector.z); } void ThirdPersonCamera::Move(Axis axis, double distance) { switch (axis) { case AXIS_X: rot+=distance*3.14/40.0; break; case AXIS_Y: yaw+=distance*3.14/40.0; break; case AXIS_Z: dist-=distance; break; } Vector dir(cos(rot)*cos(yaw),sin(yaw),sin(rot)*cos(yaw)); dir=dir*dist; m_EyePosition=m_LookAt+dir; m_Orientation.y=rot/3.14*180.0; m_Orientation.x=-yaw/3.14*180.0; }