Una textura de volumen disperso (SVT) es una textura que almacena téxeles (vóxeles) en una estructura de datos 3D. Puedes indexar los datos de SVT con coordenadas de UV tridimensionales, similares a las texturas 3D y de volumen. A diferencia de las texturas de volumen estándar (densas), las SVT solo invierten memoria en las regiones del volumen con datos "interesantes" (aquellas en las que están presentes los datos de vóxeles), lo que permite que volúmenes mucho mayores, o incluso de igual tamaño, utilicen menos memoria en comparación con la densidad de las textura de volumen estándar.
Tipos de texturas de volumen disperso
Puedes utilizar volúmenes estáticos o animados para representar texturas de volumen disperso. Una SVT estática es un volumen único, mientras que una SVT animada es una secuencia de volúmenes (o fotogramas) reproducible, similar a una animación de flipbook.
A la izquierda, textura de volumen disperso único estática; a la derecha, textura de volumen disperso animada.
Estas SVT se renderizan mediante los actores de volumen heterogéneo. Para obtener más información sobre su uso, consulta Volúmenes heterogéneos.
Composición de texturas de volumen disperso
Las texturas de volumen disperso se componen de varias texturas. Entre ellas se incluye una textura de tabla de páginas que sirve de indirección a las texturas de datos de teselas físicas que componen el volumen. Estas texturas de datos de teselas almacenan los datos de texturas para el volumen y pueden utilizar hasta dos texturas para almacenar los datos y atributos del volumen, almacenados como atributo A y B.
Los atributos A y B utilizan cada uno los canales de textura RGBA para almacenar datos, lo que te da hasta ocho canales para almacenar datos. Los datos se recuperan mediante búsquedas de texturas: una búsqueda para la tabla de páginas y una búsqueda para los datos de teselas físicas, con un total de dos o tres búsquedas según la SVT. Esto significa que las SVT comparten una única búsqueda en la tabla de páginas para ambas texturas de datos de teselas físicas en lugar de tener una relación directa de la tabla de páginas con la textura de datos de teselas.
Las dos texturas de datos de teselas de las SVT (atributo A y B) pueden tener diferentes formatos de píxel: 16 bits, 32 bits y 8 bits (unorm). Si no utilizas uno de los canales de textura RGBA en uno de la lista de atributos, se intenta utilizar un formato de píxel con menos canales. Si no utilizas ningún canal, la textura no cuesta nada de memoria.
| Formato de textura | Textura | Representación en Unreal Engine |
|---|---|---|
| Tabla de páginas | ![]() |
![]() |
| Teselas físicas en 3D | ![]() |
![]() |
Formas de visualizar las texturas de volumen disperso
Puedes trabajar con texturas de volumen disperso de las siguientes formas:
- Materiales de dominio volumétrico
- Actor de volumen heterogéneo
- Niebla volumétrica
- Nubes volumétricas
- Visor de texturas de volumen disperso
Actor y componente de volumen heterogéneo
Los volúmenes heterogéneos son actores colocables que aprovechan las SVT al incorporar un nodo de material de textura de volumen disperso en sus materiales de dominio volumétrico. Este actor-tipo renderiza las SVT y su atributo con lógica configurada en su material. El actor de volumen heterogéneo también puede reproducir y reproducir en bucle as SVT animadas sin necesidad de configuración adicional.
El renderizado de volúmenes heterogéneos está limitada en parte por las características del renderizado diferido para tiempo real. Sin embargo, Path Tracer ofrece una compatibilidad más completa para los volúmenes de renderizado, como la simulación precisa de dispersión, sombras e iluminación global.
Ejemplo de material SVT renderizado con un actor de volumen heterogéneo.
Para obtener más información y detalles sobre su uso y configuración, consulta Volúmenes heterogéneos.
Niebla volumétrica
Las SVT admiten niebla volumétrica, una función de la niebla de altura exponencial, cuando su material de dominio volumétrico se aplica a una malla. Las SVT pueden tener una mayor cantidad de detalles que la resolución de la niebla volumétrica, por lo que es posible ver discrepancias al utilizar este método sobre un volumen heterogéneo.
A la izquierda, un actor de volumen heterogéneo que muestra una SVT; a la derecha, un material SVT aplicado a una malla y renderizado con niebla volumétrica.
Para configurar la niebla volumétrica con un material SVT, consulta la sección Cómo visualizar texturas de volumen disperso con niebla volumétrica de esta página.
Nubes volumétricas
Las SVT admiten nubes volumétricas automáticamente cuando su material de dominio volumétrico se aplica a un actor de volumen heterogéneo.
Visor de texturas de volumen disperso
El visor de texturas de volumen disperso es más útil como previsualizador y no está optimizado ni es ideal para usarlo con el resto de la escena. En su lugar, lo mejor que puedes hacer es crear un material que muestre correctamente la SVT y aplicarlo a un volumen heterogéneo o utilizar uno de los métodos mencionados en la sección Formas de visualizar las texturas de volumen disperso.
El Visor de texturas de volumen disperso proporciona una forma de previsualizar un recurso SVT directamente sin tener que configurar un material. Con el visor, puedes previsualizar canales de textura de atributo individuales de la SVT y reproducir su animación, si la hay. Esto convierte al visor en la opción ideal para depurar rápidamente los recursos SVT sin tener que configurarlos.
Para utilizar el visor de SVT, sigue estos pasos:
- Arrastra y suelta un visor de texturas de volumen disperso a la escena desde el panel Colocar actores.
- En el panel Detalles, asigna un recurso SVT a la ranura de asignación Vista previa de la textura de volumen disperso.
La SVT se muestra en el visor.
Ajusta el valor de la propiedad Extinción para ajustar la visibilidad del volumen al establecer cuánta luz absorbe.
Para las SVT con más de un fotograma, utiliza las casillas de verificación En reproducción y En bucle para reproducir un bucle de los fotogramas de SVT. La propiedad Tasa de fotogramas especifica cuántos fotogramas por segundo (fps) debe reproducir. El previsualizador está ajustado a 24 fps de forma predeterminada. Si no se marca la propiedad Animar, puedes utilizar el valor de la propiedad Fotograma para avanzar por los fotogramas en la SVT.
A la izquierda, vista previa de SVT sin animación; a la derecha, vista previa de SVT con un bucle de los fotogramas animados.
El visor de SVT solo muestra un único canal de textura cada vez. Sirve para inspeccionar canales individuales de un recurso SVT y funciona más o menos bien en función de los datos que se almacenen en la textura del volumen. Cualquier dato de velocidad importado se muestra como densidad y devolverá un resultado no deseado.
Utiliza el cuadro de selección Vista previa de atributo para elegir el canal de atributos que quieres previsualizar. El primer canal Atributo A rojo se utiliza de forma predeterminada.
El visor de texturas de volumen disperso tiene las siguientes propiedades:
| Propiedades | Descripción |
|---|---|
| Vista previa de recursos | |
| Vista previa de textura de volumen disperso | El recurso SVT que se utilizará con el previsualizador. |
| Solicitudes de bloqueo de transmisión | Informa al administrador de transmisión de SVT para que bloquee (espere) todas las solicitudes de transmisión inmediatamente después de emitirlas. Para obtener más información sobre cómo utilizar esta propiedad de forma eficaz, consulta la sección Notas sobre el rendimiento de transmisión. |
| Aplicar transformaciones por fotograma | Aplica la transformación adjunta a un fotograma de textura de volumen disperso determinado. Esta transformación es relativa a la del componente del visor de texturas de volumen disperso. |
| Punto de traslación en centroide | Mueve el punto de traslación al centro del volumen. Ten en cuenta que las transformaciones se crearon con el punto de traslación en el origen, que suele ser una de las esquinas del volumen, según cómo se haya creado. Forzar el punto de traslación hacia el centro del volumen puede romper las transformaciones. |
| Tamaño de vóxeles | Escala uniforme que aplicar a todos los vóxeles. Esta es una forma rápida de escalar de todo el volumen para depurar problemas relacionados con el escalado. |
| Vista previa de atributos | Elige qué atributo se está previsualizando. Solo se puede previsualizar uno a la vez, aunque haya varios en una única SVT. Si el canal alfa del atributo A o B se establece en Ninguno, puede que veas elementos visuales en bloques negros al previsualizarlos en el visor. Esto se debe a que la GPU suele devolver 0 para los canales de textura inexistentes, excepto con el canal alfa, que devuelve 1 de forma predeterminada. Esto no debería suponer un problema si se deja definido en Ninguno, ya que el canal está sin definir. |
| Nivel de MIP | Establece a qué nivel de MIP se debe visualizar la SVT. |
| Extinción | Establece lo opaco que es el volumen. La extinción es la suma de la absorción (rayos de luz que inciden en partículas y se absorben) y la dispersión (rayos de luz que inciden en partículas y se dispersan/desvían en una dirección diferente que ya no llega a la cámara). Un valor mayor aparece más opaco que un valor menor. |
| Animación | |
| Fotograma | Introduce un valor o arrastra el control deslizante para avanzar por los fotogramas de la SVT animada. Esta propiedad se puede editar si En reproducción se ha deshabilitado. |
| Tasa de fotogramas | Especifica la tasa de fotogramas que debe reproducir esta animación de SVT. Por ejemplo, 24, 30, 48, 60. Esta propiedad se puede editar si En reproducción se ha habilitado. |
| En reproducción | Habilita/deshabilita si el previsualizador reproduce en bucle los fotogramas del recurso SVT cuando hay varios presentes. |
| En bucle | Reproduce la animación en bucle si En reproducción se ha habilitado. |
| Reproducción inversa | Reproduce los fotogramas de una SVT animada hacia atrás si En reproducción se ha habilitado. |
Cómo trabajar con texturas de volumen disperso
Puedes importar texturas de volumen disperso desde archivos VDB (o base de datos de vóxeles). Este formato se utiliza ampliamente para almacenar datos de volúmenes dispersos. Los datos de la VDB se convierten en una representación del volumen disperso si se importan a Unreal Engine.
Los archivos VDB contienen las denominadas «cuadrículas», otro nombre que dar a los volúmenes. Estas cuadrículas pueden tener diferentes tipos de componentes, como densidad, velocidad y temperatura. Las SVT admiten la importación de cuadrículas con el siguiente tipo: float (float, float2, float3, float4), double (double, double2, double3, double4) y half (half, half2, half3, half4). La resolución de SVT resultante es la unión de las dimensiones de todas las cuadrículas importadas.
Si bien Unreal Engine admite la importación de VDB de todo tipo, las SVT no admiten el formato double actualmente. Los datos se convierten a 8/16/32 bits al importarlos.
Cada cuadrícula también puede tener su propia transformación. El formato VDB permite una amplia gama de tipos de transformación, como las transiciones de campo de visión/perspectiva. Actualmente, Unreal Engine admite transformaciones con escalado, rotación y traslación. Estas transformaciones pueden variar según el fotograma, por lo que la SVT importada se puede escalar/rotar/trasladar a lo largo de su cronograma de animación.
Aunque las transformaciones pueden variar según el fotograma, se espera que todas las transformaciones de todas las cuadrículas que se utilicen en un único fotograma determinado sean idénticas.
Cómo importar archivos VDB
Puedes realizar una de las siguientes acciones para importar un archivo VDB:
- Arrastra y suelta la VDB directamente en el explorador de contenido.
- Utiliza el botón Importar en el explorador de contenido.
Las VDB tienen su propia ventana de importación para importar archivos VDB estáticos y animados.
Al importar un archivo VDB animado que contiene el mismo nombre excepto el fotograma numerado, puedes importar cualquiera de los archivos de la secuencia animada, y el importador lo reconocerá como perteneciente a una secuencia de las VDB. Si seleccionaras todos los archivos de una secuencia VDB animada e importaras todo a la vez, cada archivo crearía su propia secuencia, por lo que se crearían varias SVT animadas idénticas.
![]() |
![]() |
|---|---|
| Opciones para importar SVT: VDB de fotograma único estático | Opciones para importar SVT: secuencia animada de VDB |
Las opciones de importación incluyen la siguiente información y configuración:
| Propiedades | Descripción |
|---|---|
| Importar estática/animada | Muestra el tipo de VDB que se está importando, estática o animada. |
| Recurso actual | La ruta del archivo de la VDB que se está importando. |
| Importar secuencia | Importa varios archivos VDB etiquetados secuencialmente como una sola secuencia de textura de volumen disperso animada. Las SVT animadas se crean al importar un archivo fuente que forma parte de un archivo VDB de secuencias numerado secuencialmente (file0.vdb, file1.vdb, file2.vdb, etc.). El importador detecta automáticamente si un archivo forma parte de una secuencia y marca la casilla de verificación Importar secuencia. |
| Atributos A | Permite al usuario asignar canales individuales de las cuadrículas fuente a los canales (RGBA) de la SVT resultante. Cada atributo representa las texturas de datos de teselas que lee la textura de tabla de páginas. El desplegable de formatos situado junto a esta propiedad selecciona qué tipo de formato debe utilizar cada textura de datos de tesela, como float de 16 bits, float de 32 bits y unorm de 8 bits. El unorm de 8 bits se utiliza para datos o atributos en el intervalo de 0 a 1. |
| Atributos B | Muestra la cuadrícula presente en el archivo fuente y permite al usuario asignar canales individuales de la cuadrícula fuente a los canales (RGBA) de la SVT resultante. Cada atributo representa las texturas de datos de teselas que lee la textura de tabla de páginas. El desplegable de formatos situado junto a esta propiedad selecciona qué tipo de formato debe utilizar cada textura de datos de tesela, como float de 16 bits, float de 32 bits y unorm de 8 bits. El unorm de 8 bits se utiliza para datos o atributos en el intervalo de 0 a 1. |
| Información de cuadrículas de archivo fuente | Muestra información sobre las cuadrículas del archivo VDB que se va a importar, como el índice asociado con nombres, el tipo y las dimensiones. |
La cantidad de tiempo que se tarda en importar y crear una textura de volumen disperso depende de las dimensiones y el número de fotogramas del archivo VDB fuente.
Se crea un recurso de textura de volumen disperso durante el proceso de importación. Al abrir el archivo, aparece información sobre él, como la resolución de su volumen, el número de niveles de MIP, el número de fotogramas y más.
Cambiar el método de teselado o direccionamiento del muestreador puede llevar algún tiempo porque tiene que volver a generar los datos de textura de volumen disperso en tiempo de ejecución.
Cómo utilizar texturas de volumen disperso en materiales
Los materiales pueden muestrear texturas de volumen disperso con los nodos Sparse Volume Texture Object y Sparse Volume Texture Sample.
Puedes usar texturas de volumen disperso con volúmenes heterogéneos, niebla volumétrica y nubes volumétricas. Sus materiales se configuran de forma similar al ajustar su dominio del material en Volumen y su modo de mezcla en Aditivo.
El nodo Sparse Volume Texture Sample toma algunas coordenadas de UV (deben ser tridimensionales) y recupera los datos resultantes de los pines de salida de los atributos A y los atributos B, ambos float4. Puedes utilizar texturas de volumen disperso como parámetros en un grafo de material y puedes muestrearlas en cualquier tipo de material. Sin embargo, para lo que son más útiles es para utilizarlas en materiales cuyo dominio del material esté ajustado en Volumen, como los materiales con volúmenes heterogéneos, niebla volumétrica y nubes volumétricas.
A continuación se muestra un ejemplo de material de volumen que muestrea una textura de volumen disperso. Calcula las coordenadas UV 3D a partir de la posición en el espacio del mundo: esta lógica no es específica de las texturas de volumen disperso y es opcional. Si el pin de entrada de UV se deja sin asignar, los UV se calculan automáticamente con la misma lógica que se muestra en la imagen que aparece a continuación. El nodo de muestreo de textura de volumen disperso tiene dos salidas Float4 (atributo A y atributo B), pero en este ejemplo solo se utiliza el primer canal porque contiene la densidad de la textura de volumen disperso que se está usando.
Este es un ejemplo de la configuración más sencilla que puedes tener para muestrear una textura de volumen disperso en un material.
Coordenadas de UV de textura de volumen disperso
Las texturas de volumen disperso se muestrean con coordenadas de UV tridimensionales. Al igual que las texturas 2D estándar, el espacio de UV se extiende de 0 a 1 en las tres dimensiones (XYZ). El espacio de UV abarca la propiedad de resolución de volumen que puedes inspeccionar al abrir un recurso de textura de volumen disperso.
El espacio de UV se define como la unión de las cajas delimitadoras de los fotogramas individuales. Como consecuencia, no es necesario tener en cuenta el tamaño de la caja delimitadora al configurar cualquier lógica de material, pues las mismas coordenadas de UV utilizadas en diferentes fotogramas se indexarán en el mismo vóxel del espacio del mundo.
Además, puedes utilizar el nodo Texture Property para consultar el tamaño de textura y el tamaño de téxel como harías con una textura 2D. También puedes consultar el volumen de la textura de volumen disperso desde un blueprint.
Valores de MIP del nodo Sparse Volume Texture
Los nodos Sparse Volume Textures Sample admiten valores de MIP de forma similar a como los gestionan otros nodos de muestreo de texturas.
Ejemplo de material de volumen disperso fuente del motor
Unreal Engine incluye un material de textura de volumen disperso de muestreo vacío ya configurado para que le apliques tu recurso de textura de volumen disperso. Puedes encontrarlo en el explorador de contenido en Motor > Materiales del motor denominado SparseVolumeMaterial. Haz una copia de este material y crea una instancia de él.
Una vez que abras la instancia de material, anula el parámetro SparseVolumeTexture y aplica tu propio recurso de textura de volumen disperso importado a la ranura de asignación.
Cómo visualizar texturas de volumen disperso con volúmenes heterogéneos
Para utilizar texturas de volumen disperso con volúmenes heterogéneos, sigue estos pasos:
- Añade un actor Volumen heterogéneo a la escena.
- En el panel Detalles, ve a la sección Materiales.
- Asigna un material basado en textura de volumen disperso a la ranura Elemento cero.
Para obtener más información sobre el uso de volúmenes heterogéneos y sus propiedades, consulta Volúmenes heterogéneos.
Cómo visualizar texturas de volumen disperso con niebla volumétrica
Para utilizar texturas de volumen disperso con niebla volumétrica, sigue estos pasos:
- Añade una Niebla de altura exponencial a la escena.
- En el panel Detalles, habilita Niebla volumétrica.
-
Aplica un material SVT a una malla.
Si necesitas una malla, puedes utilizar la forma Cubo en el panel Colocar actores de la categoría Forma.
Como las texturas de volumen disperso pueden ser más detalladas que la resolución de la niebla volumétrica, es posible que debas ampliar la malla para obtener mejores resultados. Además, puede que quieras utilizar estas variables de consola para aumentar la resolución de la niebla volumétrica:
r.VolumetricFog.GridPixelSize 4(de forma predeterminada es 8)r.VolumetricFog.GridSizeZ 256(de forma predeterminada es 128)
Cómo reproducir texturas de volumen disperso animadas
Para reproducir texturas de volumen disperso animadas, hay que usar dinámicas de instancia de material (MID) con Blueprint. Las animaciones de textura de volumen disperso se controlan a través del nodo Sparse Volume Texture Parameter en su material. Esto permite cambiar el parámetro de textura de volumen disperso con cada tic, y la idea es que cada fotograma de una textura de volumen disperso animada sea una textura de volumen disperso estática.
Para configurar la lógica de animación de una textura de volumen disperso se deben tener en cuenta dos partes:
- Event BeginPlay construye un controlador de textura de volumen disperso animada, que es una clase con la función de reproducir una textura de volumen disperso animada. Para facilitar esto, puede extraer fotogramas de la textura de volumen disperso asignada. El fotograma extraído también implementa la interfaz de sombreador de textura de volumen disperso, y puede estar vinculado a parámetros de material de textura de volumen disperso. Se necesita una MID para actualizar el parámetro de la textura de volumen disperso.
- Event Tick llama a una actualización de la variable de controlador, que obtiene el fotograma actual y lo aplica al nodo Sparse Volume Texture Parameter en la dinámica de instancia de material.
El ejemplo incluido a continuación muestra cómo configurar un material de textura de volumen disperso, aplicarlo a una malla y renderizarlo con niebla volumétrica. Este es solo un ejemplo de proceso de trabajo. Si deseas usar nubes volumétricas o cualquier otro caso de uso en el que puedas querer utilizar texturas de volumen disperso animadas, tendrías que asignar la MID a cualquier actor o componente empleado para renderizar el material. Por ejemplo, con un material de nube, actualizarías el material de nube del componente de nube volumétrica.
Los volúmenes heterogéneos son una excepción, ya que su componente ya implementa toda esta lógica, solo necesitas crear el material con un parámetro SVT y asignarle el SVT animado. El componente de volumen heterogéneo crea automáticamente una MID en segundo plano para actualizar el parámetro SVT.
Si quieres configurar la lógica de Blueprint para la construcción de la dinámica de instancia de material para usarla con niebla volumétrica, sigue estos pasos:
- En tu material de textura de volumen disperso, utiliza un nodo Sparse Volume Texture Sample Parameter en el grafo.
- Crea un blueprint de actor.
- En el panel Componentes, haz clic en el botón Añadir (+) y selecciona una malla Cubo en la lista.
- En el grafo de eventos, arrastra el nodo Event BeginPlay y añade un nodo *Construct Object from Class.
- En Construct Object from Class, ajusta la clase en Controlador de textura de volumen disperso animada.
- En el nodo Construct Object from Class, haz clic con el botón derecho en Valor de retorno y selecciona Ascender a variable.
- En el panel Mi blueprint, en Componentes, cambia el nombre de NewVar a «Controlador».
- Arrastra el nodo Set Controller y añade un nodo Set Sparse Volume Texture.
- Conecta el pin de salida del nodo Set Controller a la entrada Objetivo del nodo Set Sparse Volume Texture.
- En el nodo Set Sparse Volume Texture, haz clic con el botón derecho en el pin Textura de volumen disperso y selecciona Ascender a variable.
-
En el panel Mi blueprint, en Componentes, haz clic en la variable Textura de volumen disperso. En el panel Detalles, en Valor predeterminado, configura una Textura de volumen disperso.
Dejar vacía la ranura Textura de volumen disperso hace que el material de textura de volumen disperso no se actualice y reproduzca su animación.
-
Arrastra el nodo Set Sparse Volume Texture y añade un nodo Play.
El nodo Play hace que el controlador actualice un cronómetro interno cada vez que llamas a Update() en el controlador. Este cronómetro define qué fotograma se considera «actual» al extraer el fotograma actual. También están los nodos Pause y Stop, que pueden controlar la reproducción de la textura de volumen disperso.
- En el nodo Set Controller, arrastra el pin de salida del controlador y conéctalo al pin Objetivo en el nodo Play.
- Arrastra el nodo Play y añade un nodo Create Dynamic Material Instance.
- En el nodo Create Dynamic Material Instance, en el menú desplegable Raíz, selecciona tu Material de textura de volumen disperso.
- En el nodo Create Dynamic Material Instance, haz clic con el botón derecho en el pin Valor de retorno y selecciona Ascender a variable.
- En el panel Mi blueprint, en Componentes, cambia el nombre de NewVar a «MID».
- Arrastra el nodo Set MID al pin de valor de retorno y añade un nodo Set Material (Cube).
Esta parte de la lógica de Blueprint tiene el siguiente aspecto:
Haz clic en la imagen para verla a tamaño completo.
Para configurar la lógica de Blueprint de modo que reproduzca cada fotograma de la textura de volumen disperso, sigue estos pasos:
- En el panel Mi blueprint, en Componentes, arrastra una variable Controlador al grafo y selecciona Obtener controlador.
- Arrastra el nodo Controller y añade un nodo Update.
- Conecta el pin de ejecución Event Tick a Actualizar.
- Conecta el pin Delta Seconds de Event Tick al pin Delta Time del nodo Update.
- Arrastra el nodo Update y añade un nodo Get Current Frame.
- Arrastra el nodo Controller y conéctalo al pin Objetivo del nodo Get Current Frame.
- En el panel Mi blueprint, en Componentes, arrastra una variable MID al grafo y selecciona Obtener MID.
- Arrastra el nodo Get MID y añade un nodo Set Sparse Volume Texture Parameter Value.
- Arrastra el pin Valor de retorno del nodo Get Current Frame y conéctalo al pin Valor del nodo Set Sparse Volume Texture Parameter Value.
- En Set Sparse Volume Texture Parameter Value, configura el nombre de parámetro con el nombre del parámetro de muestreo de textura de volumen disperso en tu material de textura de volumen disperso.
Esta parte de la lógica de Blueprint tiene el siguiente aspecto:
Haz clic en la imagen para verla a tamaño completo.
Si seleccionas Simular o Reproducir en editor (PIE), la textura de volumen disperso debe reproducir su animación en bucle.
Textura de volumen disperso animada utilizada con niebla volumétrica.
Para obtener un buen resultado, es posible que tengas que ajustar algunas cosas:
- En tu blueprint, ajusta el tamaño de la malla para mejorar la resolución de volumen al usar niebla volumétrica. El ejemplo anterior multiplica por 20 el tamaño original de la malla de cubo.
- En tu material de textura de volumen disperso, utiliza un multiplicador mayor para la última multiplicación antes de la conexión a la entrada Extinción. El ejemplo anterior utiliza 7.5 en lugar del valor original, 2.5.
Además de lo indicado en los ejemplos anteriores, también puedes hacer lo siguiente:
- Utiliza otras funciones disponibles en el controlador para configurar la hora actual o el índice de fotograma directamente.
- La velocidad de reproducción se configura mediante la configuración de la tasa de fotogramas del controlador. El valor predeterminado es 24 fps.
- En lugar de obtener solo el fotograma actual, puedes utilizar la función Obtener fotogramas actuales para interpolación para devolver los dos fotogramas más cercanos y un valor entre 0 y 1 para realizar la interpolación entre ellos. Puedes utilizar este método para crear dos parámetros de textura de volumen disperso, un parámetro escalar para el valor alfa de la interpolación lineal y, a continuación, usar un nodo Interpolation en el grafo de material.
Cómo utilizar una textura de volumen disperso animada con Sequencer
Puedes extender el blueprint de textura de volumen disperso animada creado en la sección anterior para que la reproducción se controle desde Sequencer. Crearás una nueva variable configurada como Exponer a cinemática y sustituirás partes de la lógica de Event Tick. Este proceso de trabajo es similar al control de blueprints de animación de malla esquelética con Sequencer.
Para extender el blueprint de textura de volumen disperso animada con el objetivo de que la reproducción se controle con Sequencer:
- Abre tu blueprint de textura de volumen disperso animada.
- En el panel Mi blueprint, en Componentes, arrastra una variable de controlador, colócala en el grafo y selecciona Obtener controlador en la lista.
- Arrastra el nodo Get Controller y añade un nodo Get Duration.
- Conecta el pin de ejecución del nodo Event Tick al nodo Get Duration.
- Arrastra el nodo Get Duration y añade un nodo Set Time (en la categoría Controlador de textura de volumen disperso animada).
- Conecta el nodo Get Controller al pin Objetivo del nodo Set Time.
- Arrastra el valor de retorno del nodo Get Duration y añade un nodo Multiply.
- Arrastra el pin de salida de Multiply y conéctalo al pin de entrada Hora del nodo Set Time.
- Haz clic con el botón derecho en el grafo y añade un nodo Fraction.
- Haz clic con el botón derecho en el pin de entrada A del nodo Fraction y selecciona Ascender a variable. Asigna a la variable el nombre «Alfa de animación».
- Arrastra el nodo Set Time y añade un nodo Get Current Frame.
- Arrastra el nodo Controller y conéctalo al pin Objetivo del nodo Get Current Frame.
- En el panel Mi blueprint, en Componentes, arrastra una variable MID al grafo y selecciona Obtener MID.
- Arrastra el nodo Get MID y añade un nodo Set Sparse Volume Texture Parameter Value.
- Arrastra el pin Valor de retorno del nodo Get Current Frame y conéctalo al pin Valor del nodo Set Sparse Texture Parameter Value.
- En el nodo Set Sparse Volume Texture Parameter Value, ajusta el nombre de parámetro en el nombre del parámetro de muestreo de textura de volumen disperso utilizado en tu material de textura de volumen disperso.
- En el panel Mi blueprint, en Componentes, selecciona la variable AnimationAlpha. En el panel Detalles, marca la casilla Exponer a cinemática.
- Ejecuta la compilación y guarda los cambios.
La lógica del blueprint de textura de volumen disperso animada debe tener este aspecto para la ruta de Event Tick:
Haz clic en la imagen para verla a tamaño completo.
Con esta configuración de lógica, cuando añadas una pista a Sequencer para el blueprint de textura de volumen disperso animada, si haces clic en el icono de Añadir (+) junto a la pista, debes ver tu variable AnimationAlpha en la lista.
Una vez añadida tu variable, puede codificarse en el panel Sequencer.
Notas sobre el rendimiento de la transmisión
- Reproducción en tiempo real de texturas de volumen disperso animadas
- La reproducción en tiempo real de texturas de volumen disperso animadas depende mucho de su resolución y de la dispersión de los datos de volumen. Si los datos tardan demasiado en transmitirse, la renderización vuelve a niveles de MIP más toscos y causa una reducción visible de la fidelidad. Puedes paliar esto de dos maneras:
- Utiliza un formato de píxel menor al importar una VDB, lo que, a su vez, mejora el rendimiento de la transmisión. (La opción de 32 bits suele ser excesiva para casos de uso en tiempo real).
- Reduce la tasa de fotogramas de animación.
- Utiliza un nivel de MIP de menor resolución.
- Si utilizas este método, el nivel de MIP debe configurarse en los ajustes del componente Volumen heterogéneo o Controlador de textura de volumen disperso animada. Al configurar el pin de entrada MipLevel en el nodo Sparse Volume Texture Sample, se intenta realizar el muestreo en el nivel de MIP dado (siempre que se haya transmitido), pero la transmisión no se controla desde allí. Variables de consola útiles para ajustar el rendimiento de transmisión
r.SparseVolumeTexture.Streaming.NumPrefetchFrameses el número de fotogramas que deben precargarse cuando se solicita un fotograma dado en el sistema de transmisión. El valor predeterminado es 3 fotogramas, ya que funciona bien en la mayoría de los casos, pero el valor puede depender de la textura de volumen disperso. Ajustar un valor demasiado alto puede asfixiar con solicitudes el sistema de transmisión. Ajustar un valor demasiado bajo puede provocar que los fotogramas no se hayan transmitido completamente cuando se necesiten para la renderización.r.SparseVolumeTexture.Streaming.PrefetchMipLevelBiasaplica un sesgo al nivel de MIP de los fotogramas precargados. La precarga se realiza a niveles de MIP cada vez más altos (menor resolución). Este sesgo puede utilizarse para cambiar el nivel de MIP al que se precargan los fotogramas. Los valores negativos hacen que los fotogramas se precarguen a niveles de MIP de mayor resolución, mientras que los valores positivos hacen que los fotogramas se precarguen a niveles de MIP de menor resolución.r.SparseVolumeTexture.Streaming.PrintMemoryStatsimprime información de memoria sobre todas las texturas de volumen disperso registradas con el sistema de transmisión. El rendimiento de transmisión suele empezar a descender con fotogramas de textura de volumen disperso de más de 30-50 megabytes (MB). Esto sucede al intentar la reproducción con la tasa de fotogramas predeterminada de 24. El rendimiento depende en gran medida de la plataforma y el PC que se utilicen. El rendimiento de transmisión también depende del número de texturas de volumen disperso que se estén transmitiendo.
- Bloqueo de la reproducción
- Para determinados casos de uso (producciones sin conexión), es posible que no quieras arreglos como los descritos. Para garantizar que todos los niveles de MIP se transmitan cuando renderices el fotograma actual, el transmisor admite solicitudes de bloqueo. Con las solicitudes de bloqueo, las solicitudes de E/S de carga de un fotograma dado se emiten y atienden inmediatamente hasta que se completan. Es probable que las solicitudes de bloqueo afecten a la tasa de fotogramas y provoquen «omisión» de fotogramas cuando se utilice la hora actual del juego para controlar la reproducción de la animación. Sin embargo, cuando se utiliza Sequencer para renderizar fotogramas, el problema de omisión desaparece porque Sequencer especifica qué fotograma de la textura de volumen disperso se debe renderizar, sin importar si han pasado cinco minutos de tiempo real entre la renderización del fotograma anterior y el actual. Esto no se aplica al visor de textura de volumen disperso porque es principalmente una forma de depurar recursos de textura de volumen disperso.
- Filtrado de MIP estocástico
- Esto presenta optimizaciones similares a las de las texturas virtuales, en las que los dos niveles de MIP más cercanos se muestrean estocásticamente. Así se reduce a la mitad eficazmente el número de muestreos de textura, lo que aumenta el rendimiento. Toma como ejemplo la escena que aparece a continuación, con cinco instancias de «explosión aérea» que transmiten a 2 GB/s de ancho de banda de E/S. Esta escena necesitaría aproximadamente 25 GB/s sin el limitador de ancho de banda y sin cambiar la escala según el tamaño de espacio en pantalla proyectado.

