Чи є тривимірні проекції, окрім ортографічних та перспективних? [зачинено]


22

Питання досить багато в назві. Чи є помітні тривимірні 3D-проекції, окрім ортографічних та перспективних, які можна було б використовувати в 3D-системі, наприклад OpenGL?

Зокрема, чи є такі, які мають особливе застосування в ігровому дизайні?

Відповіді:


23

Так, щоб назвати декілька:

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

Я думаю, що деталі щодо впровадження будуть виходити за рамки цього конкретного питання.


EDIT: Дякую за коментар, я неправильно написав Панніні. А щоб зробити цю редакцію доцільною, ось ще кілька:

  • Параболоїд / подвійний параболоїд (корисний для роздумів, тіней, вітража)
  • Рівнокутний (може створювати вигляд карти кулі світу)
  • Сферичні
  • Синусоїдальний

4
+1 для проекції Паніні; Я ніколи раніше про це не чув. До речі, поки ми говоримо про нелінійні проекції, подвійний параболоїд - це той, який іноді використовується для карток навколишнього середовища та тіньових карт.
Натан Рід

Дуже вибагливий, але, здається, це проекція "Панніні", а не "Паніні".
aardvarkk

Дуже круто! Я здогадуюсь, що це все нелінійно, як каже Натан Рід?
jmite

Я вважаю, що вам, швидше за все, доведеться використовувати апаратну tessellation або обробку зображень, щоб досягти їх на практиці. У мене виникають труднощі при думці про іншу проекцію, яка відображає прямі на прямі, але я додам це до цієї відповіді, якщо щось придумаю.
MickLH

Це, мабуть, не існує, це саме та думка, про яку я думав!
jmite

15

Це залежить від того, що ви маєте на увазі під "тим, що можна було б використовувати в 3D-системі, наприклад OpenGL". :)

Вузько кажучи, обладнання для графічної 3D графіки та API, такі як OpenGL, правильно поводяться лише з лінійними проекціями - проекціями, які відображають прямі лінії у світовому просторі на прямі лінії зображення. Вони ніколи щось не перекручують у вигнуту форму (якщо тільки це не було зігнутим для початку). Це пояснюється тим, що графічні процесори залежать від трикутників, які мають прямі краї, щоб правильно їх растровувати на екрані.

Якщо ми обмежимось лінійними прогнозами, варіантів не надто багато. Окрім стандартних орто та перспективних, існують також "позацентричні" варіанти, які отримуються шляхом стрижки фруктового огляду.

  • Орто-проекція в центрі називається косою проекцією і часто використовується для інженерних діаграм, але не проявляється багато в іграх.
  • Нецентральні перспективні проекції використовуються в стерео 3D-рендерінгу , оскільки виявляється, що лівий і правий погляд очей краще спалюються в мозку, якщо ви зрізаєте фрусти, а не обертаєте їх, щоб зосередити увагу на об'єкті.

Ці проекції можуть бути представлені звичайною матрицею проекцій 4 × 4 і без проблем використовуватися в 3D API.

Потім з'являються нелінійні проекції, які не мають обмеження відображення прямих прямих; їм дозволяється спотворювати речі на криві. Їх дуже багато, включаючи циліндричну, сферичну, різні види риб'ячого ока та ін.

З нелінійними проекціями ви не можете просто використовувати матрицю проекцій; ви повинні якось самостійно реалізувати проекцію за допомогою шейдерів. Один із способів - це написання користувальницького вершинного шейдера для виконання проекції на вершину. Графічний процесор все одно намалюватиме трикутник з прямими лініями між вершинами, тому, хоча маленькі трикутники будуть досить близькими до виправлення, більші трикутники помітно помиляться. Це може спричинити проблеми , і для правильного відображення геометрію може знадобитися дуже добре розділити.

Другий підхід до отримання нелінійної проекції полягає в тому, щоб спочатку відобразити сцену, використовуючи звичайну перспективну проекцію (можливо, на кубічну карту, яка має перспективну проекцію для кожної грані куба), а потім застосувати піксельний шейдер після обробки, щоб перевпорядкувати його на потрібне нелінійна проекція. Це має перевагу в тому, що не потрібно змінювати геометрію, але це може бути дорожче через необхідні додаткові роботи з надання, і результат може бути розмитим у деяких областях, якщо візуалізація першого проходу не має достатньої роздільної здатності. Підхід після процесу використовується в іграх Oculus Rift, наприклад, для реалізації нелінійної проекції, яку Рифт вимагає працювати зі своїми лінзами.


1

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


11
Наскільки мені відомо, ізометричні проекції - це конкретні випадки використання двох інших типів проекції, ортографічні та перспективні. Наприклад, орто-проекція з видом під певним кутом дає вам ізометричну камеру.
Grimshaw
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.