사용자가 경로를 설정하고 일부 지형 위에 날아 다니는 OpenGL ES 2.0 용 3D 앱을 작성 중입니다. 그것은 기본적으로 레일상의 비행 시뮬레이터입니다.비행 시뮬레이터에서 위쪽 벡터를 계산하려면 어떻게해야합니까?
경로는 스플라인에서 생성 된 일련의 점으로 정의됩니다. 모든 타임 슬라이스는 보간법을 사용하여 현재 위치를 전진합니다. 즉, p0에서 p1 사이를 보간 한 다음 p1에 도달하면 p1과 p2 사이를 보간하고 마지막으로 pN에서 p0으로 보간합니다.
gluLookAt와 비슷한 것으로 뷰 매트릭스를 만듭니다. 눈 좌표는 현재 위치이고,보기는 경로를 따라 다음 위치이며 위로 (0, 0, 1)입니다. 그래서 카메라는 다음으로 날아가고 하늘을 향해 Z가 가리키는쪽으로 보입니다.
하지만 이제 나는 돌아 서서 "뱅킹"하고 싶습니다. 즉, 상향 벡터는 반드시 직접적으로 곧은 것은 아니지만, 회전 속도에 기초한 변화이다. 나는 나의 현재 방향과 나의 마지막 방향을 안다. 그래서 은행을 어느 정도 증가 시키거나 감소시킬 수있다. 내적 제품은 회전 각도를 알려주고 교차 제품은 왼쪽 또는 오른쪽으로 내게 알려줍니다. 나는 은행 각도를 유지하고// + 70도 범위 내에서 적절히 증분 또는 감소시킬 수 있습니다.
나는 이것이 올바른 접근이라고 생각하지만, 그렇지 않은지 알아 내기 위해 그것을 구현하는데 오랜 시간을 할애 할 수있다.
나는 올바른 길을 가고 있으며 내가하려고하는 것을 보여주는 샘플이 있습니까?
제가 틀렸을 수도 있지만, 실제로 필요한 모든 회전 행렬이 아니며, 제로 행렬은 위로 향하는 것을 의미한다고 가정합니까? – TheAmateurProgrammer