290 likes | 390 Views
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;
E N D
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 à: • 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! • 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 • Fogo, explosões, faíscas, água corrente, neve, cabelo, magias, spray, rastros, fumaça, vapor, galáxias, etc.
Particle EmitterEmissor de Partículas • 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 EmitterEmissor dentro de “esfera” • 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 EmitterPropriedades • 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 EmitterPropriedades • 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 EmitterEmissor dentro de malha • 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 EmitterPropriedades • Interpolate Triangles: • Sim: Partículas emitidas na superfície; • Não: Partículas emitidas nos vértices; Interpolate = on Interpolate = off
Mesh Particle EmitterPropriedades • Systematic: • Geração das partículas na ordem dos vértices do modelo;
Particle AnimatorAnimador de Partículas • 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 AnimatorPropriedades • 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 AnimatorPropriedades • 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 AnimatorDamping • 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 RendererRenderizador de Partículas • 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.
Particle RendererPropriedades • Materials: textura usada em cada uma das partículas; • Ver pasta Standard Assets > Particles > Sources; • Criar material novo em Assets > Create Other > Material.
Particle RendererPropriedades • 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 RendererPropriedades • 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 RendererRenderizador de rastro • Permite a criação de rastros e trajetórias atrás de objetos, conforme eles se movem;
Trail RendererPropriedades • 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 ColliderColisor de partículas • Usado para colidir as partículas com outros objetos em cena; • Caro computacionalmente; • Ao colidir, a mensagem enviada ao Particle Collider é OnParticleCollision.
World Particle ColliderPropriedades • 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.
ScriptAplicar uma força quando colide 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); } }
ScriptLigar e desligar a emissão • 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 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 • Ú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); }