GLM - Расчет усеченного конуса по матрице проекции

GLM предоставляет способ объявить матрицу проекции:

projectionMatrix = glm :: перспектива (45.0f, 4.0f / 3.0f, 0.1f, 1000.f);

Исходя из этого, я хочу иметь возможность проверить, находятся ли ограничивающие прямоугольники в моей пирамиде. Как мне получить плоскости усеченного конуса или что-то еще, что мне понадобится для вычисления этого из матрицы проекции? Это вообще правильный способ сделать это?


person Pladnius Brooks    schedule 02.08.2012    source источник


Ответы (1)


Это поможет: http://web.archive.org/web/20120531231005/http://crazyjoke.free.fr/doc/3D/plane%20extraction.pdf

Также обратите внимание, что для того, чтобы извлечь усеченную пирамиду, вам нужно будет извлечь ее, используя модель и матрицу вида, в противном случае вам нужно применить преобразование модели и вида к ограничивающим прямоугольникам, чтобы выполнить тест.

person brano    schedule 02.08.2012
comment
Не могли бы вы подробнее рассказать об использовании модели и матрицы просмотра при извлечении усеченной пирамиды? Моя матрица обзора - это рамка моей камеры (положение, поворот) и матрица проекции. Когда я визуализирую свой мир, я просто смещаю вершины мира от камеры. Если я не трансформирую какие-либо модели из модели в мировое пространство, как мне применить матрицу модели или как применить ее к ограничивающим рамкам? - person Pladnius Brooks; 03.08.2012
comment
Сделать это можно так: 1. извлечь усеченную фигуру из матрицы проекции. 2. Примените преобразование вида к ограничивающей рамке. 3. Выполните тест (поскольку они находятся в одном пространстве). - person brano; 03.08.2012
comment
Спасибо. Правильно ли я думал, что со старым фиксированным конвейером мне не нужно было этого делать? Я никогда не делал. Просто схватил матрицы с помощью glGet и волшебным образом заработало. - person Pladnius Brooks; 03.08.2012