Não tenho certeza dos termos adequados para pesquisar ou mesmo por onde começar, embora imagine que seja algum tipo de efeito pós-processamento.
Eu já vi jogos como I Wanna Be The Boshy e You Have To Win the Game, que conseguem modificar a perspectiva dos jogos 2D para dar um tipo de efeito 3D a eles (veja as imagens abaixo). Boshy basicamente faz com que pareça que você está dentro de uma torre (cilindro) enquanto Você tem que vencer o jogo distorce a imagem para que pareça que você está jogando em um monitor CRT antigo, especificamente o visual ligeiramente arredondado.
- Existe um termo para esse efeito?
- Qual é a maneira padrão de implementar esse efeito (terminologia)?
- Como eu implementaria esse efeito em um mecanismo / estrutura de alto nível, como Unity ou XNA / Monogame, de uma visão de 20.000 pés? (código detalhado aceito com satisfação, mas não necessário - sei que os detalhes exatos da implementação podem variar, mas os detalhes de alto nível sobre o que precisa ser feito serão muito apreciados)
Eu quero ser o boshy
Você precisa vencer o jogo
2d
graphic-effects
post-processing
SpartanDonut
fonte
fonte
Respostas:
Isso pode ser implementado como um tipo de efeito de pós-processamento. (Ao usar o Unity / XNA / Dx / OGL / ...)
Método de geometria
Comece criando uma malha que se assemelhe ao efeito de distorção que você deseja obter. (por exemplo, modele um meio cilindro (ou cone, esfera, cubo, ...), certifique-se de definir as coordenadas da textura). Renderize seu jogo 2D como de costume, mas renderize o resultado final em uma textura. Em seguida, renderize a geometria da distorção com a textura que você acabou de criar. Você pode usar o mundo / visão / projeção ou modificar as coordenadas reais de geometria / textura para controlar a intensidade da distorção. (a imagem 1 mostra o jogo 2D normal, a imagem 2 mostra a mesma textura projetada em uma esfera)
Método de distorção
As ferramentas de processamento de imagem geralmente oferecem efeitos de distorção que podem emular a projeção (como ilusões de ótica). Por exemplo, a imagem 3 foi gerada usando o filtro de protuberância do Paint.Net
.
(Você pode encontrar uma implementação (OpenGL ES 2.0) desse efeito de distorção no projeto GPUImage - consulte GPUImageBulgeDistortionFilter
Dependendo da implementação, qualquer um dos métodos pode ser mais rápido ou fornecer uma melhor correspondência para o resultado desejado. Como as duas implementações são bastante simples, você pode tentar implementá-las e ver qual delas funciona melhor para você.
fonte