mParticles InterCollision Teste em profundidade

Esse tópico apresenta informações adicionais sobre o uso do teste mParticles InterCollision no Fluxo de partículas.

Primeiro, o que o mParticles InterCollision não faz: Ele não controla se as partículas colidem umas com as outras. Por padrão, se as partículas participam em uma simulação MassFX e a forma da colisão delas é definida por um Operador de formato mParticles, elas colidem umas com as outras. Essa é uma parte integrante da simulação.

O teste mParticles InterCollision registra a colisão entre partículas, logo redireciona as partículas (de acordo com as informações da colisão) para outros eventos.

Adicionar um teste InterCollision mParticles a um evento é o mesmo que ativar a opção Testar verdadeiro se for partícula no teste mParticles Collision: Fluxo de partículas começa a coletar informações sobre colisões. Assim como ocorre com o teste mParticles Collision, o trabalho de coletar essas informações pesa nos recursos da CPU, então, se você não precisa redirecionar partículas para outros eventos com base nas suas colisões umas com as outras, não adicione o teste.



Utilize o grupo Registro de colisão com para definir quais colisões de grupos específicos de partículas registrar. Por padrão, está definido como Partículas no evento atual. Isso significa que se uma partícula no evento atual colide com outra partícula no evento atual, a colisão é registrada e processada. Dependendo de outras opções (Testar verdadeiro se for partícula), a colisão pode ou não fazer com que uma partícula responda ao teste como verdadeiro. Independentemente do resultado, se a opção estiver definida como Partículas no evento atual, somente colisões entre as partículas no evento atual serão processadas.

A opção alternativa é Partículas em eventos. Aqui é possível definir outros eventos, em termos de registro de colisão, nos quais você esteja interessado. Por padrão, a lista exibe todos os eventos no sistema de partículas atual (sob o mesmo evento global PF de origem, já que uma simulação pode executar por Fluxo de partícula apenas o sistema de partícula). Lembre-se que a lista também tem a entrada do evento atual. Portanto, se você precisa registrar a colisão com um conjunto de eventos, incluindo o atual, é possível fazer isso. Como todos os eventos já estão listados, é necessário ressaltar os eventos (torná-los azul escuro) para identificar quais eventos são necessários para colisão.

Para ilustrar a questão sobre o escopo do registro de colisão, considere o seguinte exemplo: MassFXInterCollision01.max.

Nesse exemplo, primeiro todas as partículas formam uma caixa e, em seguida, caem em um toróide defletor. O primeiro evento, Evento 01 , contém dois testes: mParticles Collision para definir a colisão com o toróide defletor e mParticles InterCollision para definir o salto para o seguinte evento quando as partículas colidem umas com as outras. Lembre-se que o Registro de colisão está definido para Partículas no evento atual. Portanto, é possível que algumas partículas sem sorte não colidam com quaisquer outras partículas antes que todas as suas vizinhas já tenham colidido umas com as outras e tenham sido transferidas para o seguinte evento. Como você pode ver, nessa configuração há partículas que foram "deixadas para trás" e permanecem em verde (como no primeiro evento).

Para fazer com que todas as partículas, eventualmente, sigam para o próximo evento, altere o escopo do Registro de colisão para Partículas em eventos e realce todos os três eventos na lista: Evento 001, Evento 002 e Evento 003. Agora, quando você reproduzir a animação, cada partícula receberá uma notificação de colisão e mudará de verde para amarelo, para azul.

Mais uma observação sobre o exemplo MassFXInterCollision01.max: quando as partículas chegam ao último evento, elas ficam estáticas, desativando a simulação (consulte o operador de mParticles Switch no último evento). A natureza estática dessas partículas coloca as partículas que foram "deixadas para trás" (verdes) em uma situação impossível: elas ficam apertadas entre partículas estáticas e não há espaço suficiente para sua colocação. É por isso que você pode ver uma movimentação das partículas verdes.

