Éclairage réaliste de la fumée avec l'éclairage à 6 voies dans VFX Graph

MATHIEU MULLER / UNITYSenior Manager, Product Management
Jan 20, 2023|15 Min
Éclairage réaliste de la fumée avec l'éclairage à 6 voies dans VFX Graph
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

La simulation et le rendu de la fumée et des explosions en temps réel ont toujours été un défi en raison de la nature complexe des interactions et de la dynamique de l'éclairage.

Des technologies en temps réel plus nombreuses introduisent la simulation et le rendu de fluides volumétriques, mais elles semblent encore trop coûteuses pour être utilisées à grande échelle dans les jeux. Ainsi, comme pour de nombreux problèmes de rendu, il s'agit d'essayer de se rapprocher le plus possible de l'apparence au coût le plus bas possible.

Le flux technologique 2022.2 présente un flux de travail complet (de DCC à Unity) qui vous permet d'obtenir un rendu réaliste de la fumée à partir de simulations cuites. Ce flux de travail s'adapte à toutes les plateformes, quelles que soient les conditions d'éclairage. Cette solution comprend également une bibliothèque de cartes cuites prêtes à l'emploi, conçues pour permettre à tout un chacun de pousser les effets de fumée à un niveau supérieur de fidélité visuelle.

Éclairage à 6 voies

Le rendu de la fumée dans les jeux se fait le plus souvent à l'aide de sprites texturés, car le calcul d'un éclairage entièrement volumétrique est trop coûteux pour un budget temps réel. L'une des questions les plus fréquentes concernant les sprites est la suivante : Comment allumer la fumée à partir d'une géométrie plate en 2D ?

Il existe plusieurs approches, telles que l'utilisation de la cartographie normale ou l'utilisation d'une carte de couleurs entièrement cuites. Mais ces approches manquent de réalisme, d'extensibilité ou des deux.

C'est là qu'intervient l'éclairage à 6 voies, une autre approche de ce problème qui utilise un ensemble de cartes lumineuses contenant la réponse de la fumée à la lumière provenant de six directions différentes. Ces cartes lumineuses sont intégrées dans un ensemble de deux textures, avec un canal alpha et un masque émissif facultatif.

 Représentation des cartes lumineuses à six voies

Grâce à ces textures, la fumée peut être ombrée de manière dynamique dans différentes conditions d'éclairage. Il présentera des phénomènes d'éclairage volumétrique tels que des ombres internes ou des bords de lumière lorsqu'il est éclairé par l'arrière, ce qui n'était pas possible avec les autres techniques.

 Une seule carte lumineuse à six voies avec différentes orientations du soleil

Vous pouvez trouver plusieurs contrôles tels que la couleur, l'absorption, le gradient émissif et le remappage de la carte lumineuse pour créer des effets variés basés sur le même ensemble de textures. Cela vous permet de réutiliser vos actifs dans de nombreux scénarios différents.

Cette technique, connue sous divers noms (6-way lighting, 6-point lighting, 6D lightmaps, 6-point lightmaps, smoke lighting, etc.) est utilisée dans de nombreux jeux AAA - consultez cet excellent aperçu de la technique écrit par l'ancien directeur technique VFX du jeu.

Les principaux avantages de cette technique sont les suivants

  • Permettre le rendu d'interactions lumineuses complexes qui ne sont pas possibles en temps réel, telles que la diffusion multibonds, car elles peuvent être directement transférées de la simulation aux cartes lumineuses.
  • Amélioration de la qualité visuelle avec des effets de fumée mieux intégrés dans le monde grâce à un meilleur éclairage - par exemple, lorsqu'elle est ajoutée dans une scène, la fumée réagit à tous les types de lumières dynamiques (direction, point, zone), ainsi qu'à l'éclairage indirect (sondes) et à l'éclairage ambiant. Par conséquent, le même bien peut être placé à différents endroits, mais chacun d'entre eux donnera l'impression d'appartenir à son environnement proche.
  • Les frais généraux sont peu élevés malgré la grande qualité du visuel. Le rendu des effets de fumée est en fait assez économique, comparable à celui d'un sprite éclairé traditionnel.
  • Sauvegarde de la mémoire du disque et de la texture. Bien que les textures des folioscopes soient toujours gourmandes en mémoire, l'utilisation de l'éclairage à 6 voies vous permet de réutiliser la même texture à de nombreux endroits différents. L'apparence de la fumée qui en résulte peut varier considérablement en fonction des variations qui lui sont appliquées (couleur, absorption, etc.) et des conditions d'éclairage dans lesquelles elle est placée. Pour économiser de la mémoire, vous pouvez utiliser des vecteurs de mouvement pour réduire le nombre d'images nécessaires (un outil utile pour cela est TFlow de Tuatara sur le Unity Asset Store).
