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

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

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

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

Sistema de Partículas

1º Semestre 2010 > PUCPR > Pós Jogos

Bruno C. de PaulaBruno C. de Paula

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

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

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

Sistema de PartículasConjunto de componentes dedicado à:

Emissão (Particle Emitter);Animação (Particle Animator);Renderização de objetos de partícula

(Particle Renderer);

311/04/23

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

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.

411/04/23

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

Uso de partículasFogo, explosões, faíscas, água corrente,

neve, cabelo, magias, spray, rastros, fumaça, vapor, galáxias, etc.

511/04/23

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

Prefabs de partículas prontos611/04/23

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

Particle EmitterEmissor de PartículasLocal 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).

711/04/23

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

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

811/04/23

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

Ellipsoid Particle EmitterPropriedadesMin / 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;

911/04/23

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

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.

1011/04/23

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

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;

1111/04/23

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

Mesh Particle EmitterPropriedades Interpolate Triangles:

Sim: Partículas emitidas na superfície;Não: Partículas emitidas nos vértices;

1211/04/23

Interpolate = on Interpolate = off

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

Mesh Particle EmitterPropriedadesSystematic:

Geração das partículas na ordem dos vértices do modelo;

1311/04/23

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

Particle AnimatorAnimador de PartículasMove / 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;

1411/04/23

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

Particle AnimatorPropriedadesDoes 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;

1511/04/23

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

Particle AnimatorPropriedadesRnd 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;

1611/04/23

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

Particle AnimatorDampingDamping: 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;

1711/04/23

Damping<1 Damping=1 Damping > 1

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

Particle RendererRenderizador de PartículasNecessá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.

1811/04/23

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

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.

1911/04/23

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

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.

2011/04/23

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

Particle RendererPropriedadesLength 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;

2111/04/23

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

Trail RendererRenderizador de rastroPermite a criação de rastros e

trajetórias atrás de objetos, conforme eles se movem;

2211/04/23

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

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.

2311/04/23

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

World Particle ColliderColisor de partículasUsado para colidir as partículas com

outros objetos em cena;Caro computacionalmente;Ao colidir, a mensagem enviada ao

Particle Collider é OnParticleCollision.

2411/04/23

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

World Particle ColliderPropriedadesBounce 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.

2511/04/23

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

ScriptAplicar uma força quando colide

2611/04/23

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

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

ScriptLigar e desligar a emissãoTratar a propriedade emit do

ParticleEmitter;

2711/04/23

function Update () { var emissor : ParticleEmitter = GetComponent(ParticleEmitter); // Tecla espaço liga e desliga a fogueira if(Input.GetKeyDown("space")) { emissor.emit = ! emissor.emit; }}

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

Script Alterar propriedades do sistema de partículas

2811/04/23

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

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

Script TimedObjectDestructor.jsÚtil para destruir objetos após certo

tempo;

2911/04/23

var timeOut = 1.0;var detachChildren = false;

function Awake (){ Invoke ("DestroyNow", timeOut);}

function DestroyNow (){ if (detachChildren) { transform.DetachChildren (); } DestroyObject (gameObject);}