[quote=Rummenigge]Ficou muito louco meu!!! massa mesmo!
Depois você posta o código fonte aê, hehe! [/quote]
Sim, como eu falei, depois vou postar uma série de artigos no Ponto V! explicando como o gerador funciona: a física por trás das partículas, os diferentes desenhos do gerador, a técnica de otimização da pintura, os padrões de projeto para torná-lo flexível, etc.
Então, lógico, posto os fontes completos.
Só não decidi ainda se farei isso em Java ou em C++ (linguagem onde desenvolvi esse gerador originalmente, usando a SDL_Gfx para o desenho das partículas). Se for em C++, provavelmente irei reescrever o mecanismo de pintura na OpenGL antes de postar. A vantagem é que com a OpenGL você pode fazer blending aditivo, e fazer partículas que brilhem mais quando estão juntas (ideal para partículas energéticas, como o fogo). No C++ uma das configurações do gerador também é o modelo de memória usado na alocação das partículas, coisa que o GC torna obsoleto em Java.
Com a otimização deu para deixar a qualidade do desenho das partículas no máximo, com anti-aliasing, dithering, e tudo mais que temos direito.
O algorítmo de blending do Java 2D é bem melhor que o da SDL também. =)
Parabéns! Melhor do que o aplicativo presente no Iphone 4
Apenas algumas observações:
Não sei se você queria fazer assim, mais quando eu seguro o botão direito em “Candle Flames” o fogo altera de posição (vento para direita/esquerda)… E quando eu seguro o botão direito em “Ring of Fire” o fogo se apaga.
Um detalhe, é que no meu pc (em determinados momentos (quando seguro o botão direito)) na imagem “Ring of Fire” o FPS cai e chega a dar uma travada ao passar para próxima imagem.
Reparei que, onde você faz efeito de fogo, você usa círculos. Mas isso me parece um tantinho artificial. Daria para fazer alguma coisa mais realista, tipo um losango que ia afinando até se tornar um ponto e, finalmente, apagar?
(Repare que eu sou bem leigo nessa parte de Java 2D).
Parabéns vini. Aquele nosso debate de ontem possibilitou um ganho enorme no desempenho do gerador de partículas. Quando li o seu email explicando o novo algoritmo achei a lógica sensacional. Mais uma vez mostrando que o bom software não está na linguagem e sim no domínio dos algoritmos. Precisa transformá-lo em artigo.
Parabéns mais uma vez.
[quote]
Um detalhe, é que no meu pc (em determinados momentos (quando seguro o botão direito)) na imagem “Ring of Fire” o FPS cai e chega a dar uma travada ao passar para próxima imagem.[/quote]
Engraçado, aqui o FPS mínimo está em 90(P.V.: Geforce 310GS).
É isso mesmo. Na chama, quando vc clica, vc coloca vento sobre a chama. É como se vc “soprasse” ela. Quanto mais perto da chama, mais forte é o sopro.
No Anel de Fogo e na Cascata, eu desligo o emissor de partículas no clique do mouse.
E no Fireworks vc lança mais um foguete a cada clique.
[quote=asaudate]Pergunta de leigo:
Reparei que, onde você faz efeito de fogo, você usa círculos. Mas isso me parece um tantinho artificial. Daria para fazer alguma coisa mais realista, tipo um losango que ia afinando até se tornar um ponto e, finalmente, apagar?
(Repare que eu sou bem leigo nessa parte de Java 2D).
[/quote]
Poderia sim. A biblioteca de partículas permite configurar o tamanho, forma, mudança de cor, transparência, forma do emissor e a física da partícula. Só que eu não perdi muito tempo para montar os demos.