문제

나는 세계 좌표에서 5 점을 가지고있는 매우 간단한 3D 장면을 만들었습니다. 장면을 가로 질러 탐색하여 위와 아웃 벡터가 모두있는 카메라를 정의하고 싶습니다. 이 정보를 사용하면 모든 프레임에서 회전 매트릭스를 생성하며 카메라 좌표를 얻기 위해 벡터에 적용하겠습니다.

문제는 :이 방법을 사용하는 문제로서 짐벌 잠금에 대해 읽었지만이 경우에 일어날 것인가?

모든 프레임에서 회전 매트릭스를 생성하고 있으며 누적으로 회전하지 않습니다. 이 상황에서 자물쇠가 일어날 수 있습니까? 이 경우, 회전을 안전하게 적용하기 위해 무엇을 제안 하시겠습니까?

고맙습니다

도움이 되었습니까?

해결책

아웃으로 당신이 "앞으로"를 의미하고, 이것은 항상 up 벡터에 수직 인 경우, 아니요, 당신은 짐벌 잠금을 발견하지 못할 것입니다.

당신이하는 일은 위와 전방 벡터에서 방향 매트릭스를 생성하고 각 프레임을 적용하는 것입니다.이 프레임은 카메라를 우주에서 움직이는 상당히 일반적인 방법입니다. 유울러 각도를 사용하여 여러 회전을 적용하지 않으며, 이는 짐벌 잠금의 원인이 될 수 있습니다.

참고 행렬을 만들려면 위와 전방 벡터에서 "왼쪽"(또는 오른쪽) 벡터를 만들어야합니다. 이것에 대한 좋은 소개입니다 여기 -이 예제는 카메라 매트릭스에 회전을 적용합니다. 이는 전적으로 선택적인 단계입니다.

Wikipedia는 좋은 설명을 가지고 있습니다 짐벌 잠금.

다른 팁

매트릭스 접근 방식을 사용하여 회전 행렬 (x, y, z)을 생성 한 다음 최종 회전 행렬을 얻기 위해 곱할 때 짐벌 로크 문제가 발생합니다. 내가 당신을 이해한다면, 당신은 벡터를 사용하여 각도 (알파, 베타, 감마)를 얻으면 매트릭스를 계산하고 마지막으로 - 최종 로이션 매트릭스를 얻도록 곱합니다. 그렇다면, 당신은 짐벌 잠금을 만날 것입니다.

이 문제를 제거하는 한 가지 방법은 사용하는 것입니다. 쿼터니언 계산을 위해.

또한, 여기 이를 구현하는 방법에 대한 OpenGL 자습서를 찾았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top