Le jeu d'outils de manipulation avancée des données de Flux de particules utilise différents types de données ; en voici une liste complète, avec des illustrations de chacun en tant que connecteur d'entrée de sous-opérateur :
Booléen - Bleu
Complexe - Cyan
Egal - Vert
Entier - Indigo
Matrice - Rouge foncé
Objet - Orange
Paire - Rose
Quaternion - Jaune
Réel - Rouge
Temps - Vert menthe
Vecteur - Violet
Les couleurs sont utilisées par les connecteurs d'entrée et de sortie de la fenêtre de données et, dans certains cas, par des boutons permettant des entrées alternatives à la spécification de valeurs dans l'interface ordinaire.
La plupart des types de données sont explicites. Les paragraphes ci-dessous décrivent ceux qui le sont moins :
Certains sous-opérateurs génèrent des données pour lesquelles le format Vecteur, Entier ou Temps ne convient pas parfaitement. Par conséquent, deux types de données "artificiels" ont été ajoutés :
Paire = {Vecteur + Entier}
Complexe = {Vecteur + Entier + Temps} (pas un nombre complexe au sens conventionnel).
Voici une présentation de situations utilisant les types Paire et Complexe :
L'une des entrées est de type Paire = {Vecteur + Entier}, le vecteur indiquant la position en coordonnées locales de l'objet et l'entier étant l'index de l'objet, tel qu'il est défini par le sous-opérateur Sélectionner un objet. L'index de l'objet est nécessaire car le sous-opérateur Objet peut utiliser plusieurs objets à la fois. S'il n'y a qu'un objet de référence à utiliser, définissez l'entier sur 0. Pour rappel, les index dans la fenêtre de données sont en base 0 (ils commencent à 0). C'est différent de MAXScript, où les index sont en base 1. Par conséquent, si vous avez plusieurs objets de référence définis dans le sous-opérateur Sélectionner un objet, leurs index sont donc 0, 1, 2, etc.
La sortie est de type Paire = {Vecteur + Entier}, le nombre entier étant un index composé d'un index d'objet et d'un index de face, tandis que le vecteur est l'emplacement en coordonnées de face locales. Pour le calcul du point le plus proche, l'opérateur parcourt tous les objets de référence définis par le sous-opérateur Sélectionner un objet et recherche la face la plus proche ainsi que le point le plus proche sur la surface de cette face. Les coordonnées locales de la face utilisent les arêtes de la face comme vecteurs de base.
La sortie est de type Complexe = {Vecteur + Entier + Temps}, les entrées Entier et Vecteur ayant la même signification que ci-dessus, tandis le Temps désigne l'heure de la collision.
Cette option peut être utilisée pour calculer la surface d'une face d'un objet ou déterminer l'état de sélection d'une face. Il semble suffisant pour cela de fournir comme index l'index composé (index de l'objet + index de la face). Cependant, le sous-opérateur utilise une entrée de type Paire. L'objectif est de simplifier la mise en relation avec l'option Point le plus proche, qui utilise une sortie de type Paire. Si l'index de l'objet et l'index de la face sont créés différemment, vous pouvez utiliser un sous-opérateur Convertir pour créer des données de type Paire ; utilisez simplement un vecteur zéro comme autre composant du type Paire.
Une des entrées est de type Paire = {Vecteur + Entier}, les entrées Entier et Vecteur ayant la même signification que dans l'option Point le plus proche.
La sortie est de type Paire, avec la même signification que dans l'option Point le plus proche.
La sortie est de type Paire = {Vecteur + Entier}, le vecteur identifiant la position en coordonnées univers et l'entier étant l'index de l'objet utilisé comme espace de volume.
Le seul sous-opérateur à produire des données de type Egal est le sous-opérateur Paramètre. Le sous-opérateur Paramètre est particulièrement utile pour définir (ou permettre à l'utilisateur de définir) une même valeur de paramètre pour plusieurs sous-opérateurs. Très souvent, ce paramètre commun est exposé plus tard dans l'interface.
Un exemple simple : vous souhaitez créer un opérateur Données qui place des particules de façon aléatoire sur la surface d'un objet et définit une vitesse initiale aléatoire. Vous allez utiliser le sous-opérateur Géométrie (Point aléatoire de la surface) pour le positionnement et le sous-opérateur Vecteur pour définir la vitesse, avec un Ecart fixé à 360 degrés pour étaler aléatoirement la direction.
Les deux sous-opérateurs utilisent le paramètre Valeur de départ aléatoire. Naturellement, vous aimeriez exposer le paramètre Valeur de départ aléatoire de sorte que l'utilisateur puisse intervenir dans la configuration du chaos. Mais il pourrait sembler étrange d'avoir deux paramètres Valeur de départ aléatoire dans l'interface. Par conséquent, vous pouvez relier ces deux paramètres des sous-opérateurs Géométrie et Vecteur à un seul sous-opérateur Paramètre de type Valeur de départ Unicité. Vous pourrez alors exposer la valeur de départ aléatoire du sous-opérateur Paramètre.
Le type de données Egal possède des sous-types : Réel, Entier, Temps, Sync et Valeur de départ. Chacun utilise une nuance de vert différente. Le sous-opérateur Paramètre offre plusieurs types de sortie : Angle, Flottant, Pourcentage, Univers (tous de type Réel), Entier, Temps, Sync. animation (type Sync) et Valeur de départ Unicité (type Valeur de départ). Angle, Flottant, Pourcentage et Univers ont ceci de différent qu'ils sont présentés à l'utilisateur dans l'interface utilisateur, ils sont tous de type Réel. Vous ne pouvez relier la sortie Paramètre qu'aux entrées E correspondantes, ce qui est généralement assez évident : si vous reliez la valeur de départ aléatoire d'un sous-opérateur, le sous-opérateur Paramètre doit aussi avoir un type Valeur de départ Unicité.
Il est possible de se passer du sous-opérateur Paramètre en utilisant la technique standard de mise en relation par script de 3ds Max pour relier les paramètres des sous-opérateurs au lieu de les relier à un sous-opérateur Paramètre. Toutefois, cette technique est plus longue à configurer, n'offre pas une aussi bonne référence visuelle que le sous-opérateur Paramètre et peut souffrir de problèmes d'enregistrement/chargement et de clonage.
Parfois, il est nécessaire de réunir deux nombres entiers en une seule valeur, lorsque, par exemple, un nombre entier est utilisé comme un index composé = { index d'objet et index de face/sommet }. Vous pouvez utiliser le sous-opérateur Convertir pour a) créer un index composé à partir de données de type Entier ou b) extraire l'index d'objet ou l'index de face/sommet d'un index composé. Un index composé n'est pas un nouveau type de données, c'est un moyen d'inclure davantage d'informations dans un canal de données de type Entier.