No estoy seguro de los términos adecuados para buscar o incluso dónde comenzar, aunque imagino que es una especie de efecto de procesamiento posterior.
He visto juegos como I Wanna Be The Boshy y You Have To Win the Game que logran modificar la perspectiva de los juegos 2D para darles una especie de efecto 3D (ver imágenes a continuación). Boshy básicamente hace que parezca que estás dentro de una torre (cilindro) mientras que Tienes que ganar el juego distorsiona la imagen para que parezca que estás jugando en un viejo monitor CRT, específicamente el aspecto ligeramente redondeado.
- ¿Hay un término para este efecto?
- ¿Cuál es la forma estándar de implementar este efecto (terminología)?
- ¿Cómo haría para implementar tal efecto en un motor / marco de alto nivel como Unity o XNA / Monogame desde una vista de 20,000 pies? (el código detallado se acepta felizmente pero no es necesario; me doy cuenta de que los detalles exactos de la implementación pueden variar, pero se agradecerían mucho los detalles de alto nivel sobre lo que hay que hacer)
Quiero ser el boshy
Tienes que ganar el juego
2d
graphic-effects
post-processing
SpartanDonut
fuente
fuente
Respuestas:
Esto se puede implementar como un tipo de efecto de posprocesamiento. (Cuando se usa Unity / XNA / Dx / OGL / ...)
Método de geometría
Comience creando una malla que se parezca al efecto de distorsión que desea lograr. (por ejemplo, modele un medio cilindro (o cono, esfera, cubo, ...), asegúrese de establecer las coordenadas de textura). Renderiza tu juego 2D como de costumbre, pero renderiza el resultado final en una textura. Luego, renderice la geometría de distorsión con la textura que acaba de crear. Puede usar el mundo / vista / proyección o modificar las coordenadas reales de geometría / textura para controlar la intensidad de la distorsión. (la imagen 1 muestra el juego 2D normal, la imagen 2 muestra la misma textura proyectada en una esfera)
Método de distorsión
Las herramientas de procesamiento de imágenes a menudo ofrecen efectos de distorsión que podrían emular la proyección (como las ilusiones ópticas). Por ejemplo, la imagen 3 se generó utilizando el filtro de protuberancia de Paint.Net
.
(Puede encontrar una implementación (OpenGL ES 2.0) de este efecto de distorsión desde el proyecto GPUImage ; consulte GPUImageBulgeDistortionFilter)
Dependiendo de la implementación, cualquiera de los métodos puede ser más rápido o proporcionar una mejor coincidencia con el resultado deseado. Como ambas implementaciones son bastante simples, podría intentar implementar ambas y ver cuál funciona mejor para usted.
fuente