2009-10-08 5 views
2

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

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

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

ответ

6

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

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

+0

Спасибо за быстрый ответ: однако я по-прежнему необходимо определить подмножество «угловых точек» somehow- предположительно максимальное расстояние, перпендикулярное «объектив камеры «ось? –

+0

Под «угловыми точками» I подразумеваются вершины многоугольника. Я предполагаю, что ваш многоугольник определяется списком вершин. (Если это не так, как определяются ваши полигоны?) Чтобы выполнить перспективную проекцию на многоугольник, достаточно спроектировать вершины; это связано с тем, что перспективная проекция всегда отображает прямую линию в пространстве на прямую линию на изображении. –

+0

уверены, что эти (вершины) являются точками 50 * 300 (x, y, z): я был там немного медленнее! Еще раз спасибо! –

0

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

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

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

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

Смежные вопросы