Как извлечь параметры камеры из матрицы проекции

У меня есть перспективная камера с определенной проекционной матрицей, я просто хочу извлечь из нее прямую, ближнюю и дальнюю плоскости. Я знаю, что в Three.js есть функция:

.updateProjectionMatrix()

он создает проекционную матрицу на основе перечисленных выше параметров, в основном я хочу обратный процесс.


person binaryRat    schedule 03.06.2019    source источник
comment
jsantell.com/3d-projection   -  person ScieCode    schedule 03.06.2019
comment
Возможный дубликат: stackoverflow.com/questions/46182845/   -  person WestLangley    schedule 03.06.2019
comment
Из того, что я читал, он не говорит, как рассчитать ближний и дальний самолет @WestLangley   -  person binaryRat    schedule 03.06.2019


Ответы (1)


Я решил с помощью этих 3 формул:

fov = 2 * atan(1/camera.projectionMatrix.elements[5]) * 180/PI;

рядом = camera.projectionMatrix.elements[14] / (camera.projectionMatrix.elements[10] — 1,0);

далеко = camera.projectionMatrix.elements[14] / (camera.projectionMatrix.elements[10] + 1,0);

Источники:

3D-проекция

Разложение матрицы проекции OpenGL

Поле зрения + Соотношение сторон + Просмотр матрицы из матрицы проекции

person binaryRat    schedule 04.06.2019