Я не уверен в правильных терминах для поиска или даже в том, с чего начать, хотя я предполагаю, что это своего рода эффект пост-обработки.
Я видел такие игры, как « Я хочу быть болтливым и ты должен выиграть игру», в которых можно изменить перспективу 2D-игр, чтобы придать им своего рода 3D-эффект (см. Изображения ниже). По сути, Boshy создает впечатление, будто вы находитесь в башне (цилиндре), в то время как игра «Вы должны выиграть» искажает изображение так, что оно выглядит так, будто вы играете на старом ЭЛТ-мониторе, в частности, слегка округленный вид.
- Есть ли термин для этого эффекта?
- Каков стандартный способ реализации этого эффекта (терминология)?
- Как мне реализовать такой эффект в движке / среде высокого уровня, таких как Unity или XNA / Monogame, с высоты 20 000 футов? (подробный код успешно принят, но не обязателен - я понимаю, что точные детали реализации могут отличаться, но подробности высокого уровня о том, что должно быть сделано, будут высоко оценены)
Я хочу быть Boshy
Вы должны выиграть игру
2d
graphic-effects
post-processing
SpartanDonut
источник
источник
Ответы:
Это может быть реализовано как эффект пост-обработки. (При использовании Unity / XNA / Dx / OGL / ...)
Метод геометрии
Начните с создания меша, который напоминает эффект искажения, которого вы хотите достичь. (например, смоделируйте полуцилиндр (или конус, сферу, куб, ...), убедитесь, что вы задали координаты текстуры). Визуализируйте свою 2D-игру как обычно, но передайте конечный результат в текстуру. Затем визуализируйте геометрию искажения с помощью текстуры, которую вы только что создали. Вы можете использовать мир / вид / проекцию или изменять фактические координаты геометрии / текстуры, чтобы контролировать силу искажения. (изображение 1 показывает обычную 2D-игру, изображение 2 показывает ту же текстуру, спроецированную на сферу)
Метод искажения
Инструменты обработки изображений часто предлагают эффекты искажения, которые могут эмулировать проекцию (немного похоже на оптические иллюзии). Например, изображение 3 было сгенерировано с использованием фильтра выпуклости из Paint.Net
,
(Вы можете найти реализацию (OpenGL ES 2.0) этого эффекта искажения из проекта GPUImage - см. GPUImageBulgeDistortionFilter)
В зависимости от реализации любой из этих методов может быть быстрее или лучше соответствовать желаемому результату. Поскольку обе реализации довольно просты, вы можете попробовать реализовать обе и посмотреть, какая из них лучше подходит для вас.
источник