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

Current Project: Rejuvenation of Hellkeeper.net

Brouillard

Le brouillard (généralement désigne de son nom anglais fog) est un paramètre de la ZoneInfo et du PhysicsVolume qui recouvre chaque point de l'écran d'un voile de couleur plus ou moins opaque suivant sa distance par rapport à la caméra. Le brouillard se définit dans ses grandes lignes par trois éléments : sa couleur, son rayon minimal et son rayon maximal.

Tout point de l'image dans la ligne de vue du joueur sera affiché normalement s'il se trouve en-deçà du rayon minimal du brouillard. Tout point situé au-delà du rayon maximal sera entièrement recouvert par le brouillard et un objet entièrement caché par le brouillard ne sera pas affiché. Entre les deux, la scène se fond progressivement dans le brouillard.

Schéma de fonctionnement du brouillard

Le brouillard s'utilise à la fois comme effet visuel, car il permet de donner un effet de profondeur et de donner une teinte générale à une scène, et comme technique d'optimisation, car il permet de limiter l'affichage des objets dans un rayon limité autour du joueur et d'empêcher le calcul d'objets distants dans les très longues perspectives. Lorsqu'une map comprend un très vaste terrain en extérieur avec des reliefs peu accentués, il peut s'agir de la seule optimisation possible.

Brouillard de zone

Le brouillard est en général généré par une ZoneInfo. Deux ensembles de paramètres entrent en jeu : dans l'onglet ZoneInfo des propriétés de l'actor, bClearToFogColor et bDistanceFog permettent de paramétrer la présence ou l'absence de brouillard, et dans ZoneLight, une série de paramètres permet de régler son comportement.

Schéma de fonctionnement du brouillard

Le paramètre bDistanceFog, lorsqu'il est réglé sur vrai, active le brouillard dans la zone sous contrôle de la ZoneInfo. L'effet est activé immédiatement dans le viewport 3D si la ZoneInfo a été correctement attribuée à la zone, c'est-à-dire si au moins un rebuild de la géométrie a été effectué après l'ajout de la ZoneInfo. Si le brouillard n'apparaît pas après que vous ayez paramétré bDistanceFog = vrai, commencez donc par un rebuild. Par ailleurs, le brouillard gris par défaut a une très longue distance d'affichage (3000-8000), il faudra sans doute le rapprocher pour le voir. Sur l'image suivante, les valeurs de départ et de fin ont été divisées par 10 (300-800).

Brouillard par défaut

Le brouillard a un effet d'occlusion : tout static-mesh ou polygone entièrement masqué par le brouillard n'est pas affiché. Si bClearToFogColor = faux, le BSP non affiché laissera apparaître un hall of mirrors. Si bClearToFogColor = vrai, le joueur verra à la place la couleur du brouillard. L'effet de ce paramètre n'est pas visible dans l'éditeur où l'occlusion affiche toujours le vide noire autour de la map et non pas la couleur du brouillard.

Occlusion du brouillard dans UnrealEd

Si une skybox est présente dans la map et visible en même temps qu'un hall of mirrors, ce dernier affichera, à la place, le ciel. Régler ce paramètre sur vrai est donc surtout important dans les maps dépourvues de skybox ou dans les zones d'une map où une éventuelle skybox est impossible à voir.

Une fois le brouillard activé, il faut aller dans l'onglet ZoneLight pour le configurer.

Ajustement de la distance de fin du brouillard

