2011-12-05 2 views
0

이것은 내 시선 벡터와 위쪽 벡터를 계산하는 방법입니다.gluLookAt의 불연속

ly = sin(inclination); 
    lx = cos(inclination)*sin(azimuth); 
    lz = cos(inclination)*cos(azimuth); 
    uy = sin(inclination + M_PI/2.0); 
    ux = cos(inclination + M_PI/2.0)*sin(azimuth + M_PI); 
    uz = cos(inclination + M_PI/2.0)*cos(azimuth + M_PI); 

경사 XZ 평면 방위각에서 시선 벡터의 라인의 각도 XZ 평면에서의 각도이다.

내 성향이 225도에 도달 할 때까지 제대로 작동합니다. 이 시점에서 어떤 이유로 회전에 불연속이 있습니다. (참고 225도까지, 나는 과거의 거꾸로 된 점을 의미한다)

이것이 왜 그렇게 생각되는가?

편집 : 신경 쓰지 마라. 알아 냈어. 방위각은 180 도가 필요하지 않습니다. 위쪽 벡터에 기울이기.

답변

1

저는 여러분이 90도 (pi)의 한계 각을 말하고 있다고 생각합니다. 당신이 얻는 것은 정상적인 행동입니다. gluLookAt를 사용할 때 카메라의 롤을 결정하는 데 사용되는 '위로'벡터를 지정합니다. 특수한 경우에 거꾸로 보이는 'up'벡터는 눈 방향 벡터와 평행하므로 카메라의 롤을 결정할 수 없습니다 (이 문제는 무한한 수의 솔루션이므로 임의의 하나이므로 gluLookAt에 의해 선택됨). 당신의 성향과 방위각을 사용하여이 '위로'벡터를 계산해야 할지도 모릅니다.

+0

미안하지만, (lx, ly, lz)는 내 시선 벡터이고 (ux, uy, uz)는 내 위로 벡터입니다. 즉, 모든 기울기에 대해 상향 벡터를 다시 계산합니다. 180도 기울기를 제거하면 위쪽 벡터가 완벽하게 작동합니다. – user813182

관련 문제