Problem with programming virtual camera

Started by
-1 comments, last by emre2345 14 years, 9 months ago
Hi everyone. I am studying programming a virtual camera. I used quaternions but still trapped with gimbal lock. below there are my yaw, pitch functions and section of setting view matrix. What is wrong with it? void Camera::yaw( const float &angle ) { Quat yawQuat; float ang = D3DXToRadian(angle); D3DXQuaternionRotationAxis(&yawQuat, &Vec3(0, 1, 0), ang); D3DXQuaternionMultiply(&_orientation, &yawQuat, &_orientation); } void Camera::pitch( const float &angle ) { Quat pitchQuat; float ang = D3DXToRadian(angle); D3DXQuaternionRotationAxis(&pitchQuat, &Vec3(1, 0, 0), ang); D3DXQuaternionMultiply(&_orientation, &pitchQuat, &_orientation); } *------------------------------------------------------------------------* D3DXMATRIX viewMat; D3DXVECTOR3 tempVec(_cam->getPosition().x, 0, 0); _cam->transformVector(&tempVec, Vec3(0, 0, 1), _cam->getOrientation()); tempVec = _cam->getPosition() + tempVec; D3DXMatrixLookAtLH(&viewMat, &(_cam->getPosition()), &tempVec, &_cam->getUpVector()); _device->SetTransform(D3DTS_VIEW, &viewMat);

This topic is closed to new replies.

Advertisement