Você pode evitar esse movimento ajustando o operador mParticles Switch no último evento. Em vez de desativar a simulação, você pode ativar a Correspondência de posição. Dessa forma, partículas do último e do primeiro evento participarão da simulação. Elas são, em certo sentido, iguais para fins de simulação: todas são dinâmicas. Dessa forma, fica disponível "um pouco de espaço" para as partículas verdes e um equilíbrio de inserção é possível.

Para ilustrar a diferença entre as opções Colisões e Colisões múltiplas no grupo Teste verdadeiro se for partícula, veja outro exemplo: MassFXInterCollision02.max. Esse exemplo contém dois eventos e as partículas são redirecionadas para o segundo o evento se elas colidirem umas com as outras 15 vezes, de acordo com a opção # Times (Número de vezes). Nesse evento, as partículas estão definidas para serem estáticas: velocidade e giro são iguais a 0. Os valores de velocidade e giro são definidos por operadores regulares do fluxo de partículas(Velocidade 01 e Giro 01), mas para tornar as partículas estáticas, é usado um operador de mParticles Switch.

Ao reproduzir a animação, é possível ver que nem todas as partículas foram capazes de chegar ao segundo evento. Isto acontece porque algumas delas não colidiram pelo menos 15 vezes durante o curso da animação. Como exercício, reduza o valor do Número de vezes para descobrir qual o número mais alto que esse valor pode ter, garantindo, ao mesmo tempo, que todas as partículas sejam transferidas para o seguinte evento. Esse valor é o menor número de vezes que uma partícula colide com outras durante a animação. Além disso, observe que o escopo do Registro de colisão está definido como Partículas em eventos, com todos os eventos realçados. Nesse exemplo, isso significa que contamos todas as colisões entre partículas.

O último exemplo, MassFXInterCollision03.max, ilustra a utilização das opções do Relatório para operador de dados e Contagem aditiva. Aqui, essas duas opções estão ativadas. Isso significa que o teste, enquanto registra todas as colisões, como definido no Registro de colisão, envia relatórios através de um canal de dados inteiro para serem utilizados por um operador de dados. Observe que o teste mParticles InterCollision não está ligado a nenhum evento, mas abaixo do teste há um operador de dados. O fluxo de dados desse operador, mostrado na lateral esquerda da ilustração a seguir, inclui a entrada de suboperadores mParticles na parte superior. Um deles conta todas as colisões com defletores (nesse caso, é o toróide defletor), enquanto o outro conta todas as colisões entre partículas. Ambos os valores são resumidos e usados como um deslocamento relativo para um mapeamento com uma textura gradiente. Dessa forma, quanto mais vezes uma partícula colide, mais clara é a sua cor.

Uma observação sobre o uso do Relatório para o operador de dados: nesse exemplo, embora o teste não esteja ligado a lugar nenhum, a opção Teste verdadeiro se for partícula é definida para Colisões múltiplas. Essa opção fornece o resultado mais preciso em contagem de colisões, em comparação com as outras opções. No entanto, valor do parâmetro Número de vezes não faz nenhuma diferença quanto a precisão.

Uma observação adicional nesse exemplo: a velocidade de reprodução no viewport é lenta em comparação com os dois primeiros exemplos, especialmente porque o viewport leva um tempo para atualizar as alterações de cor das partículas. Se você alterar o operador de Exibição para Marcadores, você verá uma melhoria significativa na velocidade de reprodução, mas você não verá a mudança de cor das partículas durante a animação.

As opções É lenta após colisão(ões) e É rápida após colisão(ões) são similares às opções de mesmo nome no mParticles Collision e teste de Colisão regulares.

Nota: Como o teste mParticles InterCollision não controla se as partículas colidem umas com as outras e as partículas realmente colidem umas com as outras em uma simulação, surge uma pergunta: Como impedir que partículas de diferentes eventos colidam umas com as outras? Isso pode ser feito com uma utilização apropriada do parâmetro do Grupo de Colisão nos operadores mParticles Shape correspondentes e adicionando um par de exclusões com a ajudante do mParticles World.