2012-04-24 3 views
1

나는 내가 바라는 방향으로 물체를 던지고 싶은 작은 게임을 만들고 있습니다. 문제는 내 (카메라) 방향이 모델/뷰 매트릭스에 의해 결정된다는 것입니다. 그리고이 행렬은 시스템에 의해 제공됩니다 (안드로이드 장치에서).모델/뷰 매트릭스의 OpenGL 카메라 방향 벡터

throw 된 객체의 속도 벡터로 사용할 벡터를 계산하려면 어떻게해야합니까?
일부 벡터를 행렬에 곱하려고 시도했지만 결과가이를 달성하는 데 도움이되지 않습니다.

매트릭스는 회전 부분 (축척, 비뚤어 짐 또는 병합 없음) 만 포함합니다.
OpenGL ES 1.1과 함께 작업하고 있지만 문제가되지 않을 수도 있습니다.

this answer 다음은 각 축을 중심으로 회전 각도를 얻을 수 있었지만 여전히 속도 벡터를 만드는 방법을 알지 못합니다.

편집 : 어떤 방법 으로든 모델/뷰 행렬을 회전시키고 객체 을 던지고을 마주 치게하려고합니다. 나는 결국 목표물로 가속화 할 목표물이 필요하다. 나는 정확한 궤적을 계산하는 데 아무런 문제가 없다. 나는 카메라가 직면하고있는 정확한 벡터를 안다.

도움 주셔서 감사합니다.

답변

2

모델 뷰 매트릭스 의 처음 3 개 열은 뷰 좌표계의 기준 인입니다. 필요한 모든 것은 세 번째 열 (또는 행, 카메라에서 세계로 또는 세계에서 카메라로 이동하는 경우에 따라 다름)입니다.

+0

답변 해 주셔서 감사합니다. 그러나 나는 당신이 그것을 묘사하는 방식대로 작동하게 만들 수 없습니다. glLoadIndenity 이후 행렬을 X 축 주위로만 회전하면 잘 동작합니다. 그러나 내가 Z를 중심으로 회전하고 X를 중심으로 (역순으로 GL에서) 회전하면 벡터는 여전히 Z 회전이없는 경우와 같은 방향을 가리 킵니다. 이해할 수 있습니다. Z 축 주위를 회전하면 행렬의 세 번째 열을 변경하지 않기 때문입니다. – sidon

+0

실제로 열을 추출하고 있습니까? OpenGL은 행렬 주요 순서로 행렬을 정렬합니다. 따라서 코드에서 "행"과 "열"을 교환 해보십시오. – datenwolf

+0

예 열을 추출 중입니다. 나는. M은 OpenGL에서 제공하는 4x4 행렬 (float [16])입니다. M [8], M [9], M [10] – sidon