Algoritmo de nuvem em tempo real


7

Quero saber como o algoritmo funciona neste jogo: http://www.gametrailers.com/user-movie/cloud-the-game/45068

Especialmente como o jogo gera a nuvem em tempo real e pode se mesclar com outras nuvens dinamicamente.

Tentei pesquisar no Google algumas informações, mas não consegui encontrar as informações úteis. Provavelmente porque eu costumava usar palavras-chave erradas

Respostas:


13

A renderização em nuvem é uma tarefa difícil. Mas essas nuvens no vídeo são apenas algumas partículas "nubladas". Eu não acho que isso seja algo legal :)

Para nuvens agradáveis, o problema não é a simulação da nuvem, mas a renderização da nuvem, que é impossível manipular para ser foto-realista em tempo real para cenas com iluminação dinâmica. O que acontece nas mídias participantes, como a nuvem, é: insira a descrição da imagem aqui

A emissão de luz existe apenas quando a mídia participante emite luz (como gás quente ou fogo) ou quando é iluminada (isso é parte similar à renderização normal); absorção significa que a luz é absorvida e a dispersão é o maior problema computacional. A luz está espalhada dentro do volume. Então você quer ter auto-sombreamento e sombra que emite no chão e cena opaca. Como fazer isso?

Onde obter nuvem? As nuvens podem ser simuladas pelo ruído permanente. É muito comum e parece legal. O ruído Perlin pode ser 4D, onde a quarta dimensão é hora de criar boas nuvens dinâmicas. Se você deseja especificar formas de nuvens: é necessário realizar a volumetrização sobre as formas desejadas, salve-a como grade 3D de densidade e multiplique-a com perlin.

Como renderizá-lo

Ao renderizar partículas? . Nuvens de partículas são possíveis. É o método mais simples. No entanto, a simulação de qualquer propagação de luz entre as partículas é bastante difícil. É muito típico que você precise classificar partículas na direção da visão da câmera (ou no chamado meio eixo entre o dir e o dir. Da câmera). Isso é impossível no aplicativo em tempo real, a menos que sua plataforma de destino não suporte o modelo de sombreador 4 ou melhor, o modelo de sombreador 5 - e a computação gpgpu (como cuda, openCl ou computação direta) - para que você possa escrever classificação de radicais paralelos e classificar partículas em todos os quadros (que será em tempo real). A classificação é necessária para a mistura alfa e também para o mapeamento de sombra inteligente.

Vou guiá-lo para alguns artigos:

Por radiodifusão volumétrica . A radiodifusão volumétrica significa que você tem uma grade onde fez a simulação de fluidos (normalmente Navier-Strokes, mas o formato da nuvem voxelizada também é bom). E dispare raios para cada pixel através do volume e integre a radiação através do raio. Isso é surpreendentemente bom para aplicativos em tempo real . Raycasting no wiki. Você não precisa ter computação gpgpu. A transmissão de raios volumétrica pode ser feita no pixel shader, porque não precisa de nenhuma sincronização entre os threads (raios). Ter grade em textura 3D é perfeito no hardware gráfico, porque você pode se beneficiar da interpolação tri-linear nativa da unidade de textura. O auto-sombreamento pode ser feito disparando raios de todas as amostras para a luz e contando a densidade do volume de sombreamento da luz. Isso é lento. Você pode usar algum mapeamento de sombra com transições (como mapas de sombras profundas). A dispersão da luz também não é possível em tempo real (com gpgpu).

A transmissão de raios volumétrica é rápida e é mais fácil de implementar do que a classificação de partículas e trabalha rápido mesmo em HW mais antigo.

Algo para estudar:


Obrigado pela informação detalhada. Para nosso propósito, a nuvem precisará se transformar em uma forma que especificamos. Então, acho que podemos usar a grade 3d Perlin Noise usando partículas. A iluminação, mesmo através de radiodifusão volumétrica, é provavelmente proibida, porque a plataforma móvel é a nossa plataforma segmentada.
Leo

E os tipos de nuvens no Lumion? Eles não são fáceis de voar, mas são lindos. vimeo.com/12173355
George R

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.