Есть ли 3D-проекции, кроме орфографических и перспективных? [закрыто]


22

Вопрос в значительной степени в названии. Существуют ли заметные трехмерные проекции, кроме орфографических и перспективных, которые можно использовать в трехмерной системе, такой как OpenGL?

В частности, есть ли какие-то особые применения в игровом дизайне?

Ответы:


23

Да, чтобы назвать несколько:

Проекция Паннини, например, может захватывать широкие поля зрения в хороших отношениях . (полностью мое мнение)

Я думаю, что детали реализации будут выходить за рамки этого конкретного вопроса.


РЕДАКТИРОВАТЬ: Спасибо за комментарий, я сделал орфографическую ошибку Паннини. И чтобы сделать это редактирование полезным, вот еще несколько:

  • Параболоид / Dual-Paraboloid (полезно для отражений, теней, витражей)
  • Равноугольный (может создать карту мира для сферы)
  • сферический
  • синусоидальный

4
+1 для проекции Панини; Я никогда не слышал об этом раньше. Кстати, пока мы говорим о нелинейных проекциях, двойной параболоид - это тот, который иногда используется для карт окружающей среды и карт теней.
Натан Рид

Будучи очень разборчивым, но это, похоже, проекция «Паннини», а не «Панини».
aardvarkk

Очень круто! Я предполагаю, что все они нелинейны, как говорит Натан Рид?
Jmite

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

Это, вероятно, не существует, это именно то, о чем я думал!
Jmite

15

Это зависит от того, что вы подразумеваете под «тем, что можно использовать в трехмерной системе, такой как OpenGL». :)

Строго говоря, аппаратное обеспечение и API-интерфейсы для трехмерной графики, такие как OpenGL, корректно работают только с линейными проекциями - проекциями, которые отображают прямые линии в мировом пространстве на прямые линии на изображении. Они никогда не искажают что-либо в изогнутую форму (если только она не была изогнута). Это связано с тем, что графические процессоры зависят от треугольников, имеющих прямые края, чтобы правильно растеризовать их на экране.

Если мы ограничимся линейными проекциями, вариантов не так уж много. В дополнение к стандартным орто и перспективам, есть также «отклонения от центра», которые получаются путем сдвига усеченного вида.

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

Эти проекции можно представить с помощью обычной матрицы проекций 4 × 4 и без проблем использовать в 3D API.

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

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

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


1

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


11
Насколько я знаю, изометрические проекции являются конкретными случаями использования двух других типов проекций, орфографических и перспективных. Например, ортопроекция с видом под определенным углом дает вам изометрическую камеру.
Гримшоу
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.