2012-04-03 3 views
0

Android OpenGL을 사용하여 객체를 점 A에서 점 B로 이동하고 동시에 로컬 Z 축을 중심으로 회전해야합니다. 나는 지난 3 일 동안 자습서를 읽었으며 모두가 당신에게 약간의 정보와 힌트를주었습니다. 그러나 아무도 초보자를위한 위에서부터 아래까지 설명 할 수는 없습니다.Android OpenGL 객체 번역 및 회전

가 나는 또한 로컬 축을 중심으로 점 A의 객체를 회전하는 방법을 알고에만 B. 을 가리 키도록 지점 A에서 개체를 변환하는 방법을 알고 I을 (원점 번역을 회전, 그것을 다시 번역) 같은 시간에 회전 및 번역하는 방법을 모르십시오.

나는 원점으로의 변환, 회전, 뒤쪽으로 번역을 시도한 다음, 포인트 B로 번역하려고 시도했습니다. 작동하지 않으며 왜 회전이 오브젝트 축을 엉망으로 만들었는지 알 것 같습니다. B가 잘못되었습니다.)

A(-x1, y1 , -z1) 
B(-x1 + deltaX, y1 + deltaY, -z1 + deltaZ) 
_gl.glTranslatef(x1, -y1 , z1);   
_gl.glRotatef(degrees, x1, -y1 , z1);        
_gl.glTranslatef(-x1, y1 , -z1); 
_gl.glTranslatef(deltaX, deltaY, deltaZ); 

축이 회전하는 방식을 고려해야합니다. 어떤 사람들은 quaterninons 또는 회전 행렬 등을 사용하여이를 수행 할 수 있다고 말합니다. 그러나 이것을 해결하기 위해 api를 사용하기위한 충분한 OpenGL 지식이 없습니다.

누군가가 설명해 주시겠습니까? somecode 함께?

미리 감사드립니다.

+0

나는 생각하지 않는다 : 코드에서

당신이 실제로 당신이 다음을 수행해야합니다이 경우에는 자신의 기원 주위 물체하지만 몇 가지 다른 점을 회전하지 않으려는 것 같아 당신이하려고하는 것을 완전히 이해하십시오. 달성하고자하는 효과에 대해 더 자세히 알려주십시오. 실세계에서이 회전/뒤집기 효과를 비유합니까? 당신은 그것을 움직이게하고 있습니까, 아니면 일회성, 영구 작동입니까? 나는 glLoadIdentity(), 회전 한 다음 변환해야한다고 생각합니다. – manmal

+0

이 게시물의 첫 번째 문장은 다음과 같습니다. "A 지점에서 B 지점으로 개체를 이동하고 주위를 회전해야합니다. 같은 시간에 로컬 Z 축 "으로 설정됩니다. 실시간으로 비유 할 수 있습니다. 나는 항공기를 가지고 있는데, 코에 프로펠러가 있습니다. 프로펠러는 별도의 물체로 항공기와 동시에 번역하면서 로컬 Z 축을 중심으로 회전해야합니다. 나는 프로펠러 만 번역하는 방법을 알고, 항공기가 움직이지 않는 동안 프로펠러를 회전하는 방법도 알고 있지만, 동시에 회전 및 변환 할 때 프로 펠러는 예기치 않은 궤적을 취합니다. –

+0

그 일을하겠습니까? : 일부 변수에서 전역 번역을 추적합니다. "프로펠러"를 그릴 때 : glLoadIdentity, 회전, 국지적으로 번역 (항공기에서 프로펠러의 위치), 전 세계적으로 (항공기의 위치) 번역하십시오. – manmal

답변

0

다음과 같은 코드가있는 경우 :이 지역의 z 축입니다 다음 (x, y, z)로 번역 주위 목적은 첫째 회전합니다

glTranslate(x, y, z); 
glRotatef(angle, 0, 0, 1); 
drawObject(); 

합니다. 그리기 호출과 가장 가까운 변환 호출이 먼저 발생합니다.

glTranslate(x, y, z);       //Transform 4 
glTranslate(origin.x, origin.y, origin.z); //Transfrom 3 
glRotatef(angle, 0, 0, 1);     // Transform 2 
glTranslate(-origin.x, -origin.y, -origin.z); // Transform 1 
drawObject(); 
+0

"그리기 호출과 가장 가까운 변환 호출이 먼저 발생합니다." 그것이 지난 3 일 동안 포럼을 읽었을 때 배웠던 가장 가치있는 정보입니다. 내 모든 전화는 역순으로 이루어져야했습니다. 그것은 매력처럼 작동합니다. 고마워. –