CameraMatrix 및 ProjectionMatrix
이론상의 CameraMatrix와 ProjectionMatrix
세계 좌표계로 표현된 [Xw, Yw, Zw]는 카메라의 외부 파라미터에 의해 [Xc, Yc, Zc]가 된다(카메라 좌표계).
이것은 카메라의 내부 매개 변수에 따라 [u, v]가됩니다. (아래 식의 X, Y, Z가 Xw, Yw, Zw)
오른쪽의 왼쪽 행렬이 CameraMatrix.
이 상태라면 CameraMatrix=ProjectionMatrix.
또한 오른쪽 중앙의 외부 파라미터는 ViewMatrix.
이 식과 같이 Model 좌표계로부터 세계 좌표계의 변환이 필요하지 않다면(원래 세계 좌표계의 점을 생각하고 있기 때문에),
ModelMatrix는 Identity로 좋기 때문에 (무시해서 좋기 때문에), ViewMatrix=ModelViewMatrix.
즉, 이 식이 바로 $ProjectionMatrix\times ModelViewMatrix\times position$ 상태입니다. (vertex shader 같은)
실제로 CameraMatrix를 그대로 ProjectionMatrix에 사용할 수 없다
그 이유는 렌더링의 편의상, znear와 zfar라는 2개의 평면을 지정할 필요가 있기 때문이다.
아래의 사이트가 ProjectionMatrix에 대해 알기 쉽게 기술하고 있다.
ht tp // // み fy 소라. 우키도 t. 코 m / 페 rs ぺc
(이 사이트에서는 점을 행 벡터로 취급하고 있으므로, 행렬은 전치되어 있다. 이 경우, 행렬은 오른쪽으로부터 걸린다.
frustum
frustum에서는 left, right, top, bottom이 독립적입니다. znear, zfar도 지정한다.
광학 중심, 초점 거리(내부 파라미터)가 잘 반영되어 있는 것을 알 수 있다.
perspective
한편, 자주 보는 Perspective Matrix는 cx, cy를 고려해주지 않는다.
fov와 aspect만 지정하면 OK인 것은, 광학 중심=화상 중심이니까.
perspective에서는 left=-right, top=-bottom으로 되어 있다.
VR과 AR
VR만 한다면 Perspective는 심플하고 사용하기 쉽지만, AR을 하려고 실제 카메라의 내부 파라미터를 계측해도, perspective를 사용한 projection matrix에서는 잘 안 된다. (광학 중심의 어긋남이 고려되지 않는다.)
다만, opencv등에서 undistort할 때에, newCameraMatrix로서 cx,cy를 0으로 한 것을 주면, Perspective를 사용할 수 있다.
그 외, 카메라의 내부 파라미터, 외부 파라미터, 왜곡에 대해서는 이하를 참조.
ぃ tp // 코 m / 료 헤이 코미 야마 / MS / 푸에 2105c3 9bfc에서 3 a 3
Reference
이 문제에 관하여(CameraMatrix 및 ProjectionMatrix), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryokomy/items/28951d287c83fba1de16텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)