Преобразование 3D вершин в 2D изображения - PullRequest
0 голосов
/ 29 марта 2012

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

Представьте себе, что вы смотрите на поле, которое было совершенно плоским. Более удаленные участки местности будут казаться наклоненными внутрь дальше к горизонту, а также будут выглядеть короче.

Я провел тонну исследований о том, как с научной точки зрения сделать это правильно, и наткнулся на это:

http://en.wikipedia.org/wiki/Visual_angle

(за исключением того, что эта статья в 2D. Я бы хотел, чтобы она также учитывала "высоту" или размерность окна просмотра)

Есть ли более простой способ сделать это и создать истинное восприятие, чем программировать:

-3D пересечение луча / сферы

- расстояние от точки до точки на сфере

В значительной степени я спрашиваю, существует ли более простой способ сопоставить вершины в трехмерном мире с двухмерной плоскостью, сохраняя верность искажению перспективы?

Любые полезные статьи или советы будут с благодарностью!

Спасибо!

1 Ответ

2 голосов
/ 30 марта 2012

Стандартный способ сделать это - использовать однородные координаты и матрицу перспективной проекции .Это вообще не требует каких-либо вычислений расстояния: для каждой вершины требуется умножение матрицы 4x4 и деление для масштабирования конечной 2D-точки.

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

Вам следуетвероятно, начнем с вводного текста по компьютерной графике, например 3D Computer Graphics от Alan Watt.Старая, «классическая» работа - Компьютерная графика: принципы и практика , автор: Фоли, ван Дам и др.

...