1º Semestre 2010 > PUCPR > Pós Jogos Bruno C. de Paula Sistema de Partículas 1º Semestre 2010 > PUCPR > Pós Jogos
Resumo Hoje vamos entender o sistema de partículas do Unity 3D; Vamos trabalhar com os componentes: Ellipsoid Particle Emitter; Mesh Particle Emitter; Particle Animator; Particle Renderer; Trail Renderer; World Particle Collider.
Sistema de Partículas Conjunto de componentes dedicado à: 23/03/2017 Conjunto de componentes dedicado à: Emissão (Particle Emitter); Animação (Particle Animator); Renderização de objetos de partícula (Particle Renderer);
Partículas são diferentes dos objetos normais! 23/03/2017 Vem em grupos de centenas ou milhares; Possuem movimentação com aspectos aleatórios (fuzzy); Lidam com colisão simplificada ou inexistente; São construídos para ter vida curta; Essenciais para efeitos realistas.
Uso de partículas 23/03/2017 23/03/2017 Fogo, explosões, faíscas, água corrente, neve, cabelo, magias, spray, rastros, fumaça, vapor, galáxias, etc. Fonte imagens: http://en.wikipedia.org/wiki/Particle_system http://graphics.stanford.edu/papers/vortex_particle-sig05/
Prefabs de partículas prontos 23/03/2017
Particle Emitter Emissor de Partículas 23/03/2017 Local que as partículas são emitidas; Tipos: Ellipsoid Particle Emitter: geração em área de uma esfera (elipsóide, na verdade...); Mesh Particle Emitter: geração em área de uma mesh (malha).
Ellipsoid Particle Emitter Emissor dentro de “esfera” 23/03/2017 Mais comum; Usado para fumaça, vapor, etc; Possui propriedades de: Tamanho; Energia (duração da vida); Emissão (num partículas); Velocidade inicial. Não usar partículas muito grandes (performance)!
Ellipsoid Particle Emitter Propriedades 23/03/2017 Min / Max Size: tamanho em metros; Min / Max Energy: quantos segundos até desaparecer; Min / Max Emission: número de partículas por segundo; World / Local Velocity: velocidade inicial nas coordenadas do mundo e local; Rnd Velocity: velocidade inicial aleatória; Emmiter Velocity Scale: velocidade que é herdada do emissor se estiver se movendo;
Ellipsoid Particle Emitter Propriedades 23/03/2017 Tangent Velocity: velocidade inicial em X, Y e Z em relação à superfície do emissor; Simulate in Worldspace: Se não, movem-se quando o emissor se move; One Shot: gera as partículas de uma vez, explosão, magia, etc; Ellipsoid: determina a área de criação das partículas; Min Emitter Range: espaço dentro da elipsóide no qual não são criadas partículas. Quanto maior, mais distante é a criação do centro.
Mesh Particle Emitter Emissor dentro de malha 23/03/2017 Emissão de partículas seguindo a superfície de uma mesh; Permitem interação com objetos complexos; Também possui propriedades de: Tamanho; Energia (duração da vida); Emissão (num partículas); Velocidade inicial. Útil para efeitos de glow (brilho) em lâmpadas; Passos para criação;
Mesh Particle Emitter Propriedades 23/03/2017 Interpolate Triangles: Sim: Partículas emitidas na superfície; Não: Partículas emitidas nos vértices; Interpolate = on Interpolate = off
Mesh Particle Emitter Propriedades 23/03/2017 Systematic: Geração das partículas na ordem dos vértices do modelo;
Particle Animator Animador de Partículas 23/03/2017 Move / transforma / anima as partículas conforme o tempo passa; Determina características individuais de uma partícula; Mudança de: Cor, rotação, tamanho, aceleração;
Particle Animator Propriedades 23/03/2017 Does Animate Color: partículas trocam de cor em seu ciclo de vida; Color Animation (0 a 4): Todas as cores pelas quais a partícula passa, usar degradê para fade; World / Local Rotation Axis: rotação da partícula, útil em magias e bolhas; Size Grow: Controla o crescimento das partículas durante a vida, útil em fumaça;
Particle Animator Propriedades 23/03/2017 Rnd Force: força aleatória aplicada a cada frame; Força: força constante aplicada a cada frame; Auto Destruct: destrói o game object associado ao particle animator quando as partículas desaparecerem, útil para explosões;
Particle Animator Damping 23/03/2017 Damping: diminuição da velocidade a cada frame; Entre 0 e 1: diminui velocidade; 1: Sem aceleração / desaceleração; 2: Velocidade dobra a cada segundo; Damping<1 Damping=1 Damping > 1
Particle Renderer Renderizador de Partículas 23/03/2017 23/03/2017 Necessário para exibir as partículas no ambiente; Na prática, partículas são sprites quadrados com transparência (gráficos 2D); Pode ser animada; Pode usar billboarding; Partes pretas do material são transparentes. Fonte: livro do Unity Game Essentials
Particle Renderer Propriedades 23/03/2017 Materials: textura usada em cada uma das partículas; Ver pasta Standard Assets > Particles > Sources; Criar material novo em Assets > Create Other > Material.
Particle Renderer Propriedades 23/03/2017 Camera Velocity Scale: Quantidade que a partícula é esticada conforme o movimento da câmera, útil para efeito de faísca; Strech Particles: determina o modo de renderização: Billboard: virados em direção à câmera; Stretch: virada na direção do movimento; Sorted Billboard: ordenadas pela profundidade (caro); Vertical / Horizontal: alinhamento em X/Z ou X/Y.
Particle Renderer Propriedades 23/03/2017 Length Scale (se stretch): determina quanto estica na direção do movimento; Velocity Scale (se strech): determina a taxa que as particulas são esticadas; UV Animation: permite a definição de uma textura animada a partir de um sprite formato por X Tiles de largura e Y Tiles de Altura. Cycles determina o número de loops da animação;
Trail Renderer Renderizador de rastro 23/03/2017 Permite a criação de rastros e trajetórias atrás de objetos, conforme eles se movem;
Trail Renderer Propriedades 23/03/2017 Materials: textura utilizada; Time: duração do rastro em segundos; Start / End Width: tamanho inicial e final do rastro; Colors (0 a 4): Cores aplicadas do início ao fim do rastro; Min Vertex Distance: determina quanto o objeto deve ir antes de um segmento seja solidificado. Quanto menor, o rastro é mais suave; Auto Destruct: destrói o objeto associado ao rastro depois do tempo.
World Particle Collider Colisor de partículas 23/03/2017 Usado para colidir as partículas com outros objetos em cena; Caro computacionalmente; Ao colidir, a mensagem enviada ao Particle Collider é OnParticleCollision.
World Particle Collider Propriedades 23/03/2017 Bounce Factor: Partículas aceleram ou freiam quando colidem com outros objetos; Collision Energy Loss: perda de vida em segundos que a partícula perde quando colide; Min Kill Velocity: Se a velocidade ficar menor que o mínimo ela é eliminada; Collides With: com quais layers colide; Send Collision Message: cada partícula envia uma mensagem de colisão individualmente.
Script Aplicar uma força quando colide 23/03/2017 function OnParticleCollision(obj : GameObject) { var body = obj.rigidbody; // Só aplica se o corpo for corpo rígido if(body) { Debug.Log("colidiu com: " + obj.name); // Obtém a direção var direcao = obj.transform.position - transform.position; direcao = direcao.normalized; // Aplica uma força body.AddForce( direcao * 5); }
Script Ligar e desligar a emissão 23/03/2017 Tratar a propriedade emit do ParticleEmitter; function Update () { var emissor : ParticleEmitter = GetComponent(ParticleEmitter); // Tecla espaço liga e desliga a fogueira if(Input.GetKeyDown("space")) { emissor.emit = ! emissor.emit; }
Script Alterar propriedades do sistema de partículas 23/03/2017 function Update () { var animator : ParticleAnimator = GetComponent(ParticleAnimator); if(Input.GetKeyDown("g")) { animator.sizeGrow = animator.sizeGrow * 2; } if(Input.GetKeyDown("h")) { animator.sizeGrow = animator.sizeGrow / 2;
Script TimedObjectDestructor.js 23/03/2017 Útil para destruir objetos após certo tempo; var timeOut = 1.0; var detachChildren = false; function Awake () { Invoke ("DestroyNow", timeOut); } function DestroyNow () if (detachChildren) { transform.DetachChildren (); DestroyObject (gameObject);