그래서 새로운 프로그래머를 지향하는 Quaternion 기반의 3D 카메라를 작성하여 통합하고 사용하기가 매우 쉽습니다.Quaternion 기반 3D 카메라는 Quaternions 또는 Euler 각을 축적해야합니까?
처음 개발할 때 사용자 입력을 오일러 각도로 가져온 다음 해당 프레임에 대한 입력을 기반으로 한 쿼터니온을 생성했습니다. 저는 카메라의 쿼터니언을 취하여 입력을 위해 생성 한 것에 곱합니다. 그리고 이론 상으로는 입력 회전을 카메라 회전의 현재 상태에 추가하면 모든 것이 뚱뚱하고 행복 할 것입니다. Quaternions를 저장하고 추가하기 때문에 Quaternions를 축적하십시오.
그러나이 방법에 문제가 있음을 발견했습니다. 필자가 오일러 각도를 1 회전 만하더라도 더 많이 사용할수록 Yaw라고 말하면 일부 반복에서는 피치라고 불리는 피어싱이 반복됩니다. 그것은 사소했지만 꽤 용납 될 수없는 것이 었습니다.
나는 오일러 각을 축적하는 것이 더 낫다는 기사를 발견 했으므로 카메라는 오일러 각으로 현재 회전을 저장하고 입력은 각 프레임에 간단히 추가됩니다. 그런 다음 회전 매트릭스를 생성하는 데 사용되는 각 프레임에서 쿼터니온을 생성합니다. 그리고 이로 인해 부적절한 축으로의 회전 출혈 문제가 해결되었습니다.
그래서 어떤 Stackoverflow 회원이이 문제에 대한 통찰력을 가지고 있습니까? 그것은 일을하는 올바른 방법입니까?
변환 행렬 접근법도 마찬가지이며 오일러 각 기반 쿼터니온 클래스 (몇 줄만)에 연산 카운터를 추가하는 것은 그리 많은 노력이 아닙니다. btw 나는 원하는 변환 효과로 조금 엉망이 될 수 있기 때문에 너무 자주 정규화하지 않는 것이 좋습니다. 나는 보통 모든 64-128 작업을 정상화합니다. – Spektre
_ "이를 복구하려면 어떤 경우에도 오일러 각도로 다시 정규화해야합니다."_ - 이것은 전혀 사실이 아닙니다. 스케일 팩터는 쿼터니언 – Eric