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

Current Project: Rejuvenation of Hellkeeper.net

Effets météo

Principe

Le xWeatherEffect est un système de particule dédié à la simulation de la pluie et de la neige. Il agit comme un système normal (Emitter ou xEmitter), mais les particules sont générées dans une zone restreinte qui n'a pas une position fixe dans la map mais se positionne par rapport au joueur et l'accompagne donc dans ses déplacements. Au lieu de couvrir la map avec un système de millions de particules (gouttes de pluie ou flocons de neige), dont la majorité ne sont pas visibles à chaque instant, il suffit ainsi de remplir de quelques milliers de particules une zone limitée autour du joueur pour donner l'illusion d'effets météo, même très denses.

Parce qu'il s'agit d'un système ad hoc développé par Digital Extremes, l'effet n'est pas très souple : le xWeatherEffect est conçu pour accomplir une mission précise et rien de plus. Ses propriétés sont donc limitées et il est surtout utilisé dans les maps réalisées par le studio canadien pour Unreal Championship, telles que BR-DE-ElecFields (et sa version CTF) ou BR-IceFields.

Exemple de pluie dans BR-DE-ElecFields
Exemple de neige dans BR-IceFields

Il n'est pas possible de copier le xWeatherEffect d'une map dans une autre car l'éditeur plante immédiatement lors de l'ajout de l'actor copié.

Fonctionnement de base

Le xWeatherEffect est le dernier actor listé dans l'actor browser. Il apparaît, une fois ajouté, sous la forme de l'icône par défaut : une tête de griffon. Sa position n'a aucune importance, l'effet étant appliqué à la map entière et dépendant uniquement de la position du joueur. Il est généralement positionné au milieu de la map, pour être trouvé facilement, ou, au contraire, à l'écart, afin de ne pas gêner la vue.

Le xWeatherEffect dans l'actor browser et dans la vue 3D

Il est actif immédiatement, mais les particules ne sont pas visibles car aucune texture ne leur est attribuée. Il faut en ajouter une dans le champ Skins de l'onglet Display des propriétés du xWeatherEffect. L'effet est ensuite visible si le rendu en temps réel est activé dans la vue 3D. Par défaut, le xWeatherEffect est réglé pour générer de la neige.

Neige par défaut avec bug de texture

Le traitement de la texture semble étrange car le paramétrage par défaut n'est pas adapté. En effet le xWeatherEffect permet, comme un Emitter, d'utiliser une texture subdivisée afin d'introduire de la variété dans les particules. La texture fournie est subdivisée horizontalement et verticalement, par deux paramètres, numCols et numRows, respectivement, dans l'onglet xWeatherEffect des propriétés de l'actor. Par défaut, ces deux champs sont réglés sur 4, ce qui signifie que le xWeatherEffect attend une texture subdivisée en 16. Une texture normale n'étant pas subdivisée, elle contient l'équivalent d'une seule colonne et d'une seule ligne et ces deux champs doivent être réglés sur 1. Utiliser une valeur de 0 entraîne un crash de l'éditeur.

Subdivisions des textures et réglages correspondants

La texture utilisée n'est par défaut pas rendue translucide par le xWeatherEffect lui-même, contrairement à ce que fait un Emitter. Il est donc nécessaire d'utiliser une texture avec son propre canal alpha. En cas d'utilisation d'une texture classique avec fond noir, il faut créer un FinalBlend pour lui donner de la transparence en réglant le FrameBufferBlending sur FB_Translucent.

FinalBlend de pluie

Le package EmitterTextures contient des materials adaptés dans le package MultiFrame. Ils sont divisés en 2 ou 4 colonnes et autant de lignes. En sélectionnant un de ce materials et en utilisant le bon nombre de numCols et numRows, on obtient un effet par défaut relativement convaincant de neige.

Neige par défaut

Le paramètre principal du xWeatherEffect est WeatherType, qui permet de choisir de simuler de la neige, de la pluie ou de la poussière (ou de la cendre) avec les options respectives WT_Snow, WT_Rain et WT_Dust.

WeatherType

Paramétrage avancé

L'effet du xWeatherEffect est relativement fixe. Comme dit plus haut, il ne s'agit pas d'un actor très souple et le comportement de la pluie et de la neige est quasiment prédéfini, sans grande possibilité de l'influencer.

Les paramètres peuvent se diviser en deux grandes catégories : ceux qui définissent le comportement des particules et ceux déterminant la zone d'action du xWeatherEffect.

Comportement des particules

Avec une texture appropriée, en réduisant la taille des particules, en augmentant leur vitesse et en réglant WeatherType en WT_Rain, l'effet devient immédiatement une pluie convaincante.

Pluie basique

Zone d'effet

La zone d'action du xWeatherEffect est toujours centrée sur la caméra. Aussi, toutes les positions sont définies par rapport à la vue du joueur.

L'interaction de ces deux paramètres est capitale car les particules peuvent être spawnées hors du rayon de MaxPclEyeDist et ne devenir visibles que lorsqu'elles y entrent.

Zone de visibilité suivant le champ Position et la distance MaxPclEyeDist

De même, il convient de prendre en compte la vitesse de déplacement du joueur : s'il se déplace rapidement (par exemple parce qu'il est en véhicule ou qu'un jumper le propulse à grande vitesse), il est possible que le xWeatherEffect ait déjà généré le nombre maximum de particules (numParticles) et doive attendre qu'elles meurent pour en générer d'autres, ce qui fait que pendant un instant, le joueur n'en voit plus.

La solution est alors d'augmenter grandement la taille du cube défini par Position afin que des particules soient créées assez loin du joueur pour qu'il en voie toujours à chaque point de son déplacement. MaxPclEyeDist doit alors être réglé soigneusement pour que seules celles à proximité immédiate du joueur soient affichées.

Dans tous les cas, il est possible de visualiser la zone de visibilité des particules en activant le rendu en temps réel de la vue 3D, puis en le désactivant, ce qui fige les particules déjà générées. En se déplaçant, on peut alors voir de l'extérieur le volume où les particules sont créées et jusqu'où elles sont visibles. En mode Wireframe, les particules se détachent bien sur le fond noir.

Particules de pluie vues de l'extérieur de la zone où elles se trouvent

Zones d'exclusion

Le xWeatherEffect ayant un effet sur toute la map, il est nécessaire d'indiquer au moteur les zones où la pluie ou la neige ne sont pas appliquées afin d'éviter les intempéries en intérieur ou sous les toits.

Il suffit d'englober les zones qui doivent rester à l'abri de volumes et de donner à ces derniers le même Tag qu'au xWeatherEffect. Le volume empêche la création et le passage des particules à l'intérieur de l'espace qu'il englobe.

Volume d'exclusion de la pluie

© 2005-2026, by Hellkeeper.

Valid XHTML 1.1 & CSS 3