2010-07-17 5 views
5

Я ищу матрицу проекций, которую я могу использовать в 3D, что даст мне эффект рыбий глаз. Я не ищу pixhader или что-то в этом роде, которое будет управлять пикселями, но фактическая матрица проекции, используемая при проецировании из 3D-пространства на 2D.Fisheye проекционная матрица в Xna/OpenGL - 3D

Спасибо.

+0

Это может быть удобно: http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/domefisheye/fisheye/ –

+0

Спасибо. Это будет полезно в других сценариях, на которые я смотрю. –

ответ

2

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

+0

Спасибо обеим. Думаю, мне нужно будет просмотреть мои расчеты Матрицы. Моей первой предположения было также экспериментировать с FOV, но не получило желаемого эффекта. Я ищу скорее приближение, чем pixelperfect. –

+0

@ Эйнар, поскольку Гоз сказал, что Карлос на деньги - FOV работает для конечных точек, преобразует их там, где они должны быть, но он по-прежнему рисует прямую линию между ними. Попробуйте создать несколько сеток, представляющих треугольник - используя один многоугольник или используя 10 многоугольников и используя 1000 полигонов. Затем попробуйте сыграть с FOV, возможно, все будет более ясно. – Unreason

11

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

0

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

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

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

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

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

Простейший способ подделать это - визуализировать текстуру и искажать изображение, а также отображать его как полноэкранный четырехъядерный.

+0

Спасибо за ввод - отличная идея. Моя проблема была связана с чем-то, что заставило меня покраснеть, когда я это увидел. У меня была ошибка при проецировании на экран, что вызвало все мои усилия по изменению FOV, чтобы получить эффект, который я хотел бесполезно. –

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