2009-12-10 3 views
2

나는 항상 카메라를 마주 보도록 비행기를 움직이는 비행기에 대해 "Look At"동작을 구현하려고합니다.어떻게 3D 공간에서 "Look At"동작을 구현할 수 있습니까?

내가 지금까지 알아 낸 것은 비행기가 가져야하는 정상을 알고 있으며 로컬 Z 축 주위의 회전이 항상 0이어야한다는 것을 알고 있습니다. 회전이없는 것으로 파악하는 것은 아주 간단한 작업이라고 생각했습니다. 값 (X, Y)하지만 지금까지 아무것도 찾지 못했습니다.

간단히 말해서, 평면과 회전 값을 사용하여 평면의 방향 정보를 추출하려면 어떻게해야합니까?

또는 누군가가 정상적인 것보다 더 나은 해결책을 가지고 있다면 환영 할 것입니다.

감사합니다.

+0

질문이 약간 분명하지 않습니다. 로컬 Z 축이 일반 것과 같습니까? Z 축을 기준으로 평면의 회전을 어떻게 정의합니까? 다시 말하면, 한 회전 값은 무엇을 의미합니까? – Beta

+0

예, 지역 Z는 법선과 같습니다. 회전 값은 XY 공간에서 평면의 회전을 나타냅니다 (Z 축은 피벗 임). 내 질문이 명확합니까? –

답변

1

이렇게 생각하십시오. 비행기의 로컬 좌표계에는 두 개의 벡터가 있고 카메라 로컬 좌표계에는 두 개의 벡터가 있습니다. 벡터가 정렬되도록이 좌표계를 변환하는 변환 행렬을 원합니다.

두 단계로 수행하십시오. 확실하지는 않지만, 당신은 눈의 벡터와 정렬하기 위해 평면의 법선을 회전하려고한다고 생각합니다. 이 두 벡터를 정규화하면 교차 곱으로부터 회전 축과 그 내적에서 회전 각도의 코사인을 얻을 수 있습니다. 이것을 사용하여 변환 행렬을 만듭니다.

이제 다시하고 싶습니다. 다시 한 번 확신 할 수는 없지만 평면의 로컬 Z 축을 카메라의 위쪽 벡터에 맞추고 싶다고 말하는 것 같습니다. 그래서, 그 변환 행렬에 의해 Z 축을 변환하고 다시 카메라의 위쪽 벡터에 그것을 매핑하는 회전을 계산하십시오. 두 번째 변환 행렬을 만들 때 사용합니다.

이제 비행기의 로컬 좌표계에서 카메라로 변환되는 단일 행렬을 얻기 위해 두 행렬을 곱하십시오.

그게 뭡니까?

+0

고맙습니다. 솔루션을 사용하여 (기술적 인 이유로 두 가지를 조정하면) 작동하도록했습니다. –

관련 문제