Як реалізувати підроблені 3D-ефекти, як спотворення, для двовимірної грі прокрутки?


14

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

Я бачив такі ігри, як I Wanna Be The Boshy і You Do Win The Game, які встигають змінити перспективу 2D-ігор, щоб надати їм такий собі 3D-ефект (див. Зображення нижче). В основному, Boshy робить це схожим на те, що ви знаходитесь у башті (циліндрі), тоді як вам доведеться виграти гру, спотворює зображення, щоб воно виглядало так, як ви граєте на старому моніторі CRT, зокрема злегка закругленим виглядом.

  • Чи є термін для цього ефекту?
  • Який стандартний спосіб реалізації цього ефекту (термінологія)?
  • Як би я міг реалізувати такий ефект у двигуні / рамках високого рівня, таких як Unity або XNA / Monogame з точки зору 20 000 футів? (Докладний код із задоволенням прийнятий, але не потрібний. Я розумію, що точні відомості про реалізацію можуть відрізнятися, але детально оцінюються деталі високого рівня щодо того, що потрібно зробити)

Я хочу бути Боши Я хочу бути Боші

Ви повинні виграти гру введіть тут опис зображення


Так. Мені завжди було цікаво знати точний термін для техніки. Найкраще, про що я можу придумати, - це "ефект старого телевізійного екрану"
Tofu_Craving_Redish_BlueDragon

Саме так! І це працює лише для останнього прикладу
SpartanDonut

Відповіді:


7

Це може бути реалізовано як ефект після обробки. (При використанні Unity / XNA / Dx / OGL / ...)

Метод геометрії

Почніть зі створення сітки, що нагадує ефект спотворення, якого ви хочете досягти. (наприклад, модель півциліндра (або конуса, сфери, куба, ...), обов'язково встановіть координати текстури). Візьміть свою 2D гру як завжди, а кінцевий результат перетворіть у текстуру. Потім виведіть геометрію спотворень із створеною вами текстурою. Ви можете використовувати світ / погляд / проекцію або змінювати фактичні координати геометрії / текстури, щоб контролювати силу спотворення. (на зображенні 1 показана звичайна двовимірна гра, на зображенні 2 показана така ж текстура, що проектується на сферу)

Приклад гри Приклад, спроектований на сферу (за допомогою блендера)

Спосіб викривлення

Засоби обробки зображень часто пропонують ефекти спотворення, які можуть імітувати проекцію (як оптичні ілюзії). Наприклад, зображення 3 було сформовано за допомогою фільтра опуклості від Paint.Net

Викривлення опуклість.

(Ви можете знайти реалізацію (OpenGL ES 2.0) цього ефекту спотворення в проекті GPUImage - див. GPUImageBulgeDistortionFilter)

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


Фантастична відповідь!
Толле

1
Для обох потрібна обробка однакової кількості зображень. Проекція ніколи не буде швидшою, ніж нічого не робити , і обробка зображення коштує однаково в будь-якому випадку. - Метод "спотворення" швидший, тому що ви пропускаєте перетворення вершин і растерізацію, також ви даєте водієві більше свободи для повторення пікселів, де полігонний підхід більш конкретний щодо того, який порядок малювати. Нарешті, багатокутники містять менше інформації про ваш намічений ефект, вдаються до загального рішення, яке підкреслює обладнання для фільтрування текстур та створює наближення замість реального фільтра.
MickLH

@MickLH: Вершини для такої проекції після обробки можуть бути обчислені в режимі офлайн або на навантаженні, що дасть дуже дешевий шейдер вершин. Для фільтра опуклості також повинен бути виведений і растрований полноекранний квадроцикл (за винятком випадків, коли SpartanDonut має доступ, наприклад, до обчислювальних шейдерів), а для кожного пікселя зміщення має бути обчислено замість інтерпольованого. Тому я вважаю (залежно від наявних інструментів та реалізації) обидва методи могли бути однаково швидкими. Я оновив свою відповідь, дякую за ваш внесок.
Міклас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.