증강 현실 애플리케이션의 경우 일부 슬램 알고리즘을 사용하여 휴대 전화의 현재 방향을 예측합니다.카메라 매트릭스에서 한 축의 회전을 반전하는 방법 (예 : OSG CameraViewMatrix)
알고리즘 (LSD-Slam)은 현재 포즈를 SE3 거짓 그룹 형태로 제공합니다 (Sophus::Sim3f 사용). 이 권한이있는 경우이 유형은 카메라의 Viewmatrix로 해석 될 수있는 행렬을 포함합니다. 초기화 후, 예를 들어 행렬은 다음과 같습니다.
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
3D 콘텐츠를 시각화하기 위해 OpenSceneGraph를 사용합니다. Fortunatley, OSG에서 직접 뷰 매트릭스를 사용하여 카메라 위치를 설정할 수 있습니다
camera->setViewMatrix(matrix);
을 지금, 나는이 코드를 실행하면 일이 내가 Y (롤) 또는 Z (요) 중심으로 회전하는 경우 잘 작동하는 것 같다. 그러나 X (피치)를 중심으로 회전 할 때 OSG의 디지털 카메라는 예상했던 것과 정확히 반대되는 것처럼 보입니다.
예 : 카메라 앞에 3D 모델을 직접 상상해보십시오. 그런 다음 천천히 카메라를 위쪽으로 (X 주위로) 기울이면 3D 모델도 위쪽으로 이동합니다. 실제로는 맨 아래쪽 끝에서 화면을 벗어나야합니다. 다음 그래픽을 사용하여이 동작을 설명하려고 시도했습니다.
적절하게 해결할 수있는 해결책이 있지만, 몇 시간이 지나도 해결할 수 없습니다. 제가 올바르게 이해했다면, 첫 번째 열은 특정 축 주위의 회전을 나타내므로 단일 벡터를 뒤집어 봤습니다. 이 않았다 일부 시도 정말 피치-문제를 해결하는 동안
u u u 0 -u u u 0 -u -u -u 0
v v v 0 => -v v v 0 ... v v v 0
n n n 0 -n n n 0 n n n 0
0 0 0 1 0 0 0 1 0 0 0 1
, 그들은 다음 다른 축을 엉망 .. 항상 적어도 하나 개의 축에 잘못이있는 것 같습니다. 아무도 내가 이것을 해결할 수있는 단서가 있습니까?이 문제에 대한 모든 힌트를 보내 주시면 감사하겠습니다.
감사합니다, 한/colums 도움이되지 않았다 오일러 각도로, 나는 각각 따로 각 축의 회전을 설정 할 수 있었다. Sophus를 다시 확인하기 위해 당신의 충고를 따랐습니다. 나는 당신의 대답을 받아 들였지만 비슷한 문제를 놓고 누군가가 걸려 넘어지면 내 대답을 게시 할 것입니다. –