Sistema de partículas - Bruno Campagnolo de Paula weblog

Propaganda
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.
31/05/2017 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);
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.
31/05/2017 4
31/05/2017 5
Uso de partículas
 Fogo,
explosões, faíscas, água corrente,
neve, cabelo, magias, spray, rastros, fumaça,
vapor, galáxias, etc.
31/05/2017 6
Prefabs de partículas prontos
Particle Emitter
Emissor de Partículas
 Local
31/05/2017 7
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”
 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)!
31/05/2017 8
Ellipsoid Particle Emitter
Propriedades
 Min
31/05/2017 9
/ 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
 Tangent
31/05/2017 10
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
 Emissão
31/05/2017 11
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
31/05/2017 12
 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
 Systematic:
Geração das partículas na ordem dos
vértices do modelo;
31/05/2017 13
Particle Animator
Animador 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;
31/05/2017 14
Particle Animator
Propriedades
 Does
31/05/2017 15
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
 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;
31/05/2017 16
Particle Animator
Damping
 Damping:
31/05/2017 17
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
 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.
31/05/2017 18
Particle Renderer
Propriedades
 Materials:
textura usada
em cada uma das
partículas;
Ver pasta Standard
Assets > Particles >
Sources;
Criar material novo em
Assets > Create Other
> Material.
31/05/2017 19
Particle Renderer
Propriedades
 Camera
31/05/2017 20
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
 Length
31/05/2017 21
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
 Permite
31/05/2017 22
a criação de rastros e trajetórias
atrás de objetos, conforme eles se movem;
Trail Renderer
Propriedades
 Materials:
31/05/2017 23
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
 Usado
31/05/2017 24
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
 Bounce
31/05/2017 25
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
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);
}
}
31/05/2017 26
Script
Ligar e desligar a emissão
 Tratar
31/05/2017 27
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;
}
}
31/05/2017 28
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);
}
31/05/2017 29
Download