Limitaciones
- La textura de tabla de páginas está limitada a dos gigabytes (GB) de tamaño, y la resolución de textura de volumen disperso virtual máxima no debe superar 32 000 unidades en las extensiones X e Y. El eje Z está limitado a 16 000.
- Por ejemplo, puedes hacer un volumen de unidad de 32 000 x 100 x 100, un volumen de unidad de 100 x 32 000 x 100 o un volumen de unidad de 100 x 100 x 16 000. 100 en este ejemplo es un valor suficientemente bajo para mantener la tabla de páginas por debajo del límite de 2 GB.
- La reproducción en tiempo real de texturas de volumen disperso animadas depende mucho de su resolución y de la dispersión de los datos de volumen. Si los datos tardan demasiado en transmitirse, la renderización vuelve a niveles de MIP más toscos y causa una reducción visible de la fidelidad. Para paliarlo, reduce la tasa de fotogramas de la animación o utiliza un nivel de MIP de menor resolución. El rendimiento de la transmisión también puede mejorarse si seleccionas un formato de píxel menor al importar el archivo VDB.
- Plataformas compatibles:
- Actualmente es compatible en Windows con DX11, DX12 mediante Shader Model 5 (SM5) y Shader Model 6 (SM6).
- Actualmente, la importación de VDB solo funciona en las compilaciones del editor de Windows. Las compilaciones con cooking admiten SVT en cualquier plataforma capaz del rendimiento necesario para transmitirlas y renderizarlas.
- Las SVT no funcionan con el renderizador móvil.
Otros recursos
- Los archivos VDB utilizados en los ejemplos de esta página proceden del conjunto VDB gratuito de JangaFX creado con EmberGen.
- Puedes descargar los ejemplos gratuitos aquí.





