Відповіді:
Так, щоб назвати декілька:
Проекція Паннини, наприклад, може захоплювати широкі поля зору в хороших відносинах . (повністю лише моя думка)
Я думаю, що деталі щодо впровадження будуть виходити за рамки цього конкретного питання.
EDIT: Дякую за коментар, я неправильно написав Панніні. А щоб зробити цю редакцію доцільною, ось ще кілька:
Це залежить від того, що ви маєте на увазі під "тим, що можна було б використовувати в 3D-системі, наприклад OpenGL". :)
Вузько кажучи, обладнання для графічної 3D графіки та API, такі як OpenGL, правильно поводяться лише з лінійними проекціями - проекціями, які відображають прямі лінії у світовому просторі на прямі лінії зображення. Вони ніколи щось не перекручують у вигнуту форму (якщо тільки це не було зігнутим для початку). Це пояснюється тим, що графічні процесори залежать від трикутників, які мають прямі краї, щоб правильно їх растровувати на екрані.
Якщо ми обмежимось лінійними прогнозами, варіантів не надто багато. Окрім стандартних орто та перспективних, існують також "позацентричні" варіанти, які отримуються шляхом стрижки фруктового огляду.
Ці проекції можуть бути представлені звичайною матрицею проекцій 4 × 4 і без проблем використовуватися в 3D API.
Потім з'являються нелінійні проекції, які не мають обмеження відображення прямих прямих; їм дозволяється спотворювати речі на криві. Їх дуже багато, включаючи циліндричну, сферичну, різні види риб'ячого ока та ін.
З нелінійними проекціями ви не можете просто використовувати матрицю проекцій; ви повинні якось самостійно реалізувати проекцію за допомогою шейдерів. Один із способів - це написання користувальницького вершинного шейдера для виконання проекції на вершину. Графічний процесор все одно намалюватиме трикутник з прямими лініями між вершинами, тому, хоча маленькі трикутники будуть досить близькими до виправлення, більші трикутники помітно помиляться. Це може спричинити проблеми , і для правильного відображення геометрію може знадобитися дуже добре розділити.
Другий підхід до отримання нелінійної проекції полягає в тому, щоб спочатку відобразити сцену, використовуючи звичайну перспективну проекцію (можливо, на кубічну карту, яка має перспективну проекцію для кожної грані куба), а потім застосувати піксельний шейдер після обробки, щоб перевпорядкувати його на потрібне нелінійна проекція. Це має перевагу в тому, що не потрібно змінювати геометрію, але це може бути дорожче через необхідні додаткові роботи з надання, і результат може бути розмитим у деяких областях, якщо візуалізація першого проходу не має достатньої роздільної здатності. Підхід після процесу використовується в іграх Oculus Rift, наприклад, для реалізації нелінійної проекції, яку Рифт вимагає працювати зі своїми лінзами.
Я не можу повірити, але ніхто не згадав про ізометричну проекцію, яка була досить поширеною.