L'éclairage à six voies est utilisé pour toutes les fumées et les nuages proches avec de nombreuses instances de seulement quatre actifs graphiques VFX.

Un inconvénient à garder à l'esprit est la planéité de ce tour. Si cette technique donne une grande impression de volume grâce à un éclairage très fidèle, il s'agit toujours d'une feuille de texture et non d'un effet volumétrique en 3D. C'est pourquoi il convient mieux aux effets d'arrière-plan, aux effets décoratifs tels que la vapeur ou les explosions. Pour donner plus de profondeur, vous devrez utiliser cet effet sur un plus grand nombre de particules ou le combiner avec des effets volumétriques (par exemple, le brouillard volumétrique local ou les matériaux volumétriques dans le pipeline de rendu haute définition).

Voici quelques cas d'utilisation typiques :

  • Jour : Simulation de l'éclairage du soleil et du ciel se propageant à travers la fumée
  • Nuit : Des lumières ponctuelles statiques ou mobiles et des projecteurs peuvent éclairer la fumée.
  • Fumée haute fidélité
  • Poussière
  • Vapeur
  • Nuages volumétriques : Éclairage à 6 voies pour les nuages de héros
  • Effets avancés comme les portails, les tempêtes de sable ou les tornades
Construction et traitement de cartes d'éclairage à 6 voies
Exportateurs

Nous fournissons quelques outils pour faciliter le processus de génération de la carte lumineuse. Dans le dépôt VFXToolbox, vous trouverez des exportateurs pour Houdini et Blender, ainsi que d'autres outils comme l'Image Sequencer qui peut être utilisé pour reconditionner des flipbooks de lightmap à 6 voies ou pour ajuster l'intensité des couleurs.

HDA pour SideFX Houdini

Toutes les instructions concernant l'installation de l'outil se trouvent dans le fichier Readme.txt. Notez que deux variantes de l'outil coexistent : la première se trouve dans le contexte de l'objet. Il est basé sur le nœud de rendu OpenGL et est très rapide.

La deuxième variante se trouve dans le contexte Stage et s'articule autour du moteur de rendu Karma. Ils offrent tous les deux la possibilité d'effectuer un rendu de lightmaps, d'émissif, et d'exporter des Flipbooks.

Complément pour Blender

Menu réduit de l'exportateur Blender

Pour installer le module complémentaire, suivez la procédure standard dans Blender. Dans le menu Préférences, installez le fichier unity_6way.py et activez le module complémentaire. Ensuite, vous trouverez un panneau dans la vue 3D, sous la catégorie Unity.

Ce module complémentaire vous permet d'effectuer le rendu de lightmaps, de canaux émissifs, d'effectuer un compositing de base et de créer des folioscopes à partir d'une séquence de lightmaps. Ces tâches peuvent être effectuées en une seule fois ou séparément, chaque étape étant assortie de paramètres individuels permettant de contrôler le résultat final.

Paramètres des étapes de l'exportateur Blender

Autres outils

Exemple d'installation d'EmberGen

Certains outils peuvent déjà proposer des options et des modules d'extension officiels ou créés par l'utilisateur pour exporter des cartes lumineuses à 6 voies.

Par exemple, dans EmberGen, vous pouvez utiliser une option nommée "Six point" dans le nœud de rendu. Veuillez noter que ce flux de travail n'est pas officiellement pris en charge car nous n'avons pas le contrôle de l'intensité lumineuse dans ces cartes. Toutefois, il peut être utile de l'ajuster manuellement.

Vous pouvez également créer des cartes d'éclairage à 6 voies à l'aide de vos propres outils. Pour ce faire, vous pouvez suivre les étapes et le formatage décrits ci-dessous.

Création de lightmaps

