Cette rubrique fournit des informations supplémentaires sur l'utilisation du test mParticles InterCollision dans Particule Flow.
Commençons par ce que mParticles InterCollision ne fait pas : il ne détermine pas si les particules entrent en collision les unes avec les autres. Par défaut, si des particules dont la forme de collision est définie par un opérateur Forme mParticles entrent dans une simulation MassFX, elles entrent en collision les unes avec les autres. Cela fait partie intégrante de la simulation.
Le test mParticles InterCollision enregistre la collision entre les particules et redirige les particules (en fonction des informations de collision) vers d'autres événements.
L'ajout d'un test mParticles InterCollision à un événement est semblable à l'activation de l'option Test positif si particule dans le test mParticles Collision : Particle Flow commence à collecter des informations sur les collisions. Comme avec le test mParticles Collision, la collecte de ces informations impose une charge aux ressources de processeur. Si vous n'avez pas besoin de rediriger les particules vers d'autres événements en fonction d'une collision des unes avec les autres, n'ajoutez pas le test.
Utilisez la zone Enregistrement de collision avec pour définir quelles collisions de groupes spécifiques de particules doivent être enregistrées. Par défaut, l'option est définie sur Particules dans l'événement courant. Cela signifie que si une particule dans l'événement courant entre en collision avec une autre particule dans l'événement courant, la collision est enregistrée et traitée. Selon les autres options (Test positif si particule), la collision peut ou non générer le résultat True pour une particule. Quel que soit le résultat, si l'option est définie sur Particules dans l'événement courant, seules les collisions entre particules de l'événement courant sont traitées.
L'autre option est Particules dans les événements. Elle permet de définir d'autres événements qui vous intéressent en termes d'enregistrement des collisions. Par défaut, la liste affiche tous les événements du système de particules courant (dans l'événement global Source PF, car une simulation ne peut s'exécuter que par système de particules Flux de particules). N'oubliez pas que la liste contient également l'entrée de l'événement courant. Par conséquent, si vous souhaitez enregistrer la collision avec un ensemble d'événements, y compris l'événement courant, vous pouvez le faire. Etant donné que tous les événements sont déjà répertoriés, vous n'avez plus qu'à mettre en surbrillance les événements (en bleu foncé) pour identifier les événements à prendre en compte pour l'enregistrement des collisions.
Pour illustrer la discussion concernant la portée de l'enregistrement des collisions, voyez l'exemple suivant : MassFXInterCollision01.max .
Dans cet exemple, toutes les particules forment initialement une boîte avant de tomber sur un déflecteur torique. Le premier événement, Evénement 01 , contient deux tests : mParticles Collision pour définir la collision avec le déflecteur torique et mParticles InterCollision pour définir le passage à l'événement suivant lorsque les particules entrent en collision les unes avec les autres. Gardez à l'esprit que la portée de l'enregistrement des collisions est définie sur Particules dans l'événement courant. Par conséquent, il se peut que, par malchance, certaines particules n'entrent pas en collision avec d'autres avant que toutes leurs voisines le fassent et soient par conséquent transmises à l'événement suivant. Comme vous pouvez le voir, dans cette configuration, certaines particules sont "laissées derrière" et restent en vert (comme dans le premier événement).
Pour faire en sorte que toutes les particules finissent par passer à l'événement suivant, modifiez la portée de l'enregistrement des collisions en sélectionnant Particules dans les événements et mettez en surbrillance les trois événements de la liste : Evénement 001, Evénement 002, et Evénement 003. Désormais, lorsque vous exécutez l'animation, chaque particule reçoit une notification de collision et passe du vert au jaune et au bleu.
Une dernière remarque concernant l'exemple MassFXInterCollision01.max : une fois que les particules parviennent au dernier événement, elles deviennent statiques par désactivation de la simulation (voyez l'opérateur mParticles Interrupteur dans le dernier événement). La nature statique de ces particules met certaines particules "oubliées" (celles en vert) dans une situation impossible : elles sont écrasées entre des particules statiques et il n'y a pas suffisamment de place pour les placer. C'est pourquoi vous pouvez apercevoir du bruit dans le mouvement des particules vertes.
Vous pouvez éviter ce problème en ajustant l'opérateur mParticles Interrupteur dans le dernier événement. Au lieu de désactiver la simulation, vous pouvez activer l'option Faire correspondre la position. De cette façon, les particules du dernier et du premier événement participent toutes à la simulation. Elles sont, dans un sens, égales aux fins de la simulation : toutes sont dynamiques. Par conséquent, il y a de l'espace de réserve pour les particules vertes et un positionnement équilibre est réalisable.
Pour illustrer la différence entre les options Entre en collision et Est entrée en collision plusieurs fois dans la zone Test positif si particule, voyez cet autre exemple : MassFXInterCollision02.max. Cet exemple contient deux événements. Les particules sont redirigées vers le deuxième événement si elles entrent en collision avec les autres 15 fois, comme indiqué dans l'option Nb de fois. Dans l'événement suivant, les particules sont définies comme statiques : vitesse et rotation sont égales à 0. Les valeurs de vitesse et de rotation sont définies par des opérateurs Flux de particules ordinaires (Vitesse 01 et Rotation 01), mais pour rendre les particules statiques, on utilise un opérateur mParticles Interrupteur.
Si vous exécutez l'animation, vous pouvez voir que toutes les particules ne parviennent pas à passer au second événement. En effet, certaines ne sont pas entrées en collision au moins 15 fois au cours de l'animation. En guise d'exercice, réduisez le paramètre Nb de fois pour voir jusqu'où cette valeur peut aller tout en garantissant le transfert de toutes les particules vers l'événement suivant. Cette valeur est le plus petit nombre de fois qu'une particule entre en collision avec d'autres particules au cours de l'animation. Notez également que la portée d'enregistrement est définie sur Particules dans les événements et que tous les événements sont mis en surbrillance. Dans cet exemple, cela signifie que nous comptons toutes les collisions interparticules.
Le dernier exemple ( MassFXInterCollision03.max ) illustre l'utilisation des options Rapport à l'opérateur de données et Comptage additif. Ici, ces deux options sont activées. Cela signifie que le test, tout en enregistrant toutes les collisions définies dans la portée Enregistrement de collision, les rapporte via un canal de données de type Entier à utiliser par un opérateur de données. Notez que le test mParticles InterCollision n'est relié à aucun événement, mais qu'il est suivi d'un opérateur Données. Le flux de données de cet opérateur, sur le côté gauche de l'illustration ci-dessous, inclut des sous-opérateurs Entrée mParticles, en haut. L'un d'eux compte toutes les collisions avec des déflecteurs (en l'occurrence, le déflecteur torique), tandis que l'autre inclut toutes les collisions interparticules. Ces deux valeurs sont additionnées et utilisées comme décalage relatif pour un mapping avec un dégradé de texture. De cette manière, plus une particule entre en collision avec d'autres éléments, plus elle pâlit.
Une remarque concernant l'utilisation de l'option Rapport à l'opérateur de données : dans cet exemple, bien que le test ne soit relié à aucun événement, l'option Test positif si particule est définie sur Est entrée en collision plusieurs fois. Cette option donne le résultat le plus précis dans le comptage des collisions, par rapport aux autres possibilités. En revanche, le paramètre Nb de fois n'influe en rien sur la précision.
Une remarque supplémentaire concernant cet exemple : la vitesse de lecture dans la fenêtre est lente en comparaison des deux premiers exemples, principalement parce que la fenêtre met du temps à actualiser les couleurs changeantes des particules. Si vous modifiez l'opérateur Afficher sur Repères, vous noterez une amélioration sensible de la vitesse de lecture, mais vous ne verrez pas les particules changer de couleur au cours de l'animation.
Les options Ralentit après collision et Accélère après collision sont semblables aux options du même nom dans mParticles Collision et dans les tests de collision ordinaires.