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.
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.
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.
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.
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.
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.
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.
- WT_Snow : Les particules reçoivent une rotation fixe de 45 degrés et sont affectées d'un mouvement latéral variable et aléatoire défini par le paramètre Deviation, qui donne l'impression de flocons légers poussés par le vent et ralentis dans leur chute par le frottement de l'air.
- WT_Rain : Les particules se déforment avec leur vitesse. Plus celle-ci est élevée, plus les particules sont allongées dans le sens de leur chute. Si la vitesse est assez élevée et les particules assez nombreuses, l'effet de pluie très intense est particulièrement convaincant.
- WT_Dust : Cet effet n'est pas réellement fonctionnel ; il est exactement similaire à WT_Snow, à la différence près qu'il se comporte toujours comme si le paramètre Deviation était réglé sur 0..
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
- Deviation : Définit le mouvement latéral aléatoire des flocons de neige pendant leur chute si WeatherType est WT_Snow. Plus la valeur est haute, plus ce mouvement est important. La valeur peut être comprise entre 0 (aucun mouvement latéral, les flocons tombent verticalement) et 1 (variation maximale, qui n'est pas extrêmement importante malgré tout). Toute valeur supérieure aura un résultat similaire à 1.
- EyeSizeClamp : Ne semble pas fonctionner.
- Life : Durée de vie (en secondes) des particules. Accepte un maximum et un minimum pour obtenir des variations.
- numParticles : Nombre de particules générées et calculées à chaque instant. Le xWeatherEffect continue de spawner des particules jusqu'à avoir atteint ce nombre puis attend que des particules "meurent" pour en générer de nouvelles au fur et à mesure, maintenant environ ce nombre de flocons de neige ou de gouttes de pluie en vie à chaque instant.
- Size : Taille des particules. Des valeurs différentes dans Min et Max permettent d'ajouter un peu de variation.
- SpawnVel : Direction du mouvement des particules sur chaque axe. Il s'agit, pour chaque axe, d'un coefficient multiplicateur de la valeur de Speed. Si une particule a une vitesse de 20 et un SpawnVel de 2, sa vitesse sera de 40 sur l'axe choisi. Une valeur négative inverse la direction sur l'axe choisi. Par défaut, SpawnVel contient uniquement la valeur -1 sur l'axe Z (vertical) afin que le mouvement des particules se fasse vers le bas, exactement à la vitesse choisie.
- Speed : Vitesse maximale et minimale des particules. La valeur doit être beaucoup plus grande pour de la pluie que pour de la neige.
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.
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.
- MaxPclEyeDist : Distance maximale de visibilité des particules depuis la caméra. Il s'agit du rayon (en une unité abstraite) d'une sphère dont le point de vue du joueur occupe le centre. Toute particule hors de ce rayon devient invisible (mais reste en vie jusqu'à la fin du temps indiqué dans Life).
- Position : Définit un cube dans lequel les particules sont spawnées. Il ne s'agit pas de la zone où elles sont visibles.
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.
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.
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.
RSS Feed