Criar bandos, enxames, manadas, rebanhos, cardumes... com sistema de Boids

Cenário

1. Crie um plano (irá servir para emitir as borboletas) e uma borboleta. Pode alterar o aspeto ou utilizar um qualquer outro objeto.

...

Animação das borboletas

2. Criámos 2 shapekeys para animar as asas. Na primeira shapekey, as asas estão em baixo.

...

3. Na segunda shapekey, as asas estão em cima. Quando o valor da Key1 estiver a 1 as asas estão em cima. Quando o valor da Key1 estiver a 0, as asas estão em baixo.

...

4. Introduza keyframes no Value da Key1. Na frame 1 coloque o Value a 0. Na frame 10 coloque o Value a 1. Na frame 20 volte a colocar o Value a 0. Deste modo, criou um ciclo.

...

5. No Graph Editor, com o canal Key1 selecionado (canal onde foram introduzidas as keyframes), adicione um modifier Cycles. Os Modifiers no Graph Editor estão disponíveis na barra de propriedades (atalho N).

Com o Modifier Cycles, a animação deverá repetir-se infinitamente.

...

Material das borboletas

6. Como estamos a trabalhar em Cycles, crie um material similar ao apresentado abaixo para a borboleta. Deste modo, só com um material conseguimos criar variedade de cores.

Em baixo, duplicámos a borboleta (Não precisa de duplicar a sua borboleta!) apenas para ver que ambas as borboletas, com o mesmo material, têm um aspeto diferente porque têm uma localização diferente. Com esta configuração (Location) as borboletas vão mudar de cor quando estiverem a voar (porque vão alterando a sua localização). Se quiser que as borboletas tenham cores diferentes mas mantenham essas mesmas cores durante a animação, utilize o Random.

...

Criar o bando

7. Inserimos um sistema de partículas do tipo Boids com as seguintes configurações:

  • Number: 20 (número de borboletas criadas)
  • Start: 1 (frame em que começa a simulação e surgem as borboletas)
  • End: 1 (frame em que termina a simulação e a partir da qual já não são adicionadas borboletas) [Nós queremos que estejam todas as borboletas adicionadas desde o início, daí utilizarmos a frame 1 no Start e End.]
  • Lifetime: 5000 (frames de vida das partículas-borboletas) [Para evitar que as partículas-borboletas desapareçam/morram, inserimos um valor exageradamente elevado]
...

O sistema Boids permite diversas configurações com diferentes comportamentos. Os boids podem mover-se no ar (Allow Flight), em "terra" (Allow Land) ou trepar/escalar objetos (Allow Climbing). É ainda possível criar "batalhas" entre boids.

Estes comportamentos podem ser configurados em diversos parâmetros específicos para voar, andar em terra e lutar/combater. Para as nossas borboletas (que só voam) os importantes são:

  • Max/Min Air Speed: velocidade máxima/mínima no ar
  • Max Air Acceleration: define velocidade com que o boid pode mudar de direção
  • Max Air Angular Velocity: aceleração súbita para cumprir regra
  • Air Personal Space: raio/espaço do boid, distância para os restantes boids

8. No painel Render escolhemos a opção Object e selecionámos a borboleta criada anteriormente. O Size permite manipular a dimensão das borboletas-partículas.

...

9. Para controlarmos o bando de borboletas, adicionámos um Empty à cena e no Boids Brain introduzimos uma regra do tipo Goal apontada ao objeto Empty. Agora, podemos manipular o Empty (ou animar com keyframes) e as borboletas irão atrás.

Por vezes, a lógica-comportamento não é imediatamente atualizada. Deve sempre recomeçar a simulação do início e pode ser necessário apagar a Cache (painel Cache)...

...

O Boids Brain é onde programamos os vários comportamentos do sistema de partículas e a sua relação/hierarquia. Se os boids agrupam, afastam-se, etc.

Regras/rules existentes

  • Goal: procura atingir objetivo
  • Avoid: evita objeto identificado
  • Avoid Collision: evita colisão com outros boids ou objetos com Deflection ativado
  • Separate: Boids afastam-se uns dos outros.
  • Flock: Boids copiam movimentos dos que estão próximos, agrupam.
  • Follow Leader: seguem o líder em vez de um Boid (Distance = distância do líder; Line = seguem o líder em linha)
  • Average Speed: é mantida velocidade média
  • Fight: "atacam" outros boids

Rule Evaluation (modo como as regras são avaliadas/interpretadas): Average (utiliza média das regras), Random (regra aleatória para cada boid), Fuzzy (utiliza fuzzy logic para avaliar regras).

10. E agora temos um bando de borboletas a voar que segue o nosso Empty...

...

Em breve.