При перспективной проекции матрица проекции описывает отображение из трехмерных точек в мире, которые они видят из камеры-обскуры, в двухмерные точки видового экрана.
Координаты пространства глаза в усеченной зоне камеры (усеченная пирамида)) отображаются в куб (нормализованные координаты устройства).
В нормализованном пространстве устройства угловые точки объема представления представляют собой углы куба с левой, нижней, ближней (-1, -1, -1)) и справа, сверху, далеко от (1, 1, 1).
Чтобы получить точки в пространстве вида, точки в нормализованном пространстве устройства должны быть преобразованы матрицей обратной проекции, а затем Перспективное деление .
Точка зрения может быть преобразована в точку в мировом пространстве с помощью матрицы обратного просмотра.
Обратная матрица может быть вычислена с помощью mat4.invert .Код для преобразования точки из нормализованного пространства устройства в мировое пространство может быть следующим:
inv_view = mat4.invert([], view);
inv_proj = mat4.invert([], projection);
ndc_corner = vec4.set([], -1, -1, -1, 1); // (-1, -1, -1) left, bottom, near
view_corner_h = vec4.transformMat4([], ndc_corner, inv_proj);
view_corner = vec4.scale([], view_corner_h, 1/view_corner_h[3]);
world_corner = vec4.transformMat4([], view_corner, inv_view);