Problem with programming virtual camera
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
Popular Topics
Advertisement