Atualmente, implemento um jogo com uma vista de cima para baixo do oceano. Eu uso o seguinte, um pouco de textura abstrata:
A textura real é transparente, eu adicionei a cor verde para maior clareza.
O problema que tenho agora é que não sei como animar essa textura para que a água pareça agradável. Tentei mover a textura com uma onda pecado texture.y += sin(angle)
. Claro que agora toda a textura está se movendo, o que parece meio irreal. A próxima coisa que tentei é adicionar outra camada e implementar um efeito de paralaxe. Para que as reflexões sob a superfície da água também se movessem, mas muito mais lentamente. Parece um pouco melhor, mas ainda não ... bom o suficiente.
Eu acho que a melhor animação seria, se as células individuais se expandissem e se contraíssem, como uma teia ou pedaço de pano. Imagine se alguém puxasse um pouco o vértice dessas células e a célula vizinha se expandisse e a célula para a qual eu puxo (ou pressiono) contrai. Como uma teia de molas (?). Mas não tenho idéia de como implementar algo assim:
- Qual é o modelo matemático para isso? Algo com molas, onde as forças empurram / puxam?
- E se sim, como mapeio esse modelo para a textura fornecida? Mantendo todas as curvas e o que não ...
(Também estou aberto a diferentes idéias / respostas sobre como animar a textura fornecida. Realismo não é o ponto aqui, apenas um pouco de água bonita como movimentos ...)
Solução de DMGregory
Publiquei um exemplo da libgdx neste post: a animação em 2D em água é irregular e não é suave (consulte a resposta sobre filtragem de textura)
_Noise
é [um amostrador de texturas que lê] a pequena textura aleatória acima.v2f i
são os dados interpolados do shader de vértice - usamos principalmente para obter as coordenadas de textura do pixel que estamos desenhandoi.uv
. E você está exatamente correto sobre todo o resto.Isso é chamado de efeito cáustico, e a geração desses efeitos em tempo de execução consome bastante tempo; portanto, isso é tradicionalmente feito com animação quadro a quadro pré-renderizada. Existem ferramentas que irão gerar quadros de animação cáustica para você, como o Caustics Generator , que possui uma versão gratuita para uso não comercial. Existem também alguns pré-fabricados que você pode comprar por um preço significativamente mais barato que a versão pro da ferramenta que mencionei.
Observe que os efeitos cáusticos também costumam ser aplicados como um biscoito leve em um terreno subaquático ou na superfície subaquática. Ou seja, colocá-lo na superfície da água enquanto olha para ela normalmente não é o que parece com a água.
fonte
Parece uma textura que você pode gerar a partir de um gráfico voronoi, por exemplo:
Você pode fazer pequenos ajustes suaves no gráfico movendo os pontos; redesenhar o gráfico de cada quadro seria muito caro, então você provavelmente desejaria pré-renderizar a animação.
fonte
Existe um método oldschool, envolvendo uma camada de textura inferior e duas texturas semitransparentes para reflexão no topo.
Se você deseja percorrer todo o caminho e deseja que a água não pareça cheia de ondas clonadas ou samish blue-flowmaps, é o objetivo.
https://steamcdn-a.akamaihd.net/apps/valve/2010/siggraph2010_vlachos_waterflow.pdf
fonte