Hoje veremos como funciona o borrão de movimento no War Thunder, o que ele é, como é implementado no jogo e quais os desafios que encontramos. Vamos ao cinema!
O que é Borrão de Movimento?
Em videogames, imagens são criadas do zero, cada quadro exibindo um único ponto no tempo.
Câmeras reais e até mesmo nossos olhos não funcionam dessa forma. Tirar um foto leva tempo, e durante esse período, o mundo nem sempre fica parado. Se um objeto se move enquanto tiramos essa foto, ele aparecerá em todos esses lugares ao mesmo na imagem final. Isso é o que chamamos de borrão de movimento.
Explicando o Básico
Para simular o efeito de borrão de movimento, precisamos saber como cada pizel se moveu desde o último quadro. Isso requer todas as animações e efeitos de movimento a reportarem as suas posições atuais e anteriores. Isso pode ser uma das partes mais difíceis para fazer essa mecânica funcionar. Mas ainda bem que já tinhamos trabalhado nisso com as técnicas de Anti-serrilhamento. As poucas animações que não suportavam isso eram fáceis de encontrar pois o borrão de movimento se transformava numa mancha grande borrada. Então consertamos elas rapidamente!
De início, usamos uma técnica comprovada para implementar o efeito, podem ler mais sobre ela aqui. Basicamente, checamos aonde cada pixel estava no último quadro e onde ele se encontra agora, então borramos esse pixel e a linha entre os dois.
Para tornar os calculos mais eficientes e lixar as pontas, a linha também é borrada na direção frontal, extendendo a linha pela posição atual do pizel. Para agilizar o processo ainda mais, tomamos algumas decisões para fazer blocos maiores de pixels baseados na sua direção.
Cada distância de pixel da câmera também precisa ser considerada para borrarmos o plano de fundo e o plano de frente separadamente. A linha borrada de um pixel do plano de fundo pode passar algumas vezes por um objeto parado no plano de frente. Outras vezes, precisamos manter o plano de fundo nítido enquanto um pixel do plano de frente é borrado em cima dele. Qunado dois objetos são borrados em conjunto num único pixel, sua velocidade individual também é importante, pois algumas vezes nenhum deles deve ficar nítido.
Desafios Técnicos no War Thunder
É claro que precisamos fazer alguns refinamentos para deixar da forma que precisamos. Para decidir como borrar um pixel, precisamos da sua velocidade. Mas não existe um única resposta porque há mais de uma coisa visível no mesmo ponto. Sem cuidados especiais, a transparência é invisível ao algorítmo.
No War Thunder, temos cockpits de vidro e bulbos luminosos em aviões que sobrevoam florestas acima da velocidade do som. Então precisamos tratar essas superfícies de video de alguma forma. Aqui temos velocidades completamente diferentes no mesmo pixel. O vidro está fixo, mas a floresta atrás se move rapidamente.
Acabamos utilizando um truque similar ao da separação de plano de fundo e plano de frente. Se enxergamos algo pelo vidro, tratamos isso como uma categoria, enquanto que objetos diretamente visíveis entram em outra. Não borramos uma categoria sobre a outra, mas permitimos a mistura dentro das categorias.
Dessa forma conseguimos imagens onde o plano de fundo está borrado através do vidro, mas o vidro em si mantèm uma silhueta nítida.
Nota: a altura em que escrevemos esta publixação, o tratamento especial de transparência só está disponível se o Borrão de Movimento está no máximo.
Limitações
Já que temos um única velocidade conhecida pra cada pixel, objetos transparente rápidos não serão borrados, somente o plano de fundo que pode ser visto atrás dele. Isso significa que reflexões nessas superfícies só podem ser borradas de acordo com o plano de fundo.
Para criar o efeito perfeito, precisamos de informações perfeitas. Mesmo se soubermos a posição na tela de um pixel tanto no quadro anterior como no atual, não sabemos qual o caminho que ele levou entre os dois. Só borramos em uma linha, como se ele se movesse linearmente, o que é quase sempre bom o suficiente. Uma exceção importante são as rodas de veículos. Aqui um ponto da roda pode se mover para o lado oposto no tempo de um único quadro. Assumir movimento linear nessa situação não é nada realista.
Por enquanto não corrigimos esse problema, as rodas precisarão de um método personalizado para borrão de movimento que funcione em princípios diferentes.
É Realista?
O borrão de movimento não é só visível para objetos rápidos, mas também se a câmera em si se move. No cinema esse é um efeito bastante comum, mas os nossos olhos normalmente travam em objetos mantendo o mundo mais fixo. O borrão de movimento nos vídeogames é cinémático, ele se parece com o de dilmes gravados com câmeras reais. Mas não é nada como enxergar o mundo com os nossos próprios olhos.
Para simular a visão humana de forma melhor, asicionamos uma opção para desativar o borrão de movimento pelo movimento da câmera. Isso ainda irá borrar objetos se movendo rapidamente como aviões, estilhaços, etc, mas irá manter a imagem nítida ao se olhar ao redor.
Borrão de câmera desativado, somente a torre se move
Virando a torre com o borrão de movimento habilitado
Borrão de Movimento é Bom Para Nossos Jogos?
Escutamos essa pergunta bastante e tivemos algumas conversas internamente sobre isso. Alguns dizem que a sensação de movimento torna a experiência mais imersiva. Enquanto outros dizem que isso torna mais difícil a mira em alvos móveis, ela remove a nitidez que é importante num cenário competitivo. Bom, ambos estão corretos. è uma questão de gosto e do que se deseja do jogo. Se o interesse for em ganhar e escalar os placares, ela pode não ser pra você, não há mal nenhum em desativá-lo. Mas se você já ganhou e quer fazer um vídeo de destaque dos replays, ou só poder sentir a velocidade enquanto voa, pode deixá-lo no máximo e usar para um efeito de qualidade cinemática.