Notez que si le joueur passe dans une zone sans brouillard, celui-ci disparaît instantanément. S'il entre dans une zone avec brouillard, celui-ci apparaît bien d'un coup, mais seulement au bout du temps indiqué par DistanceFogBlendTime (le délai est bien pris en compte mais il n'y a pas de transition progressive).

Il est aussi possible de mettre une valeur plus basse dans DistanceFogEnd que dans DistanceFogStart. Le joueur sera alors entouré d'un halo de couleur qui s'amenuisera avec la distance. Cependant, toute la map sera au-delà de la limite maximale. Seuls les polygones extrêmement proches du joueur seront donc affichés.

Le brouillard d'une ZoneInfo s'affiche dans l'éditeur, ce qui permet de se rendre compte de l'effet final. De plus, parce qu'il est possible de désactiver la skybox dans l'éditeur, la limite d'affichage est facilement visible, même sur les terrains de grande taille.

Brouillard dans ONS-Dawn

Brouillard de volume

Le brouillard peut également être ajouté dans un volume. Il doit s'agir d'un PhysicsVolume ou d'un de ses dérivés (LavaVolume, WaterVolume, etc.) car seules ces classes possèdent les propriétés nécessaires à sa configuration.

Paramètres de brouillard dans un PhysicsVolume

Ces paramètres sont les mêmes que leurs homonymes dans une ZoneInfo.

Le brouillard généré par un volume n'a pas toutes les fonctions de celui d'une ZoneInfo : il n'a pas d'effet d'occlusion et ne peut donc pas servir à optimiser la map : les static-meshes et le BSP au-delà de la limite seront calculés même s'ils sont entièrement cachés. Il sert surtout d'effet d'ambiance. Le WaterVolume a ainsi un brouillard bleu épais configuré par défaut. Il n'y a pas de transition pour ce type de brouillard : il apparaît ou disparaît instantanément à l'entrée ou à la sortie du volume.

Si deux volumes ou plus comprenant du brouillard se chevauchent, c'est le volume qui vient en dernier dans l'ordre qui aura la priorité dans la zone de chevauchement. Dans tous les cas, le brouillard d'un volume a également la priorité sur celui d'une ZoneInfo. De plus, l'affichage du brouillard des volumes dans l'éditeur ne fonctionne pas correctement. Par défaut, il n'est pas visible dans UnrealEd et ne fonctionne qu'en jeu. Cependant, si une ZoneInfo avec brouillard se trouve dans la zone où a été placé le volume, le brouillard de toute la zone est remplacé par celui du volume (ou du dernier volume ajouté) dans l'éditeur. Cela n'a pas d'incidence en jeu, où le brouillard de la ZoneInfo sera activé dans les parties normales de la zone et remplacé à l'intérieur de chaque volume par le brouillard spécifique de celui-ci.

Interaction avec une skybox

En général, un seul brouillard est affiché à la fois. Il existe cependant une exception dans la skybox.

Il est possible d'ajouter un brouillard à la SkyZoneInfo qui s'applique donc dans la skybox elle-même. Si un joueur se trouve dans une zone avec un brouillard déjà configuré mais qu'il voit la skybox à travers un Fake Backdrop, le brouillard de la zone où il se trouve s'applique à la map autour de lui, mais le brouillard de la skybox s'applique au contenu de la skybox.

Skybox avec un brouillard différent de la map

Ici, le terrain enneigé est couvert d'un brouillard orange alors qu'un brouillard bleu ciel est visible dans la skybox.

Si la map est assez vaste pour que les objets lointains se trouvent au-delà de la limite du brouillard et que l'horizon donne sur la skybox, ces objets peuvent apparaître et disparaître brutalement au loin quand le joueur se déplace, comme dans un vieux jeu de PlayStation ou Nintendo 64. Cela affecte également les secteurs d'un terrain qui se trouvent au-delà de la limite, le paysage devenant alors invisible par carrés successifs.

Occlusion à longue distance

Pour masquer cette limite, il est nécessaire que l'horizon lointain soit occupé par la même couleur que le brouillard. Si ce n'est pas le cas dans les textures de la skybox elle-même, on peut obtenir cela en ajoutant dans la skybox, autour de la SkyZoneInfo, un fogring, un static-mesh en forme d'anneau portant une texture de la couleur du brouillard qui devient transparente en son sommet. On voit ici la différence avec un horizon sans forging à gauche et avec fogring mis en évidence à droite.

Fogring dans BR-Riveting

Un tel fogring existe dans plusieurs packages d'UT2003 et 2004, notamment fogring1 dans le package CP_Nightmare1_Epic.

Fogring dans le static-mesh browser

Il est possible d'en changer facilement la couleur en dupliquant son shader (H_E_L_Ltx.skys.cp_alphafogging1shad) dans votre package ou dans MyLevel. Ce shader contient un masque d'opacité responsable de la transparence au sommet du fogring, et une texture monochrome qui définit la couleur du fogring. Cette dernière peut-être remplacée par une autre texture importée, de n'importe quelle couleur. Il est aussi possible de générer un shader ConstantColor. Celui-ci n'aura pas de dimensions mais seulement une donnée de couleur. Il peut malgré tout être ajouté au Diffuse du shader du fogring. L'idée est de donner au fogring la même couleur que le brouillard de la map.

Lorsqu'un static-mesh ou un polygone BSP est totalement caché par le brouillard, il est supprimé et laisse apparaître derrière lui le fogring. Si la couleur est la même, l'effet est invisible tant que static-meshes ou BSP ne dépassent pas le fogring en hauteur.

Effet final de la combinaison d'un brouillard dans la map, dans la skybox et d'un fogring dans BR-Riveting

En combinant le brouillard dans la map, dans la skybox et un fogring entre les deux, comme dans l'image de BR-Riveting ci-dessus, on obtient un horizon brumeux qui masque la limite d'affichage de la map au loin tout en servant de transition avec la skybox, elle-même pourvue d'un brouillard qui accentue l'effet de profondeur des paysages lointains.

© 2005-2025, by Hellkeeper.

Valid XHTML 1.1 & CSS 3