Матрица проекции «рыбий глаз» в Xna / OpenGL - 3D - PullRequest
5 голосов
/ 18 июля 2010

Я ищу матрицу проекции, которую я могу использовать в 3D, которая даст мне эффект «рыбий глаз». Я не ищу пиксельный шейдер или что-то в этом роде, которое будет манипулировать пикселями, но фактическую матрицу проекции, используемую при проецировании из трехмерного пространства в 2D.

Спасибо.

Ответы [ 3 ]

11 голосов
/ 18 июля 2010

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

2 голосов
/ 21 июля 2010

Карлос не ошибается, но вы можете попробовать поиграть с параметром «поле зрения» в конструкторе матриц проекций.

0 голосов
/ 24 июля 2010

Карлос прав.Есть способ, которым вы могли бы подделать его, но вам придется повторно визуализировать вашу сцену несколько раз.

По сути, вы начинаете с выяснения, как сделать двухточечную перспективу.Что я и сделал бы, визуализировав сцену дважды с помощью матрицы проекции, которая имеет точку схождения на чередующихся сторонах.Затем вы комбинируете две части, я думаю, используя карту трафарета.

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

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

Я мог бы объяснить больше, но я думаю, это звучит слишком сложно.

Самый простой способ подделать его - это визуализировать текстуру и исказить изображение, а также отобразить его как полноэкранный квад.

...