Эффективность перспективной проекции против трассировки лучей / лучевого литья - PullRequest
2 голосов
/ 08 октября 2009

У меня очень общий вопрос. Я хочу определить граничные точки ряда объектов (включающих 30-50 замкнутых многоугольников (z), каждый из которых имеет около 300 точек (x, y, z)). Я работаю с фиксированным окном просмотра, которое вращается вокруг осей x, y и z (альфа, бета, гамма) относительно начала системы координат для полигонов.

На мой взгляд, есть две возможности: перспективная проекция или трассировка лучей. Перспективная проекция, по-видимому, требует большого количества матричных операций для каждой точки, чтобы определить, находится ли она внутри или вне области просмотра. Или, учитывая большое количество точек, лучше ли мне трассировать пиксели области просмотра до объекта? то есть определить, есть ли пересечение и затем пересечение происходит внутри или без объекта (ов). В любом случае я запишу этот результат как 0 (снаружи) или 1 (внутри) в 200x200 целочисленную матрицу, представляющую область просмотра

Спасибо в ожидании

Ответы [ 2 ]

6 голосов
/ 08 октября 2009

Перспективная проекция (а затем сканирование-преобразование полигонов в координатах изображения) будет много быстрее.

Матричное преобразование, которое требуется в случае перспективной проекции (по существу, матрица "мир в камеру"), требуется точно так же, как при трассировке лучей. Однако при перспективной проекции вы преобразуете только угловые точки, а при трассировке лучей вы преобразуете все точек на изображении.

0 голосов
/ 30 декабря 2014

Вы должны быть в состоянии использовать перспективную проекцию и матрицу перспективной проекции, чтобы вычислить положение вершин в пространстве экрана? Трудно понять, что ты хочешь делать на самом деле. Если вы хотите создать изображение этой трехмерной сцены, тогда, имея всего несколько полигонов, было бы трудно увидеть разницу между трассировкой лучей и растеризацией, если ваш код оптимизирован (вам все равно нужно будет использовать ускоряющую структуру для подхода трассировки лучей). ), однако да растеризация, скорее всего, будет быстрее.

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

Почему скорость является проблемой в вашей проблеме? В противном случае действительно используйте RT.

Большую часть этой информации можно найти на www.scratchapixel.com

...