Eine Spärliche Volumentextur (SVT) ist eine Textur, die Texel (Voxel) in einer 3D-Datenstruktur speichert. Sie können die Daten von SVTs mit dreidimensionalen UV-Koordinaten indexieren, ähnlich wie bei 3D-Texturen und Volumentexturen. Im Gegensatz zu (dichten) Standard-Volumentexturen verwenden SVTs den Speicher nur für die Bereiche des Volumens mit „interessanten“ Daten (d. h. die Bereiche, in denen Voxel-Daten vorhanden sind). Dies erlaubt es, dass viel größere Volumen oder sogar Volumen mit denselben Grenzen weniger Speicher verwenden als die Dichte von Standard-Volumentexturen.
Arten von spärlichen Volumentexturen
Sie können statische oder animierte Volumina verwenden, um spärliche Volumentexturen zu repräsentieren. Eine statische SVT ist ein einzelnes Volumen, während eine animierte SVT eine Sequenz von Volumen (oder Frames) ist, die wiedergegeben werden kann, ähnlich wie bei einer Flipbook-Animation.
Links, statische SVT mit einzelnem Volumen; Rechts, eine animierte SVT.
Diese SVTs werden unter Verwendung von Heterogenes Volumen-Actors gerendert. Weitere Informationen zur Verwendung finden Sie unter Heterogene Volumen.
Aufbau von spärlichen Volumentexturen
Spärliche Volumentexturen bestehen aus mehreren Texturen. Dazu gehört eine Seitentabelle-Textur, die als Umlenkung auf Physische Kacheldaten-Texturen dient, aus denen das Volumen besteht. Diese Kacheldaten-Texturen speichern die Texturdaten für das Volumen und können bis zu zwei Texturen verwenden, um Daten und Attribute des Volumens zu speichern, die als Attribute A und B gespeichert werden.
Die Attribute A und B nutzen jeweils die RGBA-Texturkanäle zur Datenspeicherung, wodurch Sie bis zu acht Kanäle zur Datenspeicherung zur Verfügung haben. Die Daten werden durch Textur-Suchen abgerufen – eine Suche für die Seitentabelle und eine Suche pro physischer Kacheldaten, also insgesamt zwei oder drei Suchen, je nach SVT. Dies bedeutet, dass SVTs eine einzelne Seitentabellen-Suche für beide physischen Kacheldaten-Texturen gemeinsam nutzen, anstatt eine 1:1-Beziehung zwischen Seitentabelle und Kacheldaten-Textur zu haben.
Die beiden Kacheldaten-Texturen der SVTs (Attribute A und B) können unterschiedliche Pixelformate haben – 16-Bit, 32-Bit und 8-Bit unorm. Wenn Sie einen der RGBA-Texturkanäle in einer der Attributlisten nicht verwenden, wird versucht, ein Pixelformat mit weniger Kanälen zu nutzen. Wenn Sie keinen Kanal verwenden, benötigt die Textur keinen Speicher.
| Texturformat | Textur | Unreal-Engine-Darstellung |
|---|---|---|
| Seitentabelle | ![]() |
![]() |
| Physische 3D-Kacheln | ![]() |
![]() |
Möglichkeiten zur Anzeige von spärlichen Volumentexturen
Sie können mit spärlichen Volumentexturen auf folgende Arten arbeiten:
- Volumen-Domain-Materialien
- Heterogenes Volumen-Actor
- Volumetrischer Nebel
- Volumetrische Wolken
- Viewer für spärliche Volumentexturen
Heterogenes Volumen-Actor
und -Komponente
Heterogene Volumen sind platzierbare Actors , die SVTs nutzen, indem sie spärliche Volumentexturen-Material-Knoten in ihren Volumendomänen-Materialien integrieren. Dieser Actor-Typ rendert die SVTs und ihre Attribute mithilfe der in seinem Material eingerichteten Logik. Heterogene Volumen-Actors können auch animierte SVTs ohne zusätzliche Einrichtung abspielen und in Schleifen wiedergeben.
Das Rendering heterogener Volumen ist teilweise durch Aufgeschobenes-Rendering-Funktionen für Echtzeit begrenzt. Das Path Tracing bietet jedoch eine umfassendere Unterstützung für das Rendering von Volumen, wie beispielsweise die präzise Simulation von Streuung, Schatten und globaler Beleuchtung.
Beispiel eines SVT-Materials, das mit einem Heterogenes Volumen -Actor dargestellt wird.
Weitere Informationen und Details zur Verwendung und Einrichtung finden Sie unter Heterogene Volumen s.
Volumetrischer Nebel
SVTs unterstützen Volumetrischen Nebel, eine Funktion des exponentiellen Höhennebels, wenn dessen Volumendomänen-Material auf ein Mesh angewendet wird. SVTs können eine höhere Detailgenauigkeit als die Auflösung des volumetrischen Nebels aufweisen, wodurch bei dieser Methode im Vergleich zu einem heterogenen Volumen Unterschiede sichtbar sein können.
Links: Heterogenes Volumen -Actor, der eine SVT anzeigt; Rechts: ein SVT-Material, das auf ein Mesh angewendet und mit volumetrischem Nebel dargestellt wird.
Informationen zur Einrichtung von volumetrischem Nebel mit einem SVT-Material finden Sie im Abschnitt Spärliche Volumentexturen mit volumetrischem Nebel anzeigen auf dieser Seite.
Volumetrische Wolken
SVTs unterstützen Volumetrische Wolken automatisch, wenn ihr Volumendomänen-Material auf einen Heterogenes Volumen -Actor angewendet wird.
Viewer für spärliche Volumentexturen
Der Viewer für spärliche Volumentexturen ist am nützlichsten als Vorschau-Tool und ist nicht für die Verwendung mit dem Rest der Szene optimiert oder ideal für diesen Einsatz. Stattdessen ist es am besten, ein Material zu erstellen, um die SVT richtig anzuzeigen und es auf ein Heterogenes Volumen anzuwenden , oder eine der unter Möglichkeiten zur Anzeige von spärlichen Volumentexturen erwähnten Methoden zu verwenden.
Der Viewer für spärliche Volumentexturen bietet eine Möglichkeit, ein SVT-Asset direkt und ohne Materialeinrichtung in der Vorschau anzuzeigen. Mit dem Viewer können Sie einzelne Eigenschaft-Textur-Kanäle der SVT in der Vorschau anzeigen und deren Animation abspielen, falls vorhanden. Dies macht den Viewer zur idealen Wahl für die schnelle Fehlersuche bei SVT-Assets ohne aufwendige Einrichtung.
Befolgen Sie diese Schritte zur Verwendung des SVT-Viewers:
- Ziehen Sie einen Viewer für spärliche Volumentexturen aus dem Actors platzieren-Panel in die Szene.
- Weisen Sie im Details-Panel ein SVT-Asset dem Vorschau der spärlichen Volumentextur-Zuweisungsslot zu.
Das SVT wird im Viewer angezeigt.
Passen Sie den Wert der Auslöschung-Eigenschaft an, um die Sichtbarkeit des Volumens durch Einstellung der Lichtabsorption zu regulieren.
Verwenden Sie bei SVTs mit mehreren Frames die Kontrollkästchen Wiedergeben und Schleife, um eine Schleife der SVT-Frames abzuspielen. Die Framerate -Eigenschaft legt fest, wie viele Bilder pro Sekunde (fps) abgespielt werden sollen. Die Vorschau ist standardmäßig auf 24 fps eingestellt. Wenn die Animieren-Eigenschaft deaktiviert ist, können Sie mit dem Frame-Eigenschaftswert durch die Frames in der SVT scrollen.
Links: SVT-Vorschau ohne Animation; Rechts: SVT-Vorschau mit Schleifenwiedergabe der animierten Frames.
Der SVT-Viewer zeigt jeweils nur einen Texturkanal an. Dies ist nützlich zur Überprüfung einzelner Kanäle eines SVT-Assets und funktioniert je nach den in der Volumentextur gespeicherten Daten mehr oder weniger gut. Importierte Geschwindigkeitsdaten werden als Dichte angezeigt und führen zu unerwünschten Ergebnissen.
Verwenden Sie das Auswahlfeld Attribut-Vorschau, um den Attributkanal auszuwählen, den Sie in der Vorschau anzeigen möchten. Standardmäßig wird der erste Kanal AttributesA Red verwendet.
Der Viewer für spärliche Volumentexturen verfügt über folgende Eigenschaften:
| Eigenschaften | Beschreibung |
|---|---|
| Asset-Vorschau | |
| Vorschau der spärlichen Volumentextur | Das SVT-Asset, das mit der Vorschau verwendet werden soll. |
| Anfragen zum Blockieren des Streamings | Weist den SVT-Streaming-Manager an, alle Streaming-Anfragen unmittelbar nach deren Ausgabe zu blockieren (abzuwarten). Weitere Informationen zur effektiven Nutzung dieser Eigenschaft finden Sie im Abschnitt Streaming-Leistungshinweise. |
| Per-Frame-Transformationen anwenden | Wendet die Transformation an, die an einen bestimmten Spärliche-Volumentextur-Frame angehängt ist. Diese Transformation erfolgt relativ zur Transformation der Spärliche-Volumentextur-Viewer-Komponente. |
| Drehpunkt im Schwerpunkt | Verschiebt den Drehpunkt in die Mitte des Volumens. Beachten Sie, dass Transformationen mit dem Drehpunkt am Ursprung erstellt wurden, der sich üblicherweise an einer der Ecken des Volumens befindet, je nachdem, wie es erstellt wurde. Das erzwungene Verschieben des Drehpunkts in die Volumenmitte kann Transformationen zerstören. |
| Voxelgröße | Einheitliche Skalierung, die auf alle Voxel angewendet wird. Dies ist eine schnelle Möglichkeit, das gesamte Volumen zu skalieren, um skalierungsbezogene Probleme zu beheben. |
| Vorschau-Attribut | Wählen Sie aus, welches Attribut in der Vorschau angezeigt werden soll. Es kann immer nur ein Attribut in der Vorschau angezeigt werden, auch wenn mehrere in einer einzelnen SVT enthalten sind. Wenn der Alpha-Kanal von Attribut A oder B auf None gesetzt ist, können bei der Vorschau schwarze, blockartige Darstellungen erscheinen. Dies liegt daran, dass die GPU für nicht vorhandene Texturkanäle normalerweise 0 zurückgibt, außer bei Alpha-Kanälen, die standardmäßig 1 zurückgeben. Dies sollte kein Problem darstellen, wenn Sie die Einstellung None beibehalten, da der Kanal im Wesentlichen undefiniert ist. |
| Mip-Level | Legt fest, auf welchem Mip-Level die SVT angezeigt werden soll. |
| **Auslöschung | |
| ** | Bestimmt die Deckkraft des Volumens. Auslöschung |
| ist die Summe aus Absorption (Lichtstrahlen, die auf Partikel treffen und absorbiert werden) und Streuung (Strahlen, die auf Partikel treffen und in eine andere Richtung gestreut/abgelenkt werden, sodass sie die Kamera nicht mehr erreichen). Höhere Werte erscheinen undurchsichtiger als niedrigere Werte. | |
| Animation | |
| Frame | Geben Sie einen Wert ein oder ziehen Sie den Schieberegler, um durch die Frames der animierten SVT zu scrollen. Diese Eigenschaft ist bearbeitbar, wenn Wiedergabe deaktiviert ist. |
| Framerate | Legen Sie eine Bildrate fest, mit der diese SVT-Animation abgespielt werden soll. Zum Beispiel 24, 30, 48, 60. Diese Eigenschaft ist bearbeitbar, wenn Wiedergabe aktiviert ist. |
| Wiedergabe | Schaltet ein/aus, ob der Previewer die Frames des SVT-Assets in einer Schleife abspielt, wenn mehrere vorhanden sind. |
| Schleife | Wiederholt die Animation, wenn Wiedergabe aktiviert ist. |
| Rückwärts wiedergeben | Spielt die Frames einer animierten SVT rückwärts ab, wenn Wiedergabe aktiviert ist. |
Arbeiten mit spärlichen Volumentexturen
Sie können spärliche Volumentexturen aus VDB (oder Voxel Data Base) -Dateien importieren. Dieses Format wird häufig zur Speicherung von spärlichen Volumendaten verwendet. VDB-Daten werden beim Import in die Unreal Engine in eine spärliche Volumendarstellung umgewandelt.
VDB-Dateien enthalten sogenannte „Raster“ – eine andere Bezeichnung für Volumen. Diese Raster können verschiedene Arten von Komponenten enthalten, wie Dichte, Geschwindigkeit und Temperatur. SVTs unterstützen den Import von Grids mit folgenden Typen: Float (float, float2, float3, float4), Double (double, double2, double3, double4) und Half (half, half2, half3, half4). Die resultierende SVT-Auflösung ist die Vereinigung der Dimensionen aller importierten Raster.
Während die Unreal Engine den Import von VDBs aller Typen unterstützt, unterstützt SVT derzeit keine Double-Formate. Die Daten werden beim Import in 8/16/32-Bit konvertiert.
Jedes Raster kann auch seine eigene Transformation haben. Das VDB-Format ermöglicht eine breite Palette von Transformationstypen, einschließlich Perspektiv- und Frustum-Übergängen. Die Unreal Engine unterstützt derzeit Transformationen mit Skalierung, Drehung und Verschiebung. Diese Transformationen können sich über verschiedene Frames hinweg ändern, sodass sich die importierte SVT entlang seiner Animationszeitleiste skalieren, rotieren und verschieben lässt.
Auch wenn sich die Transformationen über mehrere Frames hinweg unterscheiden können, müssen alle Transformationen aller Raster innerhalb eines einzelnen Frames identisch sein.
VDB-Dateien importieren
Sie können eine VDB-Datei auf folgende Arten importieren:
- Ziehen Sie die VDB-Datei per Drag & Drop direkt in den Inhaltsbrowser .
- Verwenden Sie die Importieren-Schaltfläche im Inhaltsbrowser.
VDBs verfügen über ein eigenes Importfenster für statische und animierte VDB-Dateien.
Beim Import einer animierten VDB-Datei, die den gleichen Namen mit Ausnahme der nummerierten Frames enthält, können Sie eine beliebige Datei aus der Animationssequenz importieren. Der Importer erkennt automatisch die Zugehörigkeit zur VDB-Sequenz. Wenn Sie alle Dateien einer animierten VDB-Sequenz auswählen und gleichzeitig importieren, würde jede Datei ihre eigene Sequenz erstellen und somit mehrere identische animierte SVTs erzeugen.
![]() |
![]() |
|---|---|
| SVT-Importoptionen: Statische VDB aus einem Frame | SVT-Importoptionen: Animierte VDB-Sequenz |
Die Importoptionen umfassen folgende Informationen und Einstellungen:
| Eigenschaften | Beschreibung |
|---|---|
| Statisch/Animiert importieren | Zeigt den Typ der zu importierenden VDB an, statisch oder animiert. |
| Aktuelles Asset | Der Dateipfad der zu importierenden VDB. |
| Sequenz importieren | Importiert mehrere sequenziell bezeichnete VDB-Dateien als einzelne animierte spärliche Volumentextur-Sequenz. Animierte SVTs werden erstellt, wenn eine Quelldatei importiert wird, die Teil einer sequenziell nummerierten VDB-Dateisequenz ist (file0.vdb, file1.vdb, file2.vdb und so weiter). Der Importer erkennt automatisch, ob eine Datei Teil einer Sequenz ist und aktiviert das Kontrollkästchen Sequenz importieren. |
| Attribute A | Ermöglicht dem Benutzer, einzelne Kanäle aus den Quellrastern den (RGBA-)Kanälen der resultierenden SVT zuzuweisen. Jedes Attribut repräsentiert die Daten der Kacheltexturen, die von der Seitentabellen-Textur gelesen werden. Die Dropdown-Liste für das Format neben dieser Eigenschaft wählt aus, welche Art von Format jede Kacheldatentextur verwenden soll, wie z. B. 16bit Float , 32bit Float und 8bit Unorm. 8bit Unorm wird für Daten oder Attribute verwendet, die sich im Bereich von 0 bis 1 befinden. |
| Attribute B | Zeigt die in der Quelldatei vorhandenen Raster an und ermöglicht dem Benutzer, einzelne Kanäle aus den Quellrastern den (RGBA-)Kanälen der resultierenden SVT zuzuweisen. Jedes Attribut repräsentiert die Daten der Kacheltexturen, die von der Seitentabellen-Textur gelesen werden. Die Dropdown-Liste für das Format neben dieser Eigenschaft wählt aus, welche Art von Format jede Kacheldatentextur verwenden soll, wie z. B. 16bit Float , 32bit Float und 8bit Unorm. 8bit Unorm wird für Daten oder Attribute verwendet, die sich im Bereich von 0 bis 1 befinden. |
| **Quelldatei-Raster | |
| info** | Zeigt Informationen über die Raster |
| der zu importierenden VDB-Datei an, wie zum Beispiel den benannten Index, Typ und Abmessungen. |
Die Zeit, die Sie zum Importieren und Erstellen einer SVT benötigen, hängt von den Dimensionen und der Anzahl der Frames der VDB-Quelldatei ab.
Während des Importvorgangs wird ein Spärliche Volumentextur-Asset erstellt. Beim Öffnen der Datei werden Informationen wie die Auflösung des Volumens, die Anzahl der Mip-Level, die Anzahl der Frames und weitere Details angezeigt.
Das Ändern der Methode zur Adressierung/Kachelung des Samplers kann einige Zeit in Anspruch nehmen, da er die Daten der Laufzeit-SVT erneut generieren muss.
Verwendung von spärlichen Volumentexturen
in Materialien
Materialien können spärliche Volumentexturen mithilfe der Knoten Spärliche Volumentextur Objekt und Spärliche Volumentextur Sample sampeln.
Sie können SVTs mit Heterogenen Volumen, Volumetrischem Nebel und Volumetrischen Wolken verwenden. Ihre Materialien werden ähnlich eingerichtet, indem ihre Material-Domain auf Volumen und ihr Überblendungsmodus auf Additiv eingestellt wird.
Der Spärliche Volumentextur Sample-Knoten nimmt UV-Koordinaten auf (diese müssen dreidimensional sein) und ruft die resultierenden Daten von den Ausgabe-Pins Attribute A und Attribute B ab – beide sind vom Typ float4. Sie können SVTs als Parameter in einem Materialdiagramm verwenden und in jeder Art von Material sampeln. Am nützlichsten sind sie jedoch bei Materialien, deren Material-Domain auf Volumen eingestellt ist, wie beispielsweise bei heterogenen Volumen, volumetrischem Nebel und volumetrischen Wolken.
Nachfolgend sehen Sie ein Beispiel eines Volumenmaterials, das eine SVT sampelt. Es berechnet die 3D-UV-Koordinaten basierend auf der Welt-Bereich-Position – diese Logik ist nicht SVT-spezifisch und optional. Wenn der UVs-Input-Pin nicht zugewiesen wird, werden die UVs automatisch mit der gleichen Logik berechnet, wie im Bild unten dargestellt. Der SVT-Sample-Knoten hat zwei Float4-Outputs (Attribute A und Attribute B), aber in diesem Beispiel wird nur der erste Kanal verwendet, da er die Dichte der verwendeten SVT enthält.
Dies ist ein Beispiel für das einfachste Setup zum Sampeln einer spärlichen Volumentextur in einem Material.
UV-Koordinaten für spärliche Volumentexturen
Spärliche Volumentexturen werden mit dreidimensionalen UV-Koordinaten gesampelt. Wie bei Standard-2D-Texturen erstreckt sich der UV-Raum von 0 bis 1 in allen drei Dimensionen (XYZ). Der UV-Raum erstreckt sich entlang der Eigenschaft „Volumenauflösung“, die Sie beim Öffnen eines SVT-Assets einsehen können.
Der UV-Raum wird als Vereinigung der Begrenzungsrahmen der einzelnen Frames definiert. Aufgrund dessen müssen Sie bei der Einrichtung der Material-Logik die Größe des Begrenzungsrahmens nicht berücksichtigen, da dieselben UV-Koordinaten auf verschiedenen Frames denselben Voxel im Welt-Bereich indizieren.
Darüber hinaus können Sie den Textureigenschaft-Knoten verwenden, um die Texturgröße und Texelgröße abzufragen, genau wie bei einer 2D-Textur. Sie können das Volumen der SVT auch über einen Blueprint abfragen.
Mip-Werte des Spärliche-Volumentextur-Knotens
Spärliche Volumentexturen Sample-Knoten unterstützen Mip-Werte ähnlich wie andere Textur-Sample-Knoten.
Engine-Quellcode-Beispiel für Spärliches Volumenmaterial
Die Unreal Engine enthält bereits ein leeres SVT-Beispielmaterial, das Sie für Ihr SVT-Asset verwenden können. Sie finden es im Inhaltsbrowser unter Engine > Engine-Materialien mit dem Namen SparseVolumeMaterial. Erstellen Sie eine Kopie dieses Materials und erzeugen Sie daraus eine Instanz.
Sobald Sie die Material-Instanz geöffnet haben, überschreiben Sie den SparseVolumeTexture-Parameter und weisen Sie Ihr eigenes importiertes SVT-Asset dem Zuweisungsslot zu.
SVTs mit heterogenen Volumen anzeigen
Befolgen Sie diese Schritte, um SVTs mit heterogenen Volumen zu verwenden:
- Fügen Sie einen Heterogenes Volumen -Actor zur Szene hinzu.
- Navigieren Sie im Details-Panel zum Abschnitt Materialien.
- Weisen Sie dem Element 0-Slot ein SVT-basiertes Material zu.
Weitere Informationen zur Verwendung von heterogenen Volumen und deren Eigenschaften finden Sie unter Heterogene Volumen.
SVTs mit volumetrischem Nebel anzeigen
Befolgen Sie diese Schritte, um SVTs mit volumetrischem Nebel zu verwenden:
- Fügen Sie Ihrer Szene einen Exponentiellen Höhennebel hinzu.
- Aktivieren Sie im Details-Panel die Option Volumetrischer Nebel.
-
Wenden Sie ein SVT-Material auf ein Mesh an.
Falls Sie ein Mesh benötigen, können Sie die Würfel-Form im Actors platzieren-Panel unter der Form-Kategorie verwenden.
Da SVTs einen höheren Detailgrad als die Auflösung des volumetrischen Nebels haben können, müssen Sie das Mesh möglicherweise vergrößern, um bessere Ergebnisse zu erzielen. Sie können auch diese Konsolenvariablen verwenden, um die Auflösung des volumetrischen Nebels zu erhöhen:
r.VolumetricFog.GridPixelSize 4(Standardwert ist 8)r.VolumetricFog.GridSizeZ 256(Standardwert ist 128)
Wiedergabe von animierten spärlichen Volumentexturen
Die Wiedergabe von animierten SVTs erfordert die Verwendung von Material-Instanz-Dynamiken (MIDs) mit Blueprint. Die Animation einer SVT wird über den Spärliche Volumentextur Parameter-Knoten in ihrem Material gesteuert. Dadurch ist es möglich, den SVT-Parameter bei jedem Tick auszutauschen, wobei die Idee ist, dass jeder Frame einer animierten SVT selbst eine statische SVT ist.
Bei der Einrichtung der Logik zur Animation einer SVT sind zwei Aspekte zu berücksichtigen:
- Das Event BeginPlay erstellt einen animierten Spärliche-Volumentextur-Controller, eine Klasse mit Funktionen zur Wiedergabe einer animierten SVT. Um dies zu ermöglichen, können Frames aus der zugewiesenen SVT extrahiert werden. Der extrahierte Frame implementiert ebenfalls die SVT-Shader-Schnittstelle und kann selbst an SVT-Materialparameter gebunden werden. Ein MID wird benötigt, um den SVT-Parameter zu aktualisieren.
- Das Event Tick ruft eine Aktualisierung der Controller-Variable ab, die den aktuellen Frame abruft und auf den Spärliche Volumentextur Parameter-Knoten in der Material-Instanzdynamik anwendet.
Das folgende Beispiel zeigt, wie Sie ein SVT-Material einrichten, es auf ein Mesh anwenden und mit volumetrischem Nebel rendern können. Dies ist nur ein Workflow-Beispiel. Wenn Sie volumetrische Wolken oder andere Anwendungsfälle nutzen möchten, bei denen Sie animierte SVTs verwenden möchten, müssen Sie die MID dem Actor oder der Komponente zuweisen, die das Material rendert. Bei einem Wolkenmaterial würden Sie beispielsweise das Wolkenmaterial der volumetrischen Wolkenkomponente aktualisieren.
Heterogene Volumen sind eine Ausnahme, da ihre Komponente diese Logik bereits implementiert. Sie müssen nur das Material mit einer SVT-Parameter erstellen und die animierte SVT zuweisen. Die heterogene Volumenkomponente erstellt automatisch im Hintergrund eine MID, um den SVT-Parameter zu aktualisieren.
Befolgen Sie diese Schritte, um die Blueprint-Logik für die Erstellung der Material-Instanz-Dynamik zur Verwendung mit volumetrischem Nebel einzurichten:
- Verwenden Sie in Ihrem SVT-Material einen Spärliche Volumentextur Sample Parameter-Knoten im Graph.
- Erstellen Sie einen Actor Blueprint.
- Klicken Sie im Komponenten-Panel auf die Schaltfläche Hinzufügen (+) und wählen Sie ein Würfel-Mesh aus der Liste aus.
- Ziehen Sie im Event Graph den Event BeginPlay-Knoten ab und fügen Sie einen Objekt aus Klasse erstellen-Knoten hinzu.
- Setzen Sie beim Objekt aus Klasse erstellen die Klasse auf Animierter spärliche Volumentextur-Controller.
- Klicken Sie beim Objekt aus Klasse erstellen-Knoten mit der rechten Maustaste auf Ergebniswert und wählen Sie Beförderung zu Variable.
- Benennen Sie im Mein Blueprint-Panel unter Komponenten die NewVar in „Controller“ um.
- Ziehen Sie den Controller einstellen-Knoten ab und fügen Sie einen Spärliche Volumentextur einstellen-Knoten hinzu.
- Verbinden Sie den Output-Pin des Controller einstellen-Knotens mit dem Ziel-Input des Spärliche Volumentextur einstellen-Knotens.
- Klicken Sie beim Spärliche Volumentextur einstellen -Knoten mit der rechten Maustaste auf den Spärliche Volumentextur -Pin und wählen Sie Beförderung zu Variable.
-
Klicken Sie im Mein Blueprint-Panel unter Komponenten auf die Variable Spärliche Volumentextur . Stellen Sie im Details-Panel unter Standardwert eine Spärliche Volumentextur ein.
Wenn der Spärliche Volumentextur -Slot leer bleibt, wird das SVT-Material nicht aktualisiert und spielt seine Animation nicht ab.
-
Ziehen Sie den Spärliche Volumentextur einstellen -Knoten ab und fügen Sie einen Wiedergeben-Knoten hinzu.
Der Wiedergeben-Knoten veranlasst den Controller dazu, einen internen Timer zu aktualisieren, jedes Mal wenn Sie Update() auf dem Controller aufrufen. Dieser Timer definiert, welcher Frame als „aktuell“ betrachtet wird, wenn der aktuelle Frame extrahiert wird. Es gibt auch Pausieren- und Stoppen-Knoten, die die SVT-Wiedergabe steuern können.
- Ziehen Sie am Controller einrichten-Knoten den Controller-Output-Pin ab und verbinden Sie ihn mit dem Ziel-Pin am Wiedergabe-Knoten.
- Ziehen Sie den Wiedergabe-Knoten ab und fügen Sie einen Dynamische Material-Instanz erstellen-Knoten hinzu.
- Setzen Sie am Dynamische Material-Instanz erstellen -Knoten das Parent-Dropdown auf Ihr SVT-Material.
- Klicken Sie auf dem Dynamische Material-Instanz erstellen -Knoten mit der rechten Maustaste auf den Ergebniswert-Pin und wählen Sie Beförderung zu Variable .
- Benennen Sie im My Blueprint-Panel unter Komponenten NewVar in „MID“ um.
- Ziehen Sie den Ergebniswert-Pin des MID einstellen-Knotens ab und fügen Sie einen Material (Würfel) einstellen-Knoten hinzu.
Dieser Teil der Blueprint-Logik sieht wie folgt aus:
Bild für Großansicht anklicken.
Befolgen Sie diese Schritte, um die Blueprint-Logik für die Wiedergabe jedes SVT-Frames einzurichten:
- Ziehen Sie im Mein Blueprint-Panel unter Komponenten eine Controller-Variable ins Diagramm und wählen Sie Controller abrufen.
- Ziehen Sie den Controller-Knoten ab und fügen Sie einen Aktualisieren-Knoten hinzu.
- Verbinden Sie den Event Tick-Ausführungs-Pin mit Aktualisieren.
- Verbinden Sie den Event Tick Delta Sekunden-Pin mit dem Delta Zeit-Pin des Aktualisieren-Knotens.
- Ziehen Sie den Aktualisieren-Knoten ab und fügen Sie einen Aktuellen Frame abrufen-Knoten hinzu.
- Ziehen Sie den Controller-Knoten ab und verbinden Sie ihn mit dem Ziel-Pin am Aktuellen Frame abrufen-Knoten.
- Ziehen Sie im Mein Blueprint-Panel unter Komponenten eine MID-Variable ins Diagramm und wählen Sie MID abrufen.
- Ziehen Sie den MID abrufen-Knoten ab und fügen Sie einen Spärliche Volumentextur Parameterwert einstellen -Knoten hinzu.
- Ziehen Sie den Ergebniswert-Pin des Aktuellen Frame abrufen-Knotens ab und verbinden Sie ihn mit dem Wert-Pin des Spärliche Volumentextur Parameterwert einstellen-Knotens .
- Setzen Sie bei Spärliche Volumentextur Parameterwert einstellen den Parametername auf den Namen des Spärliche Volumentextur Sample Parameter in Ihrem SVT-Material.
Dieser Teil der Blueprint-Logik sieht wie folgt aus:
Bild für Großansicht anklicken.
Wenn Sie Simulieren oder Play-in-Editor (PIE) ausführen, sollte die SVT ihre Animation in einer Schleife abspielen.
Animierte SVT verwendet mit volumetrischem Nebel.
Für ein optimales Ergebnis sollten Sie möglicherweise folgende Aspekte anpassen:
- Passen Sie in Ihrem Blueprint die Größe des Meshs an, um eine bessere Volumenauflösung bei der Verwendung von volumetrischem Nebel zu erhalten. Das obige Beispiel skaliert das Würfel-Mesh auf das 20-fache seiner ursprünglichen Größe.
- Verwenden Sie in Ihrem SVT-Material einen höheren Multiplikationswert für die letzte Multiplikation, bevor Sie in den Auslöschung -Input einspeisen. Das obige Beispiel verwendet 7,5 anstelle des ursprünglichen Wertes von 2,5.
Zusätzlich zu den obigen Beispielen können Sie auch Folgendes tun:
- Nutzen Sie andere verfügbare Funktionen des Controllers, um den Frame-Index oder die aktuelle Zeit direkt einzustellen.
- Die Wiedergabegeschwindigkeit wird durch Anpassung der Frame-Rate-Eigenschaft des Controllers konfiguriert. Die Standardeinstellung beträgt 24 fps.
- Alternativ zum Abrufen des aktuellen Frames können Sie die Funktion Aktuelle Frames für die Interpolation abrufen verwenden, um die zwei nächstgelegenen Frames und einen Wert zwischen 0 und 1 zur Interpolation zwischen ihnen zurückzugeben. Sie können diese Methode nutzen, um zwei SVT-Parameter zu erstellen, einen Skalar-Parameter für das Lerp-Alpha, und dann einen Interpolationsknoten im Material-Diagramm verwenden.
Verwendung einer animierten spärlichen Volumentextur
mit dem Sequencer
Mit dem in vorherigen Abschnitt erstellten animierten SVT-Blueprint können Sie die Wiedergabesteuerung für den Sequencer erweitern. Sie erstellen eine neue Variable, die als „Gegenüber Filmsequenzen freigeben“ festgelegt wird, und ersetzen Teile der Event-Tick-Logik. Dieser Workflow ähnelt der Steuerung von Skelett-Mesh-Anim-Blueprints mit dem Sequencer.
So erweitern Sie die Wiedergabe des animierten SVT-Blueprints für die Steuerung durch den Sequencer:
- Öffnen Sie Ihren animierten SVT-Blueprint.
- Ziehen Sie im Mein Blueprint-Panel unter Komponenten eine Controller-Variable ins Diagramm und wählen Sie „Controller abrufen“ aus der Liste.
- Ziehen Sie den Controller abrufen-Knoten ab und fügen Sie einen Dauer abrufen-Knoten hinzu.
- Verbinden Sie den Ausführungs-Pin des Event Tick-Knotens mit dem Dauer abrufen-Knoten.
- Ziehen Sie den Dauer abrufen-Knoten ab und fügen Sie einen Zeit einstellen-Knoten hinzu (in der Kategorie Animierter Spärliche Volumentextur-Controller).
- Verbinden Sie den Controller abrufen-Knoten mit dem Ziel-Pin des Zeit einstellen-Knotens .
- Ziehen Sie den Ergebniswert des Dauer abrufen-Knotens ab und fügen Sie einen Multiplizieren-Knoten hinzu.
- Ziehen Sie den Output-Pin des Multiplizieren-Knotens ab und verbinden Sie ihn mit dem Zeit-Input-Pin des Zeit einstellen-Knotens.
- Klicken Sie mit der rechten Maustaste in das Diagramm und fügen Sie einen Bruchteil-Knoten hinzu.
- Klicken Sie mit der rechten Maustaste auf den A-Input-Pin des Bruchteil-Knotens und wählen Sie Beförderung zu Variable. Benennen Sie die Variable „Animation Alpha“.
- Ziehen Sie den Zeit einstellen-Knoten ab und fügen Sie einen Aktuellen Frame abrufen-Knoten hinzu.
- Ziehen Sie den Controller-Knoten ab und verbinden Sie ihn mit dem Ziel-Pin am Aktuellen Frame abrufen-Knoten.
- Ziehen Sie im Mein Blueprint-Panel unter Komponenten eine MID-Variable ins Diagramm und wählen Sie „MID abrufen“.
- Ziehen Sie den MID abrufen-Knoten ab und fügen Sie einen Spärliche Volumentextur Parameterwert einstellen -Knoten hinzu.
- Ziehen Sie den Ergebniswert-Pin des Aktuellen Frame abrufen-Knotens ab und verbinden Sie ihn mit dem Wert-Pin des Spärliche Volumentextur Parameterwert einstellen-Knotens.
- Setzen Sie im Spärliche Volumentextur Parameterwert einstellen-Knoten den Parameternamen auf den Namen des Spärliche Volumentextur Sample Parameters, der in Ihrem SVT-Material verwendet wird.
- Wählen Sie im Mein Blueprint-Panel unter Komponenten die Variable AnimationAlpha aus. Aktivieren Sie im Details-Panel das Kontrollkästchen für „Gegenüber Filmsequenzen freigeben“.
- Kompilieren und Speichern Sie.
Ihre animierte SVT-Blueprint-Logik sollte für den Event-Tick-Pfad wie folgt aussehen:
Bild für Großansicht anklicken.
Wenn diese Logik eingerichtet ist und Sie einen Track zum Sequencer für den Animierten SVT-Blueprint hinzufügen, sollten Sie beim Klicken auf das Hinzufügen (+)-Symbol neben der Spur Ihre AnimationAlpha-Variable in der Liste sehen.
Nach dem Hinzufügen kann Ihre Variable im Sequencer-Panel mit Keyframes versehen werden.
Streaming Leistungshinweise
- Echtzeit-Wiedergabe von animierten SVTs
- Die Echtzeit-Wiedergabe von animierten SVTs hängt stark von ihrer Auflösung und der Datendichte des Volumens ab. Wenn das Laden der Daten zu lange dauert, fällt das Rendering auf gröbere Mip-Level zurück, was zu einem sichtbaren Qualitätsverlust führt. Sie können dies auf verschiedene Arten optimieren:
- Verwenden Sie ein kleineres Pixelformat beim Importieren einer VDB-Datei, was die Streaming-Performance verbessert. (32-Bit ist für Echtzeit-Anwendungen meist zu viel.)
- Reduzieren Sie die Animations-Framerate.
- Verwenden Sie ein niedrigeres Mip-Level.
- Bei Verwendung dieser Methode muss das Mip-Level im Animierten SVT-Controller oder in den Einstellungen der Heterogenes Volumen -Komponente festgelegt werden. Das Setzen des MipLevel-Input-Pins am Spärliche Volumentextur Sample-Knoten versucht, auf dem angegebenen Mip-Level zu sampeln (sofern dieses gestreamt wurde), aber das Streaming selbst wird von dort nicht gesteuert. Nützliche Konsolenvariablen zur Anpassung der Streaming-Performance
r.SparseVolumeTexture.Streaming.NumPrefetchFramesist die Anzahl der Frames, die vorab geladen werden, wenn ein bestimmter Frame vom Streaming-System angefordert wird. Der Standardwert von 3 Frames funktioniert in den meisten Fällen gut, kann aber je nach SVT variieren. Ein zu hoher Wert kann das Streaming-System mit Anfragen überlasten. Ein zu niedriger Wert könnte dazu führen, dass Frames zum Zeitpunkt des Renderings nicht vollständig gestreamt werden.r.SparseVolumeTexture.Streaming.PrefetchMipLevelBiaswendet einen Bias auf das Mip-Level der vorgeladenen Frames an. Das Vorladen erfolgt bei zunehmend höheren Mip-Levels (niedrigere Auflösung). Dieser Bias kann verwendet werden, um das Mip-Level zu ändern, auf dem die Frames vorgeladen werden. Negative Werte bewirken, dass Frames auf höher aufgelösten Mip-Levels vorgeladen werden, während positive Werte dazu führen, dass Frames auf niedriger aufgelösten Mip-Levels vorgeladen werden.r.SparseVolumeTexture.Streaming.PrintMemoryStatszeigt Speicherinformationen zu allen im Streaming-System registrierten SVTs an. Die Streaming-Performance beginnt in der Regel bei SVT-Frames größer als 30 - 50 Megabyte (MB) nachzulassen. Bei der Wiedergabe mit der Standard-Framerate von 24. Die Performance hängt weitgehend von der verwendeten Plattform und dem PC ab. Die Streaming-Performance hängt auch von der Anzahl der aktuell streamenden SVTs ab.
- Blockierende Wiedergabe
- Für bestimmte Anwendungsfälle (Offline-Produktionen) möchten Sie möglicherweise keine der oben beschriebenen Kompromisse eingehen. Um zu gewährleisten, dass alle Mips beim Rendern des aktuellen Frames gestreamt werden, unterstützt der Streamer blockierende Anfragen. Bei blockierenden Anfragen werden die IO-Anfragen zum Laden eines bestimmten Frames gestellt und sofort abgewartet, bis sie abgeschlossen sind. Blockierende Anfragen wirken sich wahrscheinlich auf die Framerate aus und verursachen ein „Überspringen“ von Frames, wenn die aktuelle Spielzeit zur Steuerung der Animationswiedergabe verwendet wird. Bei der Verwendung von Sequencer zum Rendern von Frames ist das Überspringen jedoch kein Problem mehr, da Sequencer genau festlegt, welcher SVT-Frame gerendert werden soll – unabhängig davon, ob zwischen dem Rendern des vorherigen und des aktuellen Frames fünf Minuten vergangen sind. Dies gilt nicht für den SVT-Viewer, da er hauptsächlich zum Debugging von SVT-Assets dient.
- Stochastische Mip-Filterung
- Diese Funktion bietet ähnliche Optimierungen wie virtuelle Texturen, bei denen die zwei nächstgelegenen Mip-Levels stochastisch gesampelt werden. Dies halbiert effektiv die Anzahl der Textur-Samples und verbessert die Performance. Nehmen Sie als Beispiel die folgende Szene mit fünf „Luftexplosion“-Instanzen, die 2 GB/s IO-Bandbreite streamen. Diese Szene würde ohne den Bandbreitenbegrenzer und ohne Skalierung entsprechend der projizierten Bildschirmgröße etwa 25 GB/s benötigen.

Einschränkungen
- Die Seitentabelle-Textur ist auf eine Größe von 2 Gigabyte (GB) begrenzt, und die maximale virtuelle SVT-Auflösung darf 32.000 Einheiten in X- und Y-Richtung nicht überschreiten. Die Z-Achse ist auf 16.000 begrenzt.
- Sie könnten beispielsweise ein Volumen von 32.000 x 100 x 100 Einheiten, ein Volumen von 100 x 32.000 x 100 Einheiten oder ein Volumen von 100 x 100 x 16.000 Einheiten erstellen. 100 ist in diesem Beispiel ein ausreichend niedriger Wert, der die Seitentabelle unter dem 2-GB-Limit hält.
- Die Echtzeit-Wiedergabe von animierten SVTs hängt stark von ihrer Auflösung und der Datendichte des Volumens ab. Wenn das Laden der Daten zu lange dauert, fällt das Rendering auf gröbere Mip-Level zurück, was zu einem sichtbaren Qualitätsverlust führt. Sie können dies umgehen, indem Sie die Animations-Framerate reduzieren oder eine niedrigere Mip-Level-Auflösung verwenden. Die Streaming-Performance kann auch verbessert werden, indem Sie beim Importieren der VDB-Datei ein kleineres Pixelformat wählen.
- Unterstützte Plattformen:
- Derzeit unterstützt unter Windows mit DX11, DX12 unter Verwendung von Shader Model 5 (SM5) und Shader Model 6 (SM6).
- VDB-Import funktioniert derzeit nur in Windows-Editor-Builds. Kompilierte Builds unterstützen SVTs auf allen Plattformen, die die erforderliche Leistung für das Streaming und Rendering bereitstellen können.
- SVTs funktionieren nicht mit dem Mobile Renderer.
Zusätzliche Ressourcen
- Die in den Beispielen auf dieser Seite verwendeten VDB-Dateien stammen aus dem kostenlosen VDB-Set von JangaFX, erstellt mit EmberGen.
- Sie können die kostenlosen Beispiele hier herunterladen.





