Prioridade e a ordem de execução

Os suboperadores do tipo de saída, incluindo a Alteração de Quantidade, têm opções para definir a ordem de Prioridade e a de Execução. Ao criar configurações complexas, é importante estar ciente das seguintes opções.

A ordem de modificação dos dados e de processamento é definida pelos suboperadores de Ssaída. Os suboperadores de Saída direcionam a modificação de dados. Eles extraem os dados de partículas dos suboperadores acima no fluxo de dados e definem os dados como propriedades de partículas.

Os suboperdores de saída com o mesmo valor da Ordem de Execução lida com os mesmos dados de entrada. Quando o valor da Ordem de Execução for o mesmo, o valor da Ordem de Prioridade define a ordem na qual os Suboperadores de Saída extraem os dados de entrada. Somente depois que todos os dados forem obtidos, eles são aplicados às propriedades de partículas.

Se os suboperadores tiverem valor de Ordem de Execução diferentes, então eles podem lidar com diferentes dados de entrada, mesmo se puxarem os dados do mesmo suboperador de entrada Isto acontece porque um suboperador de Saída com uma ordem de execução menor pode alterar os dados em algumas propriedades de partículas. Quando o suboperador de saída com maior ordem de execução puxa os dados, estes dados já foram modificados.

Considere este exemplo: quando as partículas vêm para um evento, é necessário calcular os valores iniciais para todas as novas partículas. Depois, se quiser modificar as propriedades de partículas em cada quadro (independente se uma partícula é nova no evento ou não) e durante esta modificação, é necessário que os valores iniciais sejam definidos em todas as partículas.

Para este cenário, há dois fluxos de dados: o primeiro fluxo calcula os valores iniciais; e o segundo modifica propriedades de fluxo de partículas. O suboperador de Saída para o primeiro fluxo deve ter a Ordem de Execução = 1, e provavelmente a entrada de filtro será definida a Padrão de Entrada Novo no evento. O suboperador de Saída no segundo fluxo deve ter a Ordem de Execução = 2.

Considere a possibilidade de outro cenário: analise os dados de velocidade em todas as partículas e, dependendo de alguma condição, defina dois subconjuntos de partículas, cada um terá a velocidade modificada em diferentes formas. Para este cenário, é necessário usar dois supoeradores de Saída com a mesma ordem de execução. Assim, garante-se que os valores da velocidade inicial sejam os mesmos para cada Saída.

Aliás, como o suboperador de Alteração de Valor muda o número de partículas, não é possível compartilhar o valor da ordem de execução com nenhum outro suboperador. As proteções no programa impedem de fazerr isso.

Além disso, o grupo de Execução e a Ordem de Prioridade também têm botões de Pré/Normal/Pós. Esta opção define a ordem de processamento em um nível superior. Se estiver definido para pré, esta saída é concluída antes que quaisquer operadores no evento atuais sejam executados. Se estiver definido como Normal, então o suboperador de saída é executado na ordem normal, entre os outros operadores no mesmo evento. Se estiver definido como Pós, a saída é processada depois que todos os operadores e todos os testes neste sistema de partículas terminem seus trabalhos para esta etapa de integração.

Para um exemplo que ilustra o uso de Pré/Normal/Pós, abra o arquivo CollisionAsBody.max .

Este exemplo utiliza o operador de Dados para produzir colisão de corpo inteiro "rápida e barata". Como provavelmentes se sabe, os sistemas de partículas no 3ds Max tratam as partículas como entidades de ponto com respeito às colisões e aos defletores. Portanto, se uma partícula tiver uma forma com tamanho visível, a forma penetra nas superfícies do deflector, que pode arruinar todo o efeito visual. O exemplo mostra como conectar os dados das partículas para deslocar a posição das partículas pela quantidade de interpenetração.

Primeiro, vamos criar um canal de dados personalizado para armazenar valores reais, já que o deslocamento da posição precisa evitar a penetração. Para todas as novas partículas, iniciaremos este valor a zero — consulte bloco de dados de 01.

Depois que todos os outros operadores e testes tiverem concluído o trabalho, vamos calcular a quantidade da penetração e a posição da partícula de deslocamento na fase Pós. Desta forma, as posições da partícula são ajustadas para evitar penetração e as partículas estão prontas para a renderização. Os operadores de Saída no lado direito fazer seu trabalho na fase Pós.

A seguir, na fase Pré, é necessário mover as partículas de volta às suas posições sem deslocamento, para que os testes de colisão continuem seu trabalho como se nada tivesse acontecido.

Dependente do Histórico

Os sistemas de partículas são essencialmente dependentes do histórico. Em outras palavras, são capazes de determinar o estado de um sistema de partículas, digamos, no quadro 100, o software tem que calcular os estados de todos os quadros anteriores desde a primeira que nasceu. Isto acontece por causa das alterações nas propriedades de partículas - por exemplo, as posições das partículas — se acumulam devido às constantes mudanças em outros parâmetros, tais como a velocidade.

No entanto, para determinadas configurações, algumas propriedades de partículas não são dependentes do histórico e podem ser calculadas a partir do estado atual de partículas. Por exemplo, a orientação das partículas, se elas "olharem para" algo como a câmera ou seguirem a velocidade da partícula. Aqui a orientação da partícula depende tanto na posição de partículas, como é o caso ao ficar de frente para a câmera, ou velocidade de partículas. Neste caso, para calcular a orientação atual das partículas, não é necessário conhecer todo o histórico das partículas; basta conhecer sua velocidade atual ou posição.

Assim, o operador que calcula a orientação da partícula não depende do histórico. O operador não precisa fazer nada enquanto o sistema passa através de todos os quadros anteriores até chegar ao quadro atual. O operador tem apenas que funcionar no quadro final; para analisar a posição/velocidade das partículas no último quadro e calcular a orientação de partículas correspondentes.

Se tiver certeza de que o resultado do suboperador de saída não depende do histórico de partículas, é possível desativar a opção Dependente do Histórico. Isto pode acelerar o total de cálculos, já que faz o operador de dados funcionar somente no ltimo quadro.