2009-06-14 7 views
1

OpenGL에서 다양한 축의 카메라 회전을 얻으려고합니다 (그러나 Java, LWJGL 및 jME를 사용). 카메라 객체를 사용하면 방향을 Vector3f로 얻을 수 있지만 구성 회전을 얻는 데는 효과가없는 것 같습니다. 각 축이 다른 축에 연결된 것처럼 보입니다. 옵셋이있는 각도 구성 요소가 포함 된 toAngleAxis는 빠른 해킹 이었지만 대부분의 상황에서는 제대로 작동하지 않습니다. 안타깝게도 수학에별로 좋지 않습니다. 그렇지 않으면이 문제를 해결할 수 있습니다 :) 다시 말하면, 0 라디안에서 2 PI 라디안까지 X, Y 및 Z 축이 구성 요소 화되고 라디안으로 필요합니다.OpenGL의 X, Y 및 Z 축에서 카메라 회전을 라디안 단위로 얻으시겠습니까?

아무도 도와 줄 수 있습니까? 회전 천사 얻기 미리

환호 덕분 크리스

답변

1

는 구면 좌표로 직교 좌표에 주어진보기 벡터 변환 요구한다. 수식은 wikipedia입니다.

viewvector = <x, y, z> 

r = sqrt(x² + y² + z²) 
phi = arctan2(y, x) 
theta = arccos(z/r) 

뷰 벡터에서 두 개의 회전 천사 만 얻을 수 있습니다. 세 번째 회전 각을 얻으려면 투영 평면 x 또는 y 축을 알아야합니다.

+0

뷰 기준점과 뷰 평면이 필요합니까? –

+0

http://www.fsz.bme.hu/~coll/papers/applets/doc/images/world3D.cameras.Camera3D.Image01.gif에서 유용한 그림을 발견했습니다. 투영 평면 X 또는 Y는 어떻게됩니까? 축은 이것과 관련이 있나? y 업 또는 z 업 좌표 시스템에 Vector3f를 사용하는 것만 큼 간단합니까? 건배 –

+0

변형해야하는 뷰 평면입니다. 그리고 뷰 평면 x 및 y 축 (흔히 위쪽 및 오른쪽 벡터라고 함)은 롤 각도를 결정하는 데 필요합니다. 즉 롤 방향은 카메라를 뷰 방향으로 회전시키는 것입니다. http://techpubs.sgi.com/library/dynaweb_docs/0620/SGI_Developer/books/Perf_PG/sgi_html/figures/04.4.plane.rotation.gif –

3

오일러 각도, 요/피치/롤 및 쿼터니언 방향에 대해 읽는 것이 좋습니다. 이 주제는 관련된 모든 것을 이해하는 데 도움이됩니다. 올바르게 이해한다면 지정된 방향에서 오일러 각을 구성하려고합니다.

오일러 각에 대한 작업은 code for some algorithms을 참조하십시오. 특히, 나는 당신이 원하는 것이 setDirection 메소드라고 믿는다.

방향 벡터에서 요와 피치를 제공합니다. "롤"은 방향 벡터 (또는 단일 쿼터니언 회전으로 지정된 방향)에 대한 회전이 필요하기 때문에 2 회전 만하면됩니다.

+0

불행히도 setRotation 메소드를 사용할 수 없습니다. 다른 시스템이 있습니다. 카메라에 작용하고 나는 개최 된 카메라 회전을 변환해야합니다. 또한,이 시스템은 카메라의 전방 벡터를 곱하여 앞으로 움직이게하는 것과 같은 작업을 수행합니다. –

+1

필요한 실제 수학을하기 때문에 setRotation()을 지적했습니다. 특정 벡터 (회전), 피치 (pitch)와 요 (yaw)를 얻는 방법 (그것을 만들기위한 2 회전). 실제로 회전을 "설정할"필요는 없습니다. 이것은 회전을 발견 할 수있는 방법을 제공합니다. –