1 / 29

Sistema de Partículas

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;

Download Presentation

Sistema de Partículas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bruno C. de Paula Sistema de Partículas 1º Semestre 2010 > PUCPR > Pós Jogos

  2. 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.

  3. 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);

  4. 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.

  5. Uso de partículas • Fogo, explosões, faíscas, água corrente, neve, cabelo, magias, spray, rastros, fumaça, vapor, galáxias, etc.

  6. Prefabs de partículas prontos

  7. 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).

  8. 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)!

  9. 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;

  10. 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.

  11. 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;

  12. Mesh Particle EmitterPropriedades • Interpolate Triangles: • Sim: Partículas emitidas na superfície; • Não: Partículas emitidas nos vértices; Interpolate = on Interpolate = off

  13. Mesh Particle EmitterPropriedades • Systematic: • Geração das partículas na ordem dos vértices do modelo;

  14. 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;

  15. 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;

  16. 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;

  17. 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

  18. 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.

  19. 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.

  20. 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.

  21. 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;

  22. Trail RendererRenderizador de rastro • Permite a criação de rastros e trajetórias atrás de objetos, conforme eles se movem;

  23. 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.

  24. 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.

  25. 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.

  26. 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); } }

  27. 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; } }

  28. 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; } }

  29. 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); }

More Related