Last updated: 06/10/2024, 02:17

Current Project: Easing hk.fr into its new life.

TrailEmitter

Le TrailEmitter est un système de particules permettant d'ajouter des traînes à des objets en mouvement. Au lieu de créer des particules indépendantes, il étire une texture le long d'une chaîne de points de passage qui accompagne le déplacement.

Le TrailEmitter n'existe pas dans UT2003 et son fonctionnement n'est pas expliqué sur l'UDN car il s'agit d'un ajout tardif au moteur d'UT2004. Il permet de remplacer les traînes générées par le xEmitter de Digital Extremes, qui est utilisé entre autres pour le ruban de couleur qui suit la balle du mode BR ou pour créer les traînes jaunes aux pieds des joueurs utilisant le combo d'adrénaline Vitesse.

Les traînes sont un effet très spécifique et, à ce titre, peu courant. Leur utilisation la plus remarquée est la traînée de condensation qui se forme aux pointes des "ailes" du Raptor lorsqu'il se déplace à haute vitesse.

Traînées de condensation du Raptor en vol

Utilisation classique

Le TrailEmitter s'ajoute à un Emitter de façon normale.

Ajout d'un TrailEmitter à un actor Emitter

L'utilisation la plus classique du TrailEmitter consiste à l'attacher à un objet en mouvement via son AttachTag (qui doit alors correspondre au Tag d'un objet mobile) et de générer la traîne derrière l'Emitter lui-même. Pour ce faire, il faut se rendre dans les propriétés du TrailEmitter et changer Trail → TrailLocation en PTTL_FollowEmitter. En déplaçant l'Emitter dans l'éditeur avec le rendu en temps réel activé, on peut déjà constater que l'actor laisse une traîne derrière lui avec la texture par défaut.

Traînée de base d'un TrailEmitter sans modification à part PTTL_FollowEmitter

Bien entendu, la texture peut être changée dans l'onglet Texture, comme pour un SpriteEmitter et sa taille (mais pas sa longueur) se modifie dans l'onglet Size. Il faut privilégier les textures de type "flare", avec une étoile brillante au centre, qui s'étirent en laissant une traîne aux extrémités douces, ou les textures présentant une pointe à une extrémité pour donner une longue extrémité pointue. Si la texture est relativement unie, la traîne aura l'aspect d'un ruban. Dans l'exemple suivant, les traînes ont été allongés et des textures de différents types sont utilisées.

Influence de type de texture sur l'apparence de la traîne

Les paramètres de couleur, de fade in/out, etc. sont également fonctionnels. Afin de paramétrer la longueur et la persistance de la traîne, cependant, il faut revenir à l'onglet Trail et modifier les paramètres DistanceThreshold et MaxPointsPerTrail.

Propriétés spécifiques du TrailEmitter

La traîne est constituée de "points" semés à intervales réguliers, le long desquels la traîne est dessinée en étirant une feuille 2D portant la texture choisie.

L'interaction de ces deux propriétés permet d'ajuster la résolution de l'effet. Si la traîne effectue des virages serrés, DistanceThreshold doit être court pour que la trajectoire soit échantillonnée assez souvent, ce qui permet de dessiner des courbes lisses. Afin de garder une bonne longueur, il faudra donc augmenter MaxPointsPerTrail. À l'inverse, si la traîne accompagne un objet très rapide mais à la trajectoire relativement droite, DistanceThreshold peut être plus élevé et MaxPointsPerTrail peut être baissé pour que la traîne soit formée de segments moins nombreux mais plus longs. La combinaison des deux propriétés détermine la longueur finale de la traîne.

Traînées de mêmes longueurs, mais de résolutions différentes

À titre de comparaison, les traînées de condensation aux extrémités du Raptor utilisent DistanceThreshold = 50 et MaxPointsPerTrail = 100. Cela donne des traînées moyennes, ne nécessitant pas un nombre trop élevé de particules. Le Raptor ayant un mouvement "glissant" prononcé, il n'a pas besoin de faire des angles trop abrupts, mais la traînée a malgré tout la résolution suffisante pour accompagner son mouvement lorsqu'il reçoit un choc.

L'onglet Location peut être utilisé pour excentrer le point d'attache de la traîne par rapport à l'actor Emitter ou même pour spawner non pas sur un point mais sur une zone avec LocationRange. Dans ce dernier cas, une fois l'Emitter en mouvement, on s'aperçoit que plusieurs traînes sont spawnées à la fois, en nombre égal à la valeur inscrite dans General → MaxParticles (par défaut, 10). Chaque traîne est en effet considérée comme une particule à part entière. Par défaut, donc, le TrailEmitter génère non pas 1 mais 10 traînes. Si LocationRange n'est pas utilisé, toutes ces traînes sont simplement superposées derrière l'Emitter. Notez que la traîne du Raptor a MaxParticles = 1 : chaque traînée est bien une seule particule.

Traînes de particules

Il est possible d'attacher les traînes non pas à l'actor Emitter, mais aux particules d'un autre système de particules dans le même Emitter.

Traînées accrochées aux particules d'un SpriteEmitter

Pour ce faire, il suffit d'ajouter un autre système de particules à l'Emitter (par exemple un SpriteEmitter ou un MeshEmitter) et d'entrer son numéro dans Location → AddLocationFromOtherEmitter et dans Velocity → AddVelocityFromOtherEmitter. Les traînes seront alors spawnées au niveau des sprites ou des static-meshes que l'Emitter source génère et suivront leur mouvement.

Paramétrage d'un TrailEmitter pour que ses particules héritent de la position et du mouvement des particules du second système de particules

Notez que l'accélération des particules ne peut pas être héritée de cette façon. Si le SpriteEmitter ou le MeshEmitter utilise l'onglet Acceleration, la traîne se détachera progressivement de la particule au fur et à mesure que ces paramètres feront effet (la traîne ne suivra que la vitesse de l'onglet Velocity). Il faut alors donner au TrailEmitter les mêmes accélérations que les sprites ou static-meshes.

Si TrailLocation = PTTL_FollowEmitter, les traînes additionnent leur mouvement (ou celui qu'elles héritent d'un autre Emitter) au mouvement de l'actor Emitter lui-même, ce qui peut donner des résultats étranges quand l'Emitter n'est pas fixe.

Déplacement des trails en même temps que l'Emitter

Le problème est résolu en utilisant TrailLocation = PTTL_AttachedToParticle. Chaque traîne devient alors totalement indépendante et l'Emitter peut être soumis à n'importe quel déplacement sans les affecter (leur vitesse n'est pas additionnée à celle de l'actor). En revanche, PTTL_AttachedToParticle empêche d'utiliser une traîne accrochée à l'actor lui-même car celui-ci n'entraîne justement plus les particules lorsqu'il bouge.

De la même façon, les traînes peuvent recevoir leur propre mouvement avec les onglets Velocity et Acceleration, sans utiliser le mouvement et la position d'un autre système de particules.

Durée de vie

La durée de vie de la traîne résulte de l'interaction entre la durée de vie totale de chaque particule (Time → LifeTimeRange), qui affecte la traîne dans son ensemble, et la durée de vie de chaque point de la trajectoire de la traîne (Trail → PointLifeTime).

La traîne génère des points en continu sur sa trajectoire. Lorsque MaxPointsPerTrail est atteint, les points plus anciens sont effacés à l'arrière au fur et à mesure que de nouveaux points sont créés à l'avant de la traîne. Si le mouvement n'est pas assez rapide ou ample pour atteindre MaxPointsPerTrail, les points ne sont pas automatiquement remplacés et leur disparition se fait en utilisant PointLifeTime, chaque point possédant sa propre durée de vie. Si PointLifeTime = 0, les points ont une durée de vie illimitée et restent visibles tant que la traîne reste en jeu.

Une fois la durée de vie de la particule (LifeTimeRange) écoulée, la traîne expire et tous les points restants sont effacés d'un coup. Il faut donc s'assurer que la durée de vie globale de la traîne soit assez élevée pour que la durée de vie des points arrive à expiration avant que la traîne ne soit intégralement purgée.

Affichage

Les derniers paramètres de l'onglet Trail permettent de modifier la façon dont les traînes sont affichées.

Traînée formée de deux feuilles perpendiculaires

Le dernier paramètre, TrailShadeType, détermine le fondu de la traîne.

© 2005-2026, by Hellkeeper.

Valid XHTML 1.1 & CSS 3