Estou tentando alcançar o efeito de distorção que você vê em jogos como Geometry Wars .
Alguém pode ajudar a explicar o que está acontecendo aqui? Eu sinto que o eixo z da grade é manipulado de alguma maneira pelo programador, mas existe alguma equação matemática conhecida para realmente obter o efeito correto de distorção?
Edit: Para ser mais específico, quero dizer a distorção da grade. Como tudo parece puxado em direção ao eixo z negativo e depois salta.
graphics
graphic-effects
Joey Green
fonte
fonte
Respostas:
Uma implementação de 10 minutos de um sistema simples de primavera (ou assim ele diz em seu blog ;)). O sistema pode lidar com vários warps e outras coisas que distorcem a grade.
Atualizado para adicionar alguns detalhes adicionais:
Mais alguns detalhes. Em uma entrevista que costumava ser hospedada no site Bizarre Creations (esse site desapareceu devido ao fechamento da empresa), houve uma pergunta:
P: Um dos novos recursos gráficos mais impressionantes do jogo é a área de jogo da "grade de gravidade". Como você fez isso parecer tão legal? todo objeto do jogo realmente tem sua própria gravidade? A grade em si é composta de 60.000 pontos, cada um exercendo uma pequena quantidade de força em seu vizinho. A simulação em si fica no limite da estabilidade, o que faz com que ela se mova tanto quando um dos objetos do jogo dá um pequeno empurrão! Apenas alguns tipos de objetos afetam a grade. Como o sistema de grade é bastante caro de calcular, ele realmente roda no segundo núcleo junto com o sistema de áudio (o primeiro núcleo é dedicado à jogabilidade e às partículas, o terceiro é usado para renderizar o áudio).
fonte
Não sei se existe uma maneira "correta" de fazer isso, mas é provável que seja apenas uma transformação linear esteticamente agradável aplicada com uma queda calculada de distância a um ponto.
Portanto, para qualquer elemento com o qual você esteja trabalhando, você:
Iirc, as guerras de geometria aplicaram isso como uma distorção distorcida em alguns elementos, enquanto outros elementos como partículas foram afetados pela "força", sem serem distorcidos. Você pode aplicar a distorção em um sombreador de vértice, supondo que você tenha vértices suficientes para obter uma amostra suave do efeito. Como alternativa, você pode renderizar tudo o que precisa ser afetado em um buffer fora da tela e, em seguida, renderizar os resultados em um quad bem decorado, no qual você aplica a distorção, antes de adicionar todos os elementos não distorcidos na parte superior.
Quanto à transformação, o dimensionamento fornecerá uma aparência de sucção. Se bem me lembro, também houve algumas distorções, o que seria apenas uma pequena rotação.
Você pode ficar mais sofisticado com seus cálculos do fator de intensidade para obter efeitos de aparência mais maluca. Você pode, por exemplo, calcular o ângulo (a) em que um elemento é relativo ao centro e fatorá-lo. Pegue cos (a) e você pode criar ondas radiais no efeito. O que você quer fazer é configurar o código de andaime necessário e depois ir para a cidade experimentando diferentes combinações de fatores.
fonte