Nesta seção, começaremos a analisar a simulação de um grupo de agentes nos quais eles
são tratados menos como indivíduos e mais em massa. O comportamento da multidão difere do comportamento individual,
pois as propriedades dentro da multidão (como emoção, colisão, direção e velocidade) se propagam de uma pessoa para
a outra, dando ao grupo inteiro sua própria identidade. Simular cada indivíduo de um grupo e produzir uma
multidão exigiria muito trabalho e, de
fato, muitas das coisas que você pode considerar importantes tomadores de decisão para o
movimento individual de uma multidão podem ser resumidas em simples matemática vetorial.
Existem vários métodos que os pesquisadores investigaram para simular multidões, incluindo fazer com que as pessoas
se movam como partículas em um fluido para usar dados do mundo real.
Uma multidão não se move como um conjunto caótico de indivíduos, mas de uma maneira quase organizada.
Diz-se que é um sistema auto-organizado em que as linhas de fluxo aparecem na direção do movimento.
No entanto, verificou-se que se uma multidão se tornar mais densa que seis pessoas por metro quadrado,
ocorrerão bolsões de turbulência.
Uma das maneiras mais populares e mais simples de simular uma multidão é com o algoritmo de
rebanho de Reynolds, usado em filmes para simular rebanhos e exércitos de animais.
É baseado em 3 regras simples. Vire para o cabeçalho médio do grupo, vire para o
centro médio do grupo e evite os que estão ao seu redor.
Usaremos essas regras em combinação com navmeshes e reformulação para criar multidões e bandos
nesta seção.
Se você quiser explorar algumas dinâmicas simples de multidões, faça isso usando uma navmesh.
Abra o Unity e crie um plano de terra.
Crie também 2 paredes.
Acabei de criar o plano de aterramento a partir de um plano 3D normal e criei duas paredes de alguns cubos e as
paredes estão posicionadas de modo que haja um corredor no meio.
A cápsula azul que eu adicionei aqui terá que subir aqui, pelo corredor e até
este cubo.
Esta cápsula aqui terá que subir e descer até lá. Então crie 2 cápsulas para que elas
cheguem à Hierarquia. 'Objeto 3D> Cápsula' e eu
os colori de maneira diferente e depois nomeei um RedAgent e um BlueAgent.
Eu também adicionei alguns objetivos. Adicionei um cubo chamado BlueGoal e esse cubo está no extremo oposto
do caminho que vamos criar para o BlueAgent ... e o RedGoal está no extremo oposto
do RedAgent.
Agora o RedAgent precisa de uma navmesh adicionada a ele.
Essas são apenas todas as configurações padrão.
O BlueAgent também possui uma navmesh adicionada
e, em ambos, tenho um script chamado 'AIController' e, nesse script, você
encontrará isso.
Primeiro de tudo, eu tenho uma variável exposta (variável pública) chamada 'objetivo' e é isso
que daremos aos agentes, os 2 cubos de objetivo, para que eles saibam para onde estão indo.
Depois disso, pegamos o NavMeshAgent que é anexado ao nosso personagem.
Não se esqueça de incluir 'usando o UnityEngine. AI; ' biblioteca no topo. No Start, pegamos o agente
conectado à cápsula e também podemos, nesse momento, definir a meta de destino
que será a meta. transformar. posição 'e é tudo o que precisamos fazer.
Podemos até nos livrar da atualização porque não precisamos dela. Salve isso e anexe esse código
ao RedAgent e BlueAgent.
Em seguida, você deseja selecionar o plano e os dois cubos que são as paredes e garantir que eles estejam definidos
como Navegação estática. Você pode fazer isso na guia Navegação> Objeto, marcando
esta caixa de seleção aqui ou também pode configurá-los no Inspetor como nós temos antes.
Uma vez que tudo esteja configurado, você deseja ir ao Bake e clicar no botão [Bake] e isso lhe dará
uma área azul
como você está vendo aqui.
Portanto, as únicas partes que não podem ser passadas são as paredes.
Isso forçará os agentes a passarem de um extremo ao outro.
Agora, para garantir que isso aconteça, selecione BlueAgent e, em seguida, no Inspetor, no código do AIController, você
deseja usar o cubo que está aqui.
Desculpe, ao lado de RedAgent como objetivo da BlueAgent.
Então pegue o cubo (que eu chamei de BlueGoal) e arraste-o e solte-o no slot de
objetivo da cápsula azul. Para a cápsula vermelha, é
o contrário.
O objetivo será o cubo na outra extremidade.
Agora, quando você joga isso, os agentes percorrem o caminho e trocam entre si.
Agora isso foi acelerado pela mágica da edição
de vídeo, mas se você deseja que seus agentes se movam mais rapidamente, não se esqueça de que pode selecioná-los
na Hierarquia, vá até o Inspetor e altere o valor da velocidade.
Atualmente, o meu está definido como 10, o que é bastante rápido por si só.
Quando começamos a adicionar mais agentes, convém que ele corra um pouco mais devagar.
Então, primeiro de tudo, vamos dar uma olhada no fenômeno de 'auto-organização por fluxo', que é onde dois
grupos se unindo, movendo-se em direções opostas, formarão linhas de fluxo através da multidão.
Tudo o que precisamos fazer é selecionar nossos agentes e, em seguida, pressionar Ctrl-D e criar um monte de cópias.
Vamos criar 20 cópias. Agora, com os que estão no lugar, pressione Play e podemos assisti-los.
Eles estão todos no mesmo local, então vão explodir da mesma posição em que estão. Agora, quando eles se juntarem, eles
formarão linhas de
fluxo e isso é apenas
um pequeno grupo, então você terá duas linhas de fluxo claras onde elas se sobrepõem.
A partir daqui, você pode selecionar todas essas duplicatas e duplicá-las duas vezes novamente para obter um pouco
mais e pressionar Reproduzir. Novamente, eles explodem
do lugar único e agora vão se aglomerar nesta área aqui e descobriremos que
eles formarão linhas de fluxo.
Você vê um pouco de turbulência, como você viu lá, onde ficou bastante denso e alguns
caras aqui também ficaram presos nessa multidão também.
Você pode modificar a simulação o quanto quiser, adicionando mais paredes e mais agentes.
Aqui pode ver que tenho 4 agentes de cores diferentes e, mesmo quando eles se amontoam, você pode ver claramente
as linhas de fluxo se formando.
Em um. EU. , quando esse tipo de comportamento ocorre em um sistema
que não está especificamente programado para isso, é chamado de comportamento emergente e são esses resultados inteligentes
e reais que estamos tentando obter em nossos NPCs com o mínimo esforço de programação possível. Na próxima palestra, trabalharemos em
uma simulação de multidão com personagens humanos animados.