Une Sparse Volume Texture (SVT) est une texture qui stocke des texels (voxels) dans une structure de données 3D. Vous pouvez indexer les données des SVT avec des coordonnées UV tridimensionnelles, similaires aux textures 3D et aux textures de volume. Contrairement aux textures de volume standard (denses), les SVT ne consomment de la mémoire que sur les régions du volume contenant des données "intéressantes" (celles dans lesquelles des données de voxel sont présentes), ce qui permet à des volumes beaucoup plus grands, ou même à ceux avec les mêmes longueurs, d'utiliser moins de mémoire par rapport à la densité des textures de volume standard.
Types de Sparse Volume Textures
Vous pouvez utiliser des volumes statiques ou animés pour représenter des Sparse Volume Textures. Une SVT statique est un volume unique, tandis qu’une SVT animée est une séquence de volumes (ou d’images) qui peut être lue de la manière de manière qu’une animation de folioscope.
À gauche, une SVT statique en volume unique ; à droite, une SVT animée.
Ces SVT sont rendues à l'aide d’acteurs de volume hétérogène. Pour plus d'informations sur leur utilisation, voir Volumes hétérogènes.
Composition de Sparse Volume Textures
Les Sparse Volume Textures sont constituées de plusieurs textures. Il s'agit notamment d'une texture Tableau des pages qui sert d'indirection dans les textures Données de carré physique qui composent le volume. Ces données de texture de carré stockent les données de texture du volume, et elles peuvent utiliser jusqu'à deux textures pour stocker les données et les attributs du volume, stockés comme attributs A et B.
Les attributs A et B utilisent chacun les canaux de texture RVBA pour stocker des données, vous offrant ainsi jusqu'à huit canaux dans lesquels stocker des données. Les données sont récupérées via des recherches de texture — une recherche pour le tableau des pages et une recherche par données de carré physique pour un total de deux ou trois recherches, selon la SVT. Cela signifie que les SVT partagent une recherche de tableau de pages unique pour les textures de données de carré physique au lieu d'avoir une relation biunivoque de tableau de pages à texture de données de carré.
Les deux données de texture de carré de SVT (attributs A et B) peuvent avoir différents formats de pixels — 16 bits, 32 bits et unorm 8 bits. Lorsque vous n'utilisez pas l'un des canaux de texture RVBA dans l'une des listes d'attributs, il y a une tentative d'utilisation d'un format de pixel avec moins de canaux. Si vous n'utilisez aucun canal, la texture ne consomme pas de mémoire.
| Format de texture | Texture | Représentation dans l'Unreal Engine |
|---|---|---|
| Tableau de pages | ![]() |
(h:250) |
| Carrés 3D physiques | ![]() |
(h:250) |
Méthodes d’affichage de Sparse Volume Textures
Vous pouvez travailler avec des Sparse Volume Textures des manières suivantes :
- Matériaux de volume-domaine
- Acteur de volume hétérogène
- Brouillard volumétrique
- Nuages volumétriques
- Visionneuse de Sparse Volume Textures
Acteur et composant de volume hétérogène
Les volumes hétérogènes sont des acteurs à placer qui exploitent les SVT en incorporant des nœuds de matériau de Sparse Volume Textures dans leurs matériaux de domaine de volume. Ce type d'acteur rend les SVT et leurs attributs en utilisant la logique configurée dans son matériau. Les acteurs de volume hétérogène peuvent également jouer et mettre en boucle des SVT animées sans qu’aucune configuration supplémentaire soit nécessaire.
Le rendu de volume hétérogène est en partie limité par les fonctionnalités de rendu différé pour le temps réel. Cependant, le Path Tracer offre une prise en charge plus complète des volumes de rendu, comme la simulation précise de la transluminescence, des ombres et de l'illumination globale.
Exemple de matériau de SVT rendu à l'aide d'un acteur de volume hétérogène.
Pour plus d'informations et de détails sur l'utilisation et la configuration, voir Volumes hétérogènes.
Brouillard volumétrique
Les SVT prennent en charge le Brouillard volumétrique, une fonctionnalité du Brouillard de hauteur exponentielle, lorsque son matériau de domaine de volume est appliqué à un maillage. Les SVT peuvent avoir une quantité de détails plus élevée que la résolution du brouillard volumétrique ; il est donc possible de constater des écarts lors de l'utilisation de cette méthode sur un volume hétérogène.
À gauche, l’acteur de volume hétérogène affichant une SVT ; à droite, un matériau de SVT appliqué à un maillage et rendu avec du brouillard volumétrique.
Pour configurer le brouillard volumétrique avec un matériau SVT, consultez la section Affichage des textures Sparse Volume avec brouillard volumétrique de cette page.
Nuages volumétriques
Les SVT prennent en charge automatiquement les nuages volumétriques lorsque leur matériau de domaine de volume est appliqué à un acteur de volume hétérogène.
Visionneuse de textures de volumes clairsemés
La visionneuse de Sparse Volume Textures est particulièrement utile en tant que prévisualisateur et n'est pas optimisée, ni idéale, pour une utilisation avec le reste de la scène. La meilleure solution consiste à créer un matériau pour afficher correctement la SVT et à l'appliquer à un [volume hétérogène] (building-virtual-worlds\lighting-and-shadows\environmental-lighting\heterogeneous-volumes), ou à utiliser l'une des méthodes mentionnées dans la section Méthodes d'affichage des Sparse Volume Textures.
La Visionneuse de Sparse Volume Textures permet de prévisualiser directement une ressource de SVT sans avoir besoin de configurer un matériau. Avec la visionneuse, vous pouvez prévisualiser les canaux de texture d'attribut individuels de la SVT et en jouer l'animation, le cas échéant. Cela fait de la visionneuse l’option idéale pour déboguer rapidement une ressource de SVT sans aucune configuration requise.
Pour utiliser la visionneuse de SVT, procédez comme suit :
- Faites glisser-déposer une visionneuse de Sparse Volume Textures dans la scène à partir du panneau Placer des acteurs.
- Dans le panneau Détails, assignez une ressource de SVT au créneau d’assignation Aperçu des Sparse Volume Textures.
Le SVT est affiché dans la visionneuse.
Ajustez la valeur de la propriété Extinction pour ajuster la visibilité du volume en définissant la quantité de lumière qu'il absorbe.
En ce qui concerne les SVT comportant plusieurs images, utilisez les cases Playing (Lecture) et Looping (Mise en boucle) pour jouer une boucle des images de la SVT. La propriété Fréquence d’images spécifie le nombre d'images par seconde (IPS) à lire. Le prévisualisateur est configuré par défaut sur 24 IPS. Si la propriété Animate (Animer) n'est pas cochée, vous pouvez utiliser la valeur de la propriété Frame (image) pour parcourir les images de la SVT.
À gauche, un aperçu de SVT sans animation ; à droite, la mise en boucle d’un aperçu des images animées d’une SVT.
La visionneuse de SVT n'affiche qu'un seul canal de texture à la fois. Ceci est utile pour inspecter des canaux individuels d'une ressource de SVT et fonctionne plus ou moins bien en fonction des données stockées dans la texture du volume. Toutes les données de vitesse importées sont affichées sous forme de densité et renvoient un résultat indésirable.
Utilisez la case de sélection Attribut d’aperçu pour choisir le canal d’attributs que vous souhaitez prévisualiser. Le premier canal AttributesA Red est utilisé par défaut.
La visionneuse de Sparse Volume Textures possède les propriétés suivantes :
| Propriétés | Description |
|---|---|
| Aperçu des ressources | |
| Aperçu des Sparse Volume Textures | La ressource de SVT à utiliser avec le prévisualisateur. |
| Blocage des requêtes de chargement dynamique | Indiquer au gestionnaire de chargement dynamique de SVT de bloquer (attendre) toutes les requêtes de chargement dynamique immédiatement après leur émission. Pour plus d'informations sur l'utilisation efficace de cette propriété, consultez la section Notes sur les performances du chargement dynamique. |
| Appliquer les transformations par image | Appliquer la transformation jointe à une image de texture de volume clairsemé. Cette transformation est relative à la transformation du composant de la visionneuse de Sparse Volume Textures. |
| Pivot au centre | Déplacer le pivot vers le centre du volume. Notez que les transformations ont été créées avec le pivot à l'origine, qui est généralement l'un des coins du volume, selon la manière dont elles ont été créées. Forcer le pivot vers le centre du volume peut interrompre la transformation. |
| Taille des voxels | Plage uniforme à appliquer à tous les voxels. Il s'agit d’un moyen rapide de mettre à l'échelle l'ensemble du volume pour déboguer les problèmes liés à la mise à l'échelle. |
| Attribut d’aperçu | |
| Niveau de MIP | Définir à quel niveau de MIP visualiser la SVT. |
| Extinction | Définir l’opacité du volume. L'extinction est la somme de l'absorption (rayons de lumière entrant en collision avec les particules et étant absorbés) et de la transluminescence (rayons entrant en collision avec les particules et diffusés/déviés dans une direction différente qui n'atteint plus la caméra). Les valeurs supérieures apparaissent plus opaques que les valeurs inférieures. |
| Animation | |
| Image | Saisir une valeur ou faire glisser le curseur pour parcourir les images de la SVT animée. Cette propriété est modifiable lorsque le paramètre Lecture est désactivé. |
| Fréquence d’images | Spécifier une fréquence d’images à laquelle cette animation de SVT doit être jouée. Par exemple, 24, 30, 48, 60. Cette propriété est modifiable lorsque le paramètre Lecture est activé. |
| Lecture | Activer/désactiver la mise en boucle de la lecture des images de la ressource de SVT lorsqu'il y en a plusieurs. |
| Mise en boucle | Mettre en boucle l'animation lorsque le paramètre Lecture est activé. |
| Lecture inversée | Jouer les images d'une SVT animée à l’envers lorsque le paramètre Lecture est activé. |
Travailler avec des Sparse Volume Textures
Vous pouvez importer des Sparse Volume Textures à partir de fichiers VDB (ou base de données de voxels). Ce format est largement utilisé pour stocker des données de volume clairsemé. Les données des fichiers VDB sont converties en une représentation de volume clairsemé lors de leur importation dans Unreal Engine.
Les fichiers VDB contiennent des "grilles" — une autre appellation des volumes. Ces grilles peuvent avoir différents types de composants, tels que la densité, la vitesse et la température. Les SVT prennent en charge l'importation de grilles avec les types suivants : float (float, float2, float3, float4), Double (double, double2, double3, double4) et Half (half, half2, half3, half4). La résolution de SVT résultante est l'union des dimensions de toutes les grilles importées.
Bien que l'Unreal Engine prenne en charge l'importation de fichiers VDB de tous types, la SVT ne prend actuellement pas en charge les formats doubles. Les données sont converties en 8/16/32 bits à l’importation.
Chaque grille peut également avoir sa propre transformation. Le format VDB permet d’utiliser une large gamme de types de transformation, y compris les transitions de perspective/frustum. L'Unreal Engine prend actuellement en charge les transformations avec mise à l'échelle, rotation et translation. Ces transformations peuvent varier d’une image à l’autre, de sorte que la SVT importée peut être mise à l’échelle/tournée/déplacée tout au long de sa chronologie d'animation.
Bien que les transformations puissent varier entre plusieurs images, toutes les transformations de toutes les grilles utilisées dans une même image donnée devraient être identiques.
Importer des fichiers VDB
Vous pouvez effectuer l’une des actions suivantes pour importer un fichier VDB :
- Faites glisser-déposer le fichier VDB directement dans le navigateur de contenu.
- Utilisez le bouton Import (Importer) dans le navigateur de contenu.
Les fichiers VDB ont leur propre fenêtre d'importation pour l’importation de fichiers VDB statiques et animés.
Lors de l'importation d'un fichier de VDB animée contenant le même nom, à l'exception de son image numérotée, vous pouvez importer n'importe quel fichier de la séquence animée. L'importateur le reconnaîtra comme appartenant à une séquence de VDB. Si vous deviez sélectionner tous les fichiers d'une séquence de VDB animée et les importer tous en même temps, chaque fichier créerait sa propre séquence, créant ainsi plusieurs SVT animées identiques.
![]() |
![]() |
|---|---|
| Options d'importation de SVT : VDB statique à image unique | Options d'importation de SVT : séquence de VDB animée |
Les options d'importation comprennent les informations et les paramètres suivants :
| Propriétés | Description |
|---|---|
| Importer des fichiers statiques/animés | Afficher le type de VDB en cours d'importation, statique ou animé. |
| Ressource actuelle | Le chemin d’accès au fichier VDB en cours d'importation. |
| Importer la séquence | Importer plusieurs fichiers VDB étiquetés séquentiellement sous la forme d’une seule séquence animée de Sparse Volume Textures. Les SVT animées sont créées lors de l'importation d'un fichier source faisant partie d’une séquence de fichiers VDB numérotés de manière séquentielle (file0.vdb, file1.vdb, file2.vdb, etc.). L'importateur détecte automatiquement si un fichier fait partie d'une séquence et configure la case Import Sequence (Importer la séquence). |
| Attributs A | Autoriser l'utilisateur à assigner des canaux individuels de la grille source aux canaux (RVBA) de la SVT résultante. Chaque attribut représente les données de texture de carré lues par la texture Tableau de pages. Le menu déroulant du format à côté de cette propriété sélectionne le type de format que chaque texture de données de carré doit utiliser, comme float de 16 bits, float de 32 bits et unorm de 8 bits. Le format unorm 8 bits est utilisé pour les données ou les attributs qui sont compris entre 0 et 1. |
| Attributs B | Afficher les grilles présentes dans le fichier source et autoriser l'utilisateur à assigner des canaux individuels de la grille source aux canaux (RVBA) de la SVT résultante. Chaque attribut représente les données de texture de carré lues par la texture Tableau de pages. Le menu déroulant du format à côté de cette propriété sélectionne le type de format que chaque texture de données de carré doit utiliser, comme float de 16 bits, float de 32 bits et unorm de 8 bits. Le format unorm 8 bits est utilisé pour les données ou les attributs qui sont compris entre 0 et 1. |
| Informations sur la grille du fichier source | Afficher des informations sur les grilles du fichier VDB à importer, telles que l'index nommé, le type et les dimensions. |
Le temps nécessaire à l'importation et à la création d'une SVT dépend des dimensions et du nombre d'images du fichier VDB source.
Une ressource Sparse Volume Texture est créée lors du processus d'importation. L'ouverture du fichier révèle des informations à son sujet, telles que la résolution de son volume, le nombre de niveaux de mip, le nombre d'images, etc.
Changer la méthode d'adressage/quadrillage de l'échantillonneur peut prendre un certain temps, car il faut régénérer les données de SVT d'exécution.
Utiliser des Sparse Volume Textures dans les matériaux
Les matériaux peuvent échantillonner des Sparse Volume Textures à l'aide des nœuds Sparse Volume Texture Object et Sparse Volume Texture Sample.
Vous pouvez utiliser des SVT avec des volumes hétérogènes, du brouillard volumétrique et des nuages volumétriques. Leurs matériaux sont configurés de la même manière en définissant leur domaine de matériau sur Volume et leur mode de fusion sur Additif.
Le nœud Sparse Volume Texture prend des coordonnées UV (qui doivent être tridimensionnelles) et récupère les données résultantes des broches de sortie des attributs A et B — qui sont toutes deux de type float4. Vous pouvez utiliser les SVT comme paramètres dans un graphique de matériau et les échantillonner dans n'importe quel type de matériau. Cependant, ils sont plus utiles lorsqu'ils sont utilisés dans des matériaux avec leur domaine de matériau défini sur Volume, comme ceux avec des volumes hétérogènes, du brouillard volumétrique et des nuages volumétriques.
Vous trouverez ci-dessous un exemple d'échantillonnage de matériau de volume d’une SVT. Il calcule les coordonnées UV 3D en fonction de la position dans l'espace du monde — cette logique n'est pas spécifique aux SVT et est facultative. Si la broche d’entrée des UV n'est pas assignée, les UV sont automatiquement calculés avec la même logique que celle montrée dans l'image ci-dessous. Le nœud d'échantillon SVT possède deux sorties Float4 (Attribut A et Attribut B), mais seul le premier canal est utilisé dans cet exemple, car il contient la densité de la SVT utilisée.
Ceci est un exemple de la configuration la plus simple que vous pouvez appliquer pour échantillonner une texture de volume clairsemé dans un matériau.
Coordonnées UV de Sparse Volume Texture
Les Sparse Volume Textures sont échantillonnées avec des coordonnées UV tridimensionnelles. À l’instar des textures 2D standard, l'espace UV s'étend de 0 à 1 dans les trois dimensions (XYZ). L'espace UV s'étend le long de la propriété Volume Resolution (Résolution du volume) que vous pouvez inspecter lors de l'ouverture d'une ressource de SVT.
L'espace UV est défini comme l'union des boîtes englobantes des images individuelles. En conséquence, il n'est pas nécessaire de prendre en compte la taille de la boîte englobante lors de la configuration d'une logique de matériau puisque les mêmes coordonnées UV utilisées sur différentes images seront indexées dans le même voxel d’espace du monde.
De plus, vous pouvez utiliser le nœud de propriété Texture Property pour demander la taille de la texture et celle du texel comme vous le feriez pour une texture 2D. Vous pouvez également demander le volume de la SVT à partir d'un blueprint.
Valeurs des Mip du nœud Sparse Volume Texture
Les nœuds Sparse Volume Textures Sample prennent en charge les valeurs de mip de la même manière que les autres nœuds d’échantillon de texture.
Exemple de matériau de volume clairsemé source de moteur
L'Unreal Engine inclut un exemple de matériau de SVT vide déjà configuré auquel vous pouvez appliquer votre ressource de SVT. Il se trouve dans le répertoire suivant du navigateur de contenu : Engine > Engine Materials (Moteur > Matériaux du moteur), et est nommé SparseVolumeMaterial. Copiez ce matériau et créez-en une instance.
Après avoir ouvert l'instance de matériau, remplacez le paramètre SparseVolumeTexture et appliquez votre propre ressource de SVT importée au créneau d’assignation.
Visualiser des SVT avec des volumes hétérogènes
Pour utiliser des SVT avec des volumes hétérogènes, procédez comme suit :
- Ajoutez un acteur de volume hétérogène à la scène.
- Dans le panneau Détails, atteignez la section Matériaux.
- Assignez un matériau basé sur une SVT au créneau Élément 0.
Pour plus d'informations sur l’utilisation des volumes hétérogènes et leurs propriétés, voir Volumes hétérogènes.
Visualiser des SVT avec brouillard volumétrique
Pour utiliser des SVT avec brouillard volumétrique, procédez comme suit :
- Ajoutez un brouillard de hauteur exponentielle à votre scène.
- Dans le panneau Détails, activez l’option Brouillard volumétrique.
-
Appliquez un matériau de SVT à un maillage.
Si vous avez besoin d'un maillage, vous pouvez utiliser la forme Cube dans le panneau Placer des acteurs, dans la catégorie Forme.
Étant donné que les SVT peuvent avoir une quantité de détails plus élevée que la résolution du brouillard volumétrique, il peut s’avérer nécessaire de changer l’échelle du maillage pour obtenir de meilleurs résultats. De plus, il peut s’avérer nécessaire d’utiliser les variables de console suivantes pour augmenter la résolution du brouillard volumétrique :
r.VolumetricFog.GridPixelSize 4(la valeur par défaut est 8)r.VolumetricFog.GridSizeZ 256(la valeur par défaut est 128)
Lecture de Sparse Volume Textures animées
La lecture de SVT animées nécessite l'utilisation de dynamiques d’instance de matériau (MID) avec des blueprints. Une animation de SVT est pilotée à l'aide du nœud Sparse Volume Texture Parameter dans son matériau. Cela permet de changer le paramètre SVT à chaque tick, l'idée étant que chaque image d'une SVT animée est elle-même une SVT statique.
Il y a deux parties à prendre en compte lors de la configuration de la logique d’animation d’une SVT :
- Event BeginPlay construit un contrôleur de Sparse Volume Texture animée, qui est une classe qui a la fonctionnalité de lecture d'une SVT animée. Pour faciliter cela, il peut extraire des images de la SVT assignée. L'image extraite implémente également l'interface du shader de SVT et peut, elle-même, être liée aux paramètres de matériau de SVT. Un MID est nécessaire pour mettre à jour le paramètre SVT.
- Event Tick appelle une mise à jour sur la variable du contrôleur, qui récupère l'image actuelle et l'applique au nœud Sparse Volume Texture Parameter dans la dynamique d’instance de matériau.
L'exemple qui suit montre comment configurer un matériau de SVT, l’appliquer à un maillage, et en effectuer le rendu avec un brouillard volumétrique. Ceci n’est qu’un exemple de flux de travail. Si vous souhaitez utiliser des nuages volumétriques ou pour tout autre cas d'utilisation dans lequel vous souhaitez utiliser des SVT animées, vous devrez assigner le MID à l'acteur ou au composant utilisé pour rendre le matériau. Par exemple, avec un matériau de nuage, vous mettriez à jour le matériau de nuage du composant de nuage volumétrique.
Les volumes hétérogènes sont une exception puisque leur composant implémente déjà toute cette logique ; il suffit de créer le matériau avec un paramètre SVT et de lui assigner la SVT animée. Le composant de volume hétérogène crée automatiquement un MID en arrière-plan afin de mettre à jour le paramètre SVT.
Pour configurer la logique du blueprint de construction de la dynamique d'instance de matériau à utiliser avec le brouillard volumétrique, procédez comme suit :
- Dans votre matériau de SVT, utilisez un nœud Sparse Volume Texture Sample Parameter dans le graphique.
- Créez un blueprint d’acteur.
- Dans le panneau Composants, cliquez sur le bouton Ajouter (+) et sélectionnez un maillage Cube dans la liste.
- Dans le graphique d’événements, faites glisser le nœud Event BeginPlay et ajoutez un nœud Construct Object from Class.
- Sur le nœud Construct Object from Class, ajoutez la classe au contrôleur de Sparse Volume Textures animées (Animated Sparse Volume Texture Controller).
- Sur le nœud Construct Object from Class, faites un clic droit sur Valeur de retour et choisissez Promote to Variable (Promouvoir en variable).
- Dans le panneau My Blueprint sous Components (Composants), renommez NewVar en "Controller".
- Faites glisser le nœud Set Controller et ajoutez un nœud Set Sparse Volume Texture.
- Connectez la broche de sortie du nœud Set Controller à l’entrée Target (Cible) du nœud Set Sparse Volume Texture.
- Sur le nœud Set Sparse Volume Texture, faites un clic droit sur la broche Sparse Volume Texture et choisissez Promote to Variable.
-
Dans le panneau My Blueprint sous Components, cliquez sur la variable Sparse Volume Texture. Dans le panneau Détails sous Default Value (Valeur par défaut), définissez une variable Sparse Volume Texture.
Lorsque le créneau Sparse Volume Texture est vide, le matériau de SVT ne met à jour ni ne joue son animation.
-
Faites glisser le nœud Set Sparse Volume Texture et ajoutez un nœud Play.
Le nœud Play amène le contrôleur à mettre à jour un chronomètre interne à chaque appel de Update() sur le contrôleur. Ce chronomètre définit quelle image est considérée comme "actuelle" lors de l'extraction de l’image actuelle. Il existe également des nœuds Pause et Stop qui peuvent contrôler la lecture de la SVT.
- Sur le nœud Set Controller, faites glisser la broche de sortie du contrôleur et connectez-la à la broche Target du nœud Play.
- Faites glisser le nœud Play et ajoutez un nœud Create Dynamic Material Instance.
- Sur le nœud Create Dynamic Material Instance, définissez le menu déroulant Parent sur votre matériau de SVT.
- Sur le nœud Create Dynamic Material Instance, faites un clic droit sur la broche Valeur de retour et choisissez Promouvoir en variable.
- Dans le panneau My Blueprint sous Components (Composants), renommez NewVar en "MID".
- Faites glisser la broche de valeur de retour du nœud Set MID et ajoutez un nœud Set Material (Cube).
Cette partie de la logique de blueprint ressemble à ceci :
Cliquez sur l'image pour l'afficher en taille réelle.
Pour configurer la logique de blueprint afin de lire chacune des images de la SVT, procédez comme suit :
- Dans le panneau My Blueprint sous Components, faites glisser une variable Controller dans le graphique et sélectionnez Get Controller.
- Faites glisser le nœud Controller et ajoutez un nœud Update.
- Connectez la broche d'exécution Event Tick à Update.
- Connectez la broche Event Tick Delta Seconds à la broche Delta Time du nœud Update.
- Faites glisser le nœud Update et ajoutez un nœud Get Current Frame.
- Faites glisser le nœud Controller et connectez-le à la broche Target du nœud Get Current Frame.
- Dans le panneau My Blueprint sous Components, faites glisser une variable MID dans le graphique et sélectionnez Get MID.
- Faites glisser le nœud Get MID et ajoutez un nœud Set Sparse Volume Texture Parameter Value.
- Faites glisser la broche Valeur de retour du nœud Get Current Frame et connectez-la à la broche Value (Valeur) du nœud Set Sparse Volume Texture Parameter Value.
- Sur le nœud Set Sparse Volume Texture Parameter Value, renommez le nom du paramètre avec le nom du nœud Sparse Volume Texture Sample Parameter dans votre matériau de SVT.
Cette partie de la logique de blueprint ressemble à ceci :
Cliquez sur l'image pour l'afficher en taille réelle.
Lorsque vous simulez (Simulate) ou jouez dans l'éditeur [Play-in-Editor (PIE)], la SVT doit jouer son animation en boucle.
SVT animé utilisé avec le brouillard volumétrique.
Pour obtenir un bon résultat, il peut s'avérer nécessaire d'ajuster quelques éléments :
- Dans votre blueprint, ajustez la taille du maillage pour obtenir une meilleure résolution de volume lors de l'utilisation du brouillard volumétrique. L'exemple ci-dessus change l’échelle du maillage cubique à 20 fois sa taille d’origine.
- Dans votre matériau de SVT, utilisez une valeur de multiplication plus élevée pour la dernière multiplication avant la connexion à l’entrée d’extinction. L'exemple ci-dessus utilise 7,5 au lieu de la valeur d'origine de 2,5.
En plus des exemples ci-dessus, vous pouvez également effectuer les opérations suivantes :
- Utiliser d'autres fonctions disponibles sur le contrôleur pour définir directement l'index de l'image ou l’heure actuelle.
- La vitesse de lecture est configurée en ajustant la propriété Fréquence d’images du contrôleur. La valeur par défaut est 24 IPS.
- Vous pouvez également utiliser la fonction Get Current Frames For Interpolation pour obtenir les deux images les plus proches et une valeur comprise entre 0 et 1 pour interpoler entre elles. Vous pouvez utiliser cette méthode pour créer deux paramètres de SVT, un paramètre scalaire pour le lerp alpha, puis utiliser un nœud Interpolation dans le graphique de matériau.
Utiliser une texture de volume clairsemé animée avec Sequencer
À l’aide du blueprint de SVT animée créé à la section précédente, vous pouvez l'étendre pour que la lecture soit contrôlée à partir de Sequencer. Vous allez créer une nouvelle variable qui est définie comme Expose to Cinematics (Exposer aux cinématiques) et remplacer des parties de la logique Event Tick. Ce flux de travail est similaire à la façon dont les blueprints d’animation de maillage squelettique sont contrôlés avec Sequencer.
Pour étendre la lecture du blueprint de SVT animée pour qu'ils soient contrôlés par Sequencer :
- Ouvrez votre blueprint de SVT animée.
- Dans le panneau My Blueprint sous Components, faites glisser et déposer une variable Controller dans le graphique et sélectionnez Get Controller dans la liste.
- Faites glisser le nœud Get Controller et ajoutez un nœud Get Duration.
- Connectez la broche d'exécution du nœud Event Tick au nœud Get Duration.
- Faites glisser le nœud Get Duration et ajoutez un nœud Set Time (sous la catégorie Animated Sparse Volume Texture Controller).
- Connectez le nœud Get Controller à la broche Target du nœud Set Time.
- Faites glisser la valeur de retour du nœud Get Duration et ajoutez un nœud Multiply.
- Faites glisser la broche de sortie du nœud Multiply et connectez-la à la broche d’entrée Time du nœud Set Time.
- Faites un clic droit dans le graphique et ajoutez un nœud Fraction.
- Faites un clic droit sur la broche d'entrée A du nœud Fraction et sélectionnez Promote to Variable (Promouvoir en variable). Nommez la variable "Animation Alpha".
- Faites glisser le nœud Set Time et ajoutez un nœud Get current frame.
- Faites glisser le nœud Controller et connectez-le à la broche Target sur le nœud Get Current Frame.
- Dans le panneau My Blueprint sous Components, faites glisser et déposer une variable MID dans le graphique et sélectionnez Get MID.
- Faites glisser le nœud Get MID et ajoutez un nœud Set Sparse Volume Texture Parameter Value.
- Faites glisser la broche Valeur de retour du nœud Get Current Frame et connectez-la à la broche Value (Valeur) du nœud Set Sparse Volume Texture Parameter Value.
- Sur le nœud Set Sparse Volume Texture Parameter Value, renommez le nom du paramètre avec le nom du nœud Sparse Volume Texture Sample Parameter utilisé dans votre matériau de SVT.
- Dans le panneau My Blueprint sous Components, sélectionnez la variable AnimationAlpha. Dans le panneau Détails, cochez la case Expose to Cinematics.
- Compilez et enregistrez.
Votre logique de blueprint de SVT animée devrait ressembler à ceci pour le chemin d’accès à Event Tick :
Cliquez sur l'image pour l'afficher à taille réelle.
Une fois cette logique configurée, lorsque vous ajoutez une piste à Sequencer pour le blueprint de SVT animée ou que vous cliquez sur l'icône Ajouter (+) à côté de la piste, vous devriez voir votre variable AnimationAlpha dans la liste.
Une fois ajoutée, votre variable peut être saisie dans le panneau Sequencer.
Notes sur les performances en matière de chargement dynamique
- Lecture en temps réel de SVT animées
- La lecture en temps réel de SVT animées dépend principalement de leur résolution et de la sparsité des données de volume. Si le chargement des données est trop long, le rendu revient à des niveaux de mip plus grossiers, ce qui entraîne une baisse visible de la qualité. Vous pouvez résoudre ce problème de plusieurs manières :
- Utilisation d'un format de pixel plus petit lors de l'importation d'un fichier VDB, ce qui améliore en retour les performances en matière de chargement dynamique. (Un format de 32 bits est généralement excessif pour les cas d'utilisation en temps réel.)
- Réduction de la fréquence d'images de l'animation.
- Utilisation d'un niveau de mip de résolution inférieure.
- Si vous utilisez cette méthode, le niveau de mip doit être défini dans les paramètres du contrôleur de SVT animées ou du composant de volume hétérogène. Le réglage de la broche d'entrée MipLevel sur le nœud Sparse Volume Texture Sample permet d'échantillonner au niveau de mip donné (à condition qu'il ait été chargé), mais le chargement dynamique lui-même n'est pas piloté à partir de là. **Variables de console utiles pour ajuster les performances en matière de chargement dynamique
r.SparseVolumeTexture.Streaming.NumPrefetchFramesest le nombre d'images à précharger lorsqu'une image donnée est demandée sur le système de chargement dynamique. La valeur par défaut est de 3 images, car elle fonctionne bien dans la plupart des cas, mais la valeur peut dépendre de la SVT elle-même. La définition d’une valeur trop élevée peut étouffer le système de chargement dynamique avec un nombre excessif de requêtes. La définition d’une valeur trop basse peut entraîner un chargement partiel des images au moment où elles sont nécessaires pour le rendu.r.SparseVolumeTexture.Streaming.PrefetchMipLevelBiasapplique un biais au niveau de mip des images préchargées. Le préchargement est effectué à des niveaux de mip de plus en plus élevé (résolution inférieure). Ce biais peut être utilisé pour modifier le niveau de Mip auquel les images sont préchargées. Les valeurs négatives entraînent le préchargement des images à des niveaux de mip de résolution supérieure, tandis que les valeurs positives les préchargent à des niveaux de mip de résolution inférieure.r.SparseVolumeTexture.Streaming.PrintMemoryStatsaffiche des informations sur la mémoire de toutes les SVT enregistrées dans le système de chargement dynamique. Les performances en matière de chargement dynamique commencent généralement à être affectées par les images de SVT de taille supérieure à 30 à 50 mégaoctets (Mo). Lors d’une tentative de lecture à la fréquence d’images par défaut de 24 IPS. Les performances dépendent en grande partie de la plateforme et du PC utilisés. Les performances en matière de chargement dynamique dépendent également du nombre de SVT actuellement en chargement dynamique.
- Blocage de la lecture
- Pour certains cas d'utilisation (productions hors ligne), il peut être préférable d'éviter les compromis mentionnés ci-dessus. Pour garantir le chargement de tous les mips lors du rendu de l'image actuelle, le système de chargement dynamique prend en charge le blocage des requêtes. Grâce au blocage des demandes, les demandes d'E/S pour le chargement dans une image donnée sont émises et immédiatement mises en attente jusqu'à ce qu'elles soient terminées. Les demandes de blocage sont susceptibles d’affecter la fréquence d'images et de provoquer un "saut" d'images lorsque le temps de jeu actuel est utilisé pour piloter la lecture de l'animation. Cependant, lorsque vous utilisez Sequencer pour créer un créer un rendu d’images, le problème de saut disparaît, car Sequencer spécifie l’image de SVT à rendre, peu importe si cinq minutes en temps réel se sont écoulées entre le rendu des images précédentes et des images actuelles. Cela ne s'applique pas à la visionneuse de SVT, car il s'agit principalement d'un moyen de déboguer les ressources de SVT.
- **Filtrage de mips stochastique
- Cette fonctionnalité présente des optimisations similaires à celles des textures virtuelles, où les deux niveaux de mip les plus proches sont échantillonnés de manière stochastique. Cela réduit efficacement le nombre d'échantillons de texture de moitié, améliorant ainsi les performances. Prenons par exemple la scène ci-dessous avec cinq instances de "Explosion aérienne" avec un chargement dynamique d’une bande passante d'E/S de 2 Go/s. Cette scène aurait besoin d'environ 25 Go/s sans le limiteur de bande passante et sans mise à l'échelle selon la taille de l'espace écran projeté.

Limites
- La texture Page Table (Tableau de pages) est limitée à 2 gigaoctets (Go) en taille et la résolution virtuelle maximale de la SVT ne doit pas dépasser 32 000 unités sur les longueurs X et Y. L'axe Z est limité à 16 000.
- Par exemple, vous pouvez créer un volume de 32 000 x 100 x 100 unités, un volume de 100 x 32 000 x 100 unités ou un volume de 100 x 100 x 16 000 unités. Dans cet exemple, 100 est une valeur suffisamment basse pour maintenir le tableau de pages en dessous de la limite de 2 Go.
- La lecture en temps réel de SVT animées dépend principalement de leur résolution et de la sparsité des données de volume. Si le chargement des données est trop long, le rendu revient à des niveaux de mip plus grossiers, ce qui entraîne une baisse visible de la qualité. Vous pouvez résoudre ce problème en réduisant la fréquence d'images de l'animation ou en utilisant un niveau de Mip de résolution inférieure. Les performances en matière de chargement dynamique peuvent également être améliorées en sélectionnant un format de pixel plus petit lors de l'importation du fichier VDB.
- Plateformes prises en charge :
- Actuellement prise en charge sur Windows avec DX11 et DX12 à l’aide de Shader Model 5 (SM5) et Shader Model 6 (SM6).
- L'importation de fichiers VDB ne fonctionne actuellement que dans les versions d’éditeur pour Windows. Les versions préparées prennent en charge les SVT sur n'importe quelle plateforme capable des performances requises pour les charger et en effectuer le rendu.
- Les SVT ne fonctionnent pas avec l'outil de rendu mobile.
Ressources supplémentaires
- Les fichiers VDB utilisés dans les exemples de cette page proviennent de l'ensemble de fichiers VDB gratuit de JangaFX créé avec EmberGen.
- Vous pouvez télécharger leurs exemples gratuits ici.

(h:250)
(h:250)