Pour créer les lightmaps, nous devons rendre les objets six fois avec différents paramètres d'éclairage.

Nous utilisons des lumières blanches directionnelles avec une direction différente pour chaque rendu : en haut, en bas, à gauche, à droite, à l'avant et à l'arrière, par rapport à la caméra.

Les informations émissives, comme le feu, ne font pas partie des cartes lumineuses et peuvent être rendues ultérieurement sur une texture séparée ou intégrées dans un canal supplémentaire des cartes lumineuses.

Format de texture Lightmap

Les données pour les cartes d'éclairage à 6 voies sont regroupées dans deux textures RGBA. Chacune des six directions de la carte lumineuse est stockée dans un canal de couleur (rouge, vert ou bleu) des deux textures.

En outre, le canal alpha de la première texture contient la transparence. Cela laisse le canal alpha de la deuxième texture comme canal supplémentaire disponible. Le flux de travail actuel vous donne la possibilité d'intégrer un composant émissif dans ce canal supplémentaire.

Carte lumineuse A : Images lumineuses à droite, en haut et à l'arrière + Transparence
Carte lumineuse B : Images lumineuses de gauche, du bas et de l'avant + canal supplémentaire

Vous pouvez examiner les canaux séparément dans l'éditeur Unity, dans une fenêtre de prévisualisation, lorsque la texture est sélectionnée.

Les cartes lumineuses créées par d'autres outils peuvent présenter ces canaux dans un ordre différent. Il existe une fonctionnalité de base pour réorganiser les canaux dans Unity à l'aide de l'inspecteur, mais vous aurez peut-être besoin d'un éditeur d'images si vous devez déplacer des canaux d'une texture à l'autre.

Rendu de l'éclairage de la fumée
Arrêt sur image de l'explosion d'un échantillon la nuit

L'éclairage de la fumée est directement intégré dans la boucle lumineuse du HDRP, ce qui signifie qu'il n'y a pas de limite spécifique au nombre de lumières qui affecteront la fumée. Bien entendu, plus il y a de lumières, plus le calcul devient intensif (vous pouvez utiliser les couches de lumière pour atténuer ce problème).

Tous les types de lumières directes sont pris en charge, comme les lumières directionnelles, les lumières ponctuelles, les spots, les lumières rectangulaires et les lumières linéaires. Il permet également d'obtenir des résultats très impressionnants pour les effets de lumière à l'intérieur de la fumée afin de créer des éclairs, des étincelles d'électricité, des fusées éclairantes, des lucioles et bien plus encore.

Feux dynamiques à l'intérieur des fumigènes à six voies

Pour chaque lumière, il est important de déterminer d'abord sa direction par rapport à la particule et d'utiliser cette direction pour fusionner les différentes cartes lumineuses. Pour les feux de zone, nous utilisons l'approche du point le plus représentatif, en identifiant le point le plus proche du feu pour calculer la direction.

Même effet de fumée dans différentes conditions d'éclairage - en haut à gauche : lumière directionnelle et ambiante ; en haut à droite : ambiante, volumes des sondes et lumière directionnelle ; en bas à gauche : ambiante et sondes ; et en bas à droite : lumière ponctuelle et sondes.

La particule est également affectée par l'éclairage indirect, en particulier par les sondes lumineuses, les volumes de sondes adaptatives (APV), les sondes ambiantes et les volumes de sondes lumineuses mandataires (LPPV), en fonction des types actifs dans la scène. Pour obtenir les meilleures performances, vous pouvez utiliser le mode "ambient only" afin d'ignorer complètement la boucle d'éclairage et de permettre un calcul d'éclairage très peu coûteux.

Volumes de sondes adaptatifs et éclairage de fumée à six voies

Pour des raisons de performance, les contributions des sondes sont évaluées dans le nuanceur de sommets, puis interpolées dans le nuanceur de pixels. Cela signifie que si vous utilisez une sortie quadruple, les sondes ne seront évaluées qu'aux quatre coins du quadruple. Pour les sondes à variation spatiale telles que les APV, un ou plusieurs sommets peuvent se retrouver d'un côté d'un mur alors que le reste de la particule se trouve de l'autre côté. Dans ce cas, les contributions de la sonde seront erronées et donneront lieu à des artefacts visuels. Une solution, dans ce cas, consiste à utiliser un maillage plus tesselé, avec plus de sommets. Notez que ce problème ne se pose généralement pas pour les scènes en extérieur.

La fumée est considérée comme totalement diffuse dans notre modèle, de sorte que les contributions indirectes spéculaires ne sont pas évaluées. Cela signifie, par exemple, que les sondes de réflexion n'affectent pas les particules utilisant des fumigènes à 6 voies.

Nous proposons également deux façons différentes d'appliquer la couleur à la fumée. Vous pouvez y parvenir soit en dérivant l'absorption de lumière par composante de couleur à partir des cartes de lumière (pour un comportement plus réaliste de la fumée colorée), soit en effectuant une simple multiplication (la méthode la moins chère).

Comparaison des modes de multiplication et d'absorption pour appliquer la couleur à la fumée
Évaluation de la diffusion de la lumière à six voies aka Fonction de distribution de la diffusion bidirectionnelle (BSDF)

La sortie de rendu d'éclairage à 6 voies dans VFX Graph offre diverses commandes permettant de personnaliser l'aspect de l'effet et de créer différents effets en réutilisant les mêmes cartes d'éclairage.

1. Couleur et absorption
Créez de la fumée, de la vapeur ou des nuages avec les mêmes cartes lumineuses en utilisant les contrôles de couleur et de force d'absorption.
2. Remappage de la carte lumineuse
Créer des effets plus ou moins denses ou stylisés, en remappant les lightmaps
3. Émissivité
Transformer la fumée en explosions à l'aide de différents gradients émissifs
Comment démarrer

Il ne faut que quelques minutes pour ajouter une belle fumée à 6 voies à votre projet. Vous devez travailler avec Unity 2022.2 ou plus et utiliser VFX Graph et HDRP.

Pour vous aider, nous avons créé une bibliothèque de cartes prêtes à l'emploi. Nous fournissons à la fois des ressources haute fidélité que vous pouvez traiter et emballer comme vous le souhaitez - par exemple, en utilisant la boîte à outils VFX - et des versions plus compactes qui sont légères et prêtes pour votre jeu.

Exemple d'un échantillon gratuit à six voies qui est maintenant disponible

Pour créer un effet à l'aide de ces cartes et de l'éclairage à 6 voies, procédez comme suit :

  • Glissez-déposez les cartes dans le dossier Asset d'Unity.
  • Créez et ouvrez une nouvelle ressource VFX Graph.
  • Créez une nouvelle sortie Particle Lit et sélectionnez-la.
  • Dans l'inspecteur, sélectionnez Six Way Smoke Lit dans le menu déroulant Type de matériau.
Vue de l'inspecteur avec "Six Way Smoke Lit" sélectionné
  • Définissez la carte lumineuse des axes positif et négatif dans le contexte de sortie avec les cartes que vous avez importées.
  • Faites des essais dans différentes conditions d'éclairage.

Pour en savoir plus sur VFX Graph en général, visitez notre site web et lisez notre e-book Le guide définitif de la création d'effets visuels avancés dans Unity.

Prochaines étapes

Pour les prochaines itérations de l'éclairage à 6 voies, nous nous concentrerons sur l'intégration du Shader Graph et la prise en charge de l'Universal Render Pipeline (URP). Nous avons également des idées pour lever certaines limitations inhérentes à la technique (planéité révélée lors de la réception d'ombres, cartes de lumière locales à une particule et ne prenant pas en compte les voisins occultants, et plus encore).

Nous travaillons également à l'ajout de la sortie Volumetric Fog à VFX Graph, permettant aux effets visuels de générer un brouillard volumétrique. Cela permet de pousser encore plus loin les effets de fumée en combinant cette fonction avec l'éclairage à 6 voies. Elle est déjà disponible en Alpha dans 2023.1.a25.

Et, bien sûr, nous envisageons la simulation, la lecture et le rendu de fluides volumétriques. Toutes ces techniques vous permettront d'obtenir des effets de fumée magnifiques et réalistes en fonction de vos plates-formes cibles et de votre budget.

Faites-nous part de vos commentaires ou posez vos questions dans notre fil de discussion dédié au forum Unity. Pour proposer de nouvelles fonctionnalités et voter pour celles qui sont à l'étude, consultez notre feuille de route publique sur le rendu.