Uma textura de volume esparso (SVT) é uma textura que armazena texels (voxel) em uma estrutura de dados 3D. Você pode indexar os dados das SVTs com coordenadas UV tridimensionais, de forma semelhante a texturas 3D e texturas de volume. Ao contrário da textura de volume padrão (denso), os SVTs gastam memória apenas em regiões do volume com dados "interessantes" (aqueles em que os dados de voxel estão presentes), permitindo volumes muito maiores, ou mesmo aqueles com as mesmas extensões, usem menos memória quando comparado com a densidade das texturas de volume padrão.
Tipos de texturas de volume esparso
Você pode usar volumes estáticos ou animados para representar as texturas de volume esparso. Uma SVT estática é um único volume, enquanto uma SVT animada é uma sequência de volumes (ou quadros) que pode ser reproduzida, de forma semelhante à animação de folioscópio.
À esquerda, SVT de volume único estático; à direita, uma SVT animada.
Essas SVTs são renderizadas usando o ator de volume heterogêneo. Consulte mais informações sobre como usá-los em Heterogeneous Volumes (volumes heterogêneos).
Composição da texturas de volume esparso
As texturas de volume esparso são compostas de várias texturas. Elas incluem uma textura de Tabela de página que serve como uma referência para as texturas de Dados de ladrilho físico que compõem o volume. Esses dados de textura de ladrilho armazenam os dados de textura para o volume, e podem usar até duas texturas para armazenar dados e atributos do volume, armazenados como atributos A e B.
Os atributos A e B usam os canais de textura RGBA para armazenar dados, oferecendo até oito canais para armazenar dados. Os dados são recuperados por meio de pesquisas de textura; uma pesquisa para a tabela de páginas e uma por dados de ladrilho físico para duas ou três pesquisas no total, dependendo da SVT. Isso significa que as SVTs compartilham uma única pesquisa de tabela de página para texturas de dados de ladrilho físico em vez de ter uma relação de um para um da tabela de páginas para textura de dados de ladrilho.
As texturas de dados de dois ladrilhos de SVTs (atributo A e B) pode ter diferentes formatos de pixels: 8, 16 e 32 bits. Quando você não usa um dos canais de textura RGBA em uma da lista de atributos, ocorre uma tentativa de usar um formato de pixel com menos canais. Se você não usar nenhum canal, a textura não consumirá memória.
| Formato da textura | Textura | Representação na Unreal Engine |
|---|---|---|
| Tabela de páginas | ![]() |
![]() |
| Ladrilhos 3D físicos | ![]() |
![]() |
Maneiras de visualizar texturas de volume esparso
Você pode trabalhar com texturas de volume esparso das seguintes maneiras:
- Materiais de domínio de volume
- Ator de volume heterogêneo
- Neblina volumétrica
- Nuvens volumétricas
- Visualizador de textura de volume esparso
Ator e componente de volume heterogêneo
Os volumes heterogêneos são atores posicionáveis que aproveitam as SVTs, incorporando nós de material Sparse Volume Texture em seu material de domínio de volume. Este ator-tipo renderiza as SVTs e seus atributos usando uma configuração lógica no seu material. O ator de volume heterogêneo também pode reproduzir e executar loopings de SVTs animadas sem qualquer configuração adicional necessária.
A renderização de volume heterogêneo é parcialmente limitada por funcionalidades de renderização diferidas para tempo real. No entanto, o Path Tracer (rastreador de caminho) oferece suporte mais completo para volumes de renderização, como simulação com precisão de dispersão, sombras e iluminação global.
Exemplo de um material de SVT renderizado usando um ator de volume heterogêneo.
Consulte mais informações e detalhes sobre seu uso e configuração em Heterogeneous Volumes.
Neblina volumétrica
As SVTs aceitam Volumetric Fog (neblina volumétrica), uma funcionalidade de Exponential Height Fog, quando seu material de domínio de volume é aplicado a uma malha. As SVTs podem ter uma quantidade maior de detalhes que a resolução da neblina volumétrica, por isso, é possível perceber discrepâncias ao usar esse método e não o volume heterogêneo.
À esquerda, o ator de volume heterogêneo exibindo uma SVT; à direita, um material de SVT aplicado a uma malha e renderizado com neblina volumétrica.
Para configurar a neblina volumétrica com um material SVT, consulte a seção Visualizando texturas de volumes esparsos com neblina volumétrica desta página.
Nuvens volumétricas
As SVTs aceitam Volumetric Clouds (nuvens volumétricas) automaticamente quando seu material de domínio de volume é aplicado a um ator de volume heterogêneo.
Visualizador de textura de volume esparso
O Visualizador de textura de volume esparso é mais útil como um visualizador e não está otimizado, nem é ideal, para uso com o restante da cena. Em vez disso, a melhor opção é criar um material para exibir adequadamente a SVT e aplicá-la a um volume heterogêneo, ou usar um dos métodos em mencionado em na seção Maneiras de visualizar texturas de volume esparso.
O Visualizador de textura de volume esparso fornece uma maneira de pré-visualizar um ativo de SVT diretamente sem a necessidade de definir um material. Com o visualizador, você pode pré-visualizar canais de texturas de atributivos individuais da SVT e reproduzir sua animação, se houver uma. Tornando o visualizador a escolha ideal para a depuração rápida de ativos de SVT sem qualquer configuração necessária.
Para usar o visualizador de SVT, siga estes passos:
- Arraste e solte um Visualizador de textura de volume esparso para a cena do painel Posicionar atores.
- No painel Detalhes, atribua um ativo de SVT ao espaço de atribuição Sparse Volume Texture Preview.
A SVT é exibida no visualizador.
Ajuste o valor da propriedade Extinction (Extinção) para ajustar visibilidade do volume, definindo o quanta luz ele absorve.
Para SVTs com mais de um quadro, use as caixas de seleção Playing e Looping para reproduzir um loop do quadro da SVT. A propriedade Frame Rate (Taxa de quadros) especifica quantos quadros por segundo (FPS) ela deve reproduzir. O visualizador é definido como 24 FPS por padrão. Se a propriedade "Animate" (Animar) ficar desmarcada, você poderá usar o valor da propriedade Frame para deslizar pelo quadro na SVT.
À esquerda, a pré-visualização da SVT sem animação; à direita, a visualização da SVT em loop pelo seu quadros animados.
O visualizador de SVT exibe apenas um único canal de textura por vez. Isso é útil para inspecionar canais únicos de um ativo de SVT, e funciona mais ou menos bem dependendo dos dados sendo armazenados na textura do volume. Quaisquer dados de velocidade importados serão exibidos como densidade e retornarão resultados indesejados.
Use a caixa de seleção Preview Attribute (Pré-visualizar atributo) para escolher o canal de atributos que você deseja visualizar. O primeiro canal AttributesA Red é usado por padrão.
O visualizador de textura de volume esparso tem a seguinte propriedade:
| Propriedades | Descrição |
|---|---|
| Pré-visualização de ativos | |
| Sparse Volume Texture Preview | O ativo de SVT a ser usado com o visualizador. |
| Blocking Streaming Requests | Faz com que o gerenciador de transmissão de SVT bloqueie (aguarde) todas as solicitações de transmissão imediatamente após emiti-las. Consulte mais informações sobre como usar efetivamente essa propriedade na seção Observações sobre o desempenho de transmissão. |
| Apply Per Frame Transforms | Aplica a transformação anexada a um determinado quadro de textura de volume esparso. Esta transformação é relativa à transformação do componente do Visualizador de textura de volume esparso. |
| Pivot at Centroid | Move o pivô para o centro do volume. Observe que as transformações foram criadas com o pivô na origem, que geralmente é um dos cantos do volume, dependendo de como foi criado. Forçar o pivô para o centro do volume pode desfazer as transformações. |
| Voxel Size | A escala uniforme aplicada a todo o voxel. Essa é uma maneira rápida de dimensionar todo o volume para depurar problemas relacionados ao dimensionamento. |
| Preview Attribute | Escolha que atributo está sendo pré-visualizado. Apenas um pode ser pré-visualizado por vez, mesmo quando houver vários contidos em um única SVT. Se o canal alfa dos atributos A ou B estiver definido como Nenhum, você poderá ver elementos visuais em blocos pretos ao pré-visualizá-los no visualizador. Isso ocorre porque a GPU geralmente retorna 0 para canais de textura não existentes, exceto com canais alfa, que retornam 1 por padrão. Não deve ser problema deixá-lo definido como Nenhum, porque o canal é essencialmente indefinido. |
| Mip Level | defina em qual nível de mip visualizar a SVT. |
| Extinction | Define o nível de opacidade do volume. A extinção é a soma da absorção (raios de luz que atingem as partículas e sendo absorvidos) e dispersão (raios que atingem as partículas e são dispersados/redirecionados para uma direção diferente que não alcança mais a câmera). Valores mais altos parecem dá uma aparência mais opaca que valores mais baixos. |
| Animation | |
| Frame | Digite um valor ou arraste a barra para deslizar os quadros da SVT animada. Esta propriedade é editável quando a opção Playing está desabilitada. |
| Frame Rate | Especifique uma taxa de quadros que esta animação de SVT deve reproduzir. Por exemplo: 24, 30, 48 ou 60. Esta propriedade é editável quando a opção Playing está habilitada. |
| Playing | Alterna se os loops do visualizador por meio da reprodução reproduz os quadros do ativo de SVT quando há vários presentes. |
| Looping | Executa um loop na animação quando Playing está habilitado. |
| Reverse Playback | Reproduz os quadros de uma SVT animada de trás para frente quando Playing estiver habilitado. |
Como trabalhar com texturas de volume esparso
Você pode importar texturas de volume esparso dos arquivos de VDB (ou base de dados de voxel). Esse formato é amplamente usado para armazenar dados de volumes esparsos. Os dados da VDB são convertidos em uma representação de volume esparso quando importados para a Unreal Engine.
Os arquivos de VDB contêm as chamadas "grades", outro nome para volumes. Essas grades podem ter diferentes tipos de componentes, como densidade, velocidade e temperatura. As SVTs aceitam a importação de grades com os seguintes tipos: float (float, float2, float3, float4), duplo (double, double2, double3, double4) e meio (half, half2, half3, half4). A resolução da SVT resultante é a união das dimensões de todas as grades importadas.
Embora a Unreal Engine aceite a importação de VDBs de todos os tipos, a SVT não é compatível com formatos duplos. Os dados são convertidos para 8, 16 e 32 bits na importação.
Cada classe também pode ter sua própria transformação. O formato VDB permite uma ampla variedade de tipos de transformações, incluindo transições de perspectiva/frustum. Atualmente, a Unreal Engine aceita transformações com dimensionamento, rotação e translação. Essas transformação podem variar entre os quadros, de modo que a SVT importada pode dimensionar, girar e transladar ao longo de sua linha do tempo de animação.
Embora as transformações possam variar em vários quadros, espera-se que todas as grades usadas dentro de um único quadro especificado sejam idênticas.
Como importar arquivos VDB
Você pode executar uma das seguintes ações para importar um arquivo VDB:
- Arraste e solte o VDB diretamente no Navegador de Conteúdo.
- Use o botão Importar no Navegador de Conteúdo.
VDBs têm sua própria janela de importação para importar arquivos VDB estáticos e animados.
Ao importar um arquivo VDB animado que contém o mesmo nome, exceto por seu quadro numerado, você pode importar qualquer um dos arquivos da sequência animada, o importador o reconhecerá como pertencente a uma sequência de VDBs. Se você selecionasse todos os arquivos em uma sequência de VDB animada e importasse todos de uma vez, cada arquivo criaria sua própria sequência, criando assim várias SVTs animadas idênticas.
![]() |
![]() |
|---|---|
| Opção de importação de SVT: VDB estática de quadro único | Opção de importação de SVT: sequência de VDB animada |
As opções de importação incluem as seguintes informações e configurações:
| Propriedades | Descrição |
|---|---|
| Importar estática/animada | Exibe o tipo de VDB sendo importada, estática ou animada. |
| Ativo atual | O caminho do arquivo da VDB sendo importada. |
| Importar sequência | Importa vários arquivos VDB rotulados sequencialmente como uma única sequência de textura de volume esparso animada. As SVTs animadas são criados ao importar um arquivo de origem que faz parte de um arquivo VDB de sequência numerada sequencialmente (file0.vdb, file1.vdb, file2.vdb, e assim por diante). O importador detecta automaticamente se um arquivo faz parte de uma sequência e marca a caixa de seleção Importar sequência. |
| Atributos A | Permite que o usuário atribua canais individuais das grades de origem aos canais (RGBA) da SVT resultante. Cada atributo representa as texturas de dados de ladrilho lidas pela textura da tabela de páginas. O menu suspenso de formato ao lado desta propriedade seleciona qual tipo de formato cada textura de dados de ladrilho deve usar, como float de 16 bits, float de 32 bits e unorm de 8 bits. O unorm de 8 bits é usado para dados ou atributos que estão na faixa de 0 a 1. |
| Atributos B | Exibe as grades presentes no arquivo de origem e permite que o usuário atribua canais individuais das grades de origem aos canais (RGBA) da SVT resultante. Cada atributo representa as texturas de dados de ladrilho lidas pela textura da tabela de páginas. O menu suspenso de formato ao lado desta propriedade seleciona qual tipo de formato cada textura de dados de ladrilho deve usar, como float de 16 bits, float de 32 bits e unorm de 8 bits. O unorm de 8 bits é usado para dados ou atributos que estão na faixa de 0 a 1. |
| Informações da grade do arquivo de origem | Exibe informações sobre as grades do arquivo VDB a ser importado, como o índice nomeado, o tipo e as dimensões. |
O tempo necessário para importar e criar uma SVT depende das dimensões e do número de quadros do arquivo VDB de origem.
Um ativo de textura de volume esparso é criado durante o processo de importação. Abrir o arquivo revela informações sobre ele, como a resolução do volume, o número de níveis de mip, o número do quadro, entre outras.
Alterar o método de endereçamento/ladrilhamento do amostrador pode levar algum tempo, pois precisa regenerar os dados SVT do tempo de execução.
Como suar texturas de volume esparso em materiais
Os materiais podem amostrar texturas de volume esparso usando os nós Sparse Volume Texture Object e Sparse Volume Texture Samples.
Você pode usar SVTs com volume heterogêneo, neblina volumétrica e nuvens volumétricas. Seus materiais são configurados de forma semelhante à definição do domínio de material como Volume e seu modo de mesclagem como Aditivo.
O nó Sparse Volume Texture Sample recebe algumas coordenadas UV (devem ser tridimensionais) e recupera os dados resultantes dos pins de saída dos atributos A e B; ambos float4. Você pode usar SVTs como parâmetros em um gráfico de material e pode amostrá-las em qualquer tipo de material. No entanto, elas são mais úteis quando usadas em materiais com seu domínio de material definido como "Volume", como aquelas com volumes heterogêneos, neblina volumétrica e nuvens volumétricas.
Abaixo é mostrado um exemplo de um material de volume amostrando uma SVT. Ele está calculando as coordenadas UV 3D de acordo com a posição no espaço do mundo; essa lógica não é específica de SVTs e é opcional. Se o pin de entrada de UV não for atribuído, os UVs serão calculados automaticamente com a mesma lógica mostrada na imagem abaixo. O nó de amostra de SVT tem duas saídas float4 (atributo A e B), mas apenas o primeiro canal está sendo usado neste exemplo, porque contém a densidade da SVT sendo usada.
Este é um exemplo da configuração mais simples que você pode ter para amostrar uma textura de volume esparso em um material.
Coordenadas UV da textura de volume esparso
As texturas de volume esparso são amostradas com coordenadas UV tridimensionais. Como as texturas 2D padrão, o espaço UV se estende de 0 a 1 em todas as três dimensões (XYZ). O espaço UV se estende ao longo da propriedade da resolução de volume que você pode inspecionar ao abrir um ativo de SVT.
O espaço UV é definido como a união das caixas delimitadoras dos quadros individuais. Como sequência disso, não há necessidade de considerar o tamanho da caixa delimitadora ao configurar qualquer lógica de material, pois as mesmas coordenadas de UV usadas em diferentes quadros serão indexadas no mesmo voxel do espaço do mundo.
Além disso, você pode usar o nó Texture Property para consultar o tamanho da textura e o tamanho do texel como faria com uma textura 2D. Você também pode consultar o volume da SVT a partir de um Blueprint.
Valores de mip do nó Sparse Volume Texture
Os nós Sparse Volume Textures aceitam valores de mip de forma semelhante a como outros nó de amostra de textura os gerenciam.
Exemplo de material de volume esparso de origem da engine
A Unreal Engine inclui um material SVT de amostra vazio já configurado para você aplicar seu ativo de SVT. Você pode encontrá-lo no Navegador de Conteúdo em Engine, Materiais da engine chamado SparseVolumeMaterial. Faça uma cópia desse material e crie uma instância dele.
Depois de abrir a instância de material, substitua o parâmetro SparseVolumeTexture e aplique o seu próprio ativo de SVT importado ao espaço de atribuição.
Como visualizar SVTs com volumes heterogêneos
Para usar SVTs com volumes heterogêneos, siga estes passos:
- Adicione um ator de volume heterogêneo à cena.
- No painel Detalhes, acesse a seção Materiais.
- Atribua um material baseado em SVT ao espaço Element 0.
Consulte mais informações sobre o uso de volume heterogêneo e suas propriedades em Heterogeneous Volumes.
Visualizando SVTs com neblina volumétrica
Para usar SVTs com neblina volumétrica, siga estes passos:
- Adicione uma Exponential Height Fog à sua cena.
- No painel Detalhes, habilite Neblina volumétrica.
-
Aplique um material SVT a uma malha.
Se precisar de uma malha, você pode usar a forma Cubo no painel Posicionar atores, sob a categoria Forma.
Como as SVTs podem ter uma quantidade maior de detalhes do que a resolução da neblina volumétrica, pode ser necessário aumentar a malha para obter melhores resultados. Além disso, você pode querer usar essas variáveis de console para aumentar a resolução da neblina volumétrica:
r.VolumetricFog.GridPixelSize 4(o padrão é 8)r.VolumetricFog.GridSizeZ 256(o padrão é 128)
Como reproduzir texturas animadas de volume esparso
A reprodução de SVTs animadas exige o uso da Material Instance Dynamics (dinâmica de instância de material) (MIDs) com Blueprints. Uma animação de SVTs é orientada usando o nó Sparse Volume Texture Parameter em seu material. Isso torna possível alternar o parâmetro da SVT a cada marca de verificação, com a ideia de que cada quadro de uma SVT animada seja por si só uma SVT estática.
Há duas partes a serem consideradas ao configurar a lógica para animar uma SVT:
- O evento BeginPlay cria um controlador de textura animada de volume esparso, que é uma classe com funcionalidade para reproduzir uma SVT animada. Para facilitar, ele pode extrair os quadros da SVT atribuída. O quadro extraído também implementa a interface do shader de SVT e pode, por si só, ser vinculado ao parâmetro de material de SVT. Uma MID é necessária para atualizar o parâmetro de SVT.
- A marca de verificação de evento exige uma atualização na variável do controlador, que busca o quadro atual e o aplica ao nó Sparse Volume Texture Parameter na dinâmica de instância de material.
O exemplo a seguir demonstra como configurar um material de SVT e aplicá-lo a uma malha e renderizado com neblina volumétrica. Este é apenas um exemplo de fluxo de trabalho. Se você quiser usar nuvens volumétricas ou qualquer outro caso de uso em que possa querer usar SVTs animadas, precisaria atribuir a MID a qualquer ator ou componente usado para renderizar o material. Por exemplo, com um material de nuvem, você atualizaria o material de nuvem do componente volumétrico de nuvem.
Volumes heterogêneos são uma exceção, pois seu componente implementa toda essa lógica, você só precisa criar o material com um parâmetro de SVT e atribuir a SVT animada a ele. O componente de volume heterogêneo cria automaticamente uma MID no plano de fundo para atualizar o parâmetro de SVT.
Para configurar a lógica do Blueprint de construção de dinâmica de instância de material para uso com a neblina volumétrica, siga estes passos:
- No seu material de SVT, use um nó Sparse Volume Texture Sample Parameter no gráfico.
- Crie um Blueprint de ator.
- No painel Componentes, clique no botão Adicionar (+) e selecione uma malha de Cubo na lista.
- EmGráfico de eventos, arraste o nó Event BeginPlay e adicione um nó Construct Object from Class.
- Em Construct Object from Class, defina a classe como Animated Sparse Volume Texture Controller (Controlador de textura animada de volume esparso).
- No nó Construct Object from Class, clique com o botão direito em Return Value (Valor de retorno) e escolha Promote to Variable (Promover para variável).
- No painel Meus Blueprints, em Componentes, renomeie NewVar para "Controller".
- Arraste o nó Set Controller e adicione um nó Set Sparse Volume Texture.
- Conecte o pin de saída do nó Set Controller à entrada Target (Alvo) do nó Set Sparse Volume Texture.
- No nó Set Sparse Volume Texture, clique com o botão direito no pin Sparse Volume Texture e escolha Promote to Variable.
-
No painel Meus Blueprints, em Componentes, clique na variável Sparse Volume Texture. No painel Detalhes, sob Valor padrão, defina uma Textura de volume esparso**.
Deixar o espaço de Textura de volume esparso vazio faz com que o material de SVT não atualize nem reproduza sua animação.
-
Arraste o nó Set Sparse Volume Texture e adicione um nó Play (Reproduzir).
O nó "Play" faz com que o controlador atualize um temporizador interno cada vez que você chama Update() no controlador. Este temporizador define qual quadro é considerado "atual" ao extrair o quadro atual. Há também nó "Pause" (Pausar) e "Stop" (Parar) que podem controlar a reprodução da SVT.
- No nó Set Controlador, arraste o pin de saída do controlador e conecte-o ao pin Target no nó Play.
- Arraste o nó Play e adicione um nó Create Dynamic Material Instance (Criar instância de material dinâmico).
- No nó Create Dynamic Material Instance, defina o menu suspenso Parent (Pai) como SVT Material.
- No nó Create Dynamic Material Instance, clique com o botão direito no pin Return Value e escolha Promote to Variable.
- No painel Meus Blueprints, em Componentes, renomeie NewVar para "MID".
- Arraste o pin do valor de retorno do nó Set MID e adicionar um nó Set Material (Cube).
Esta parte da lógica do Blueprint se parece com:
Clique na imagem para ampliá-la.
Para configurar a lógica do Blueprint para reproduzir cada quadro da SVT, siga estes passos:
- No painel Meus Blueprints, em Componentes, arraste uma variável Controller até o gráfico e selecione Get Controller (Obter controlador).
- Arraste o nó Controller e adicione um nó Update.
- Conecte o pin de execução Event Tick a Update.
- Conecte o pin Event Tick Delta Seconds ao pin Delta Time do nó Update.
- Arraste o nó Update e adicione um nó Get Current Frame.
- Arraste o nó Controller e conecte-o ao pin Target no nó Get Current Frame.
- No painel Meus Blueprints, em Componentes, arraste uma variável MID para o gráfico e selecione Get MID**.
- Arraste o nó Get MID e adicione um nó Set Sparse Volume Texture Parameter Value.
- Arraste o pin Return Value do nó Get Current Frame e conecte-o ao pin Value do nó Set Sparse Volume Texture Parameter Value**.
- Em Set Sparse Volume Texture Parameter Value, defina Parameter Name (Nome do parâmetro) como o nome de Sparse Volume Texture Sample Parameter no seu material de SVT.
Esta parte da lógica do Blueprint se parece com:
Clique na imagem para ampliá-la.
Quando você simula ou usa o Jogar no Editor (JNE), a SVT deve reproduzir sua animação em um loop.
A SVT animada usado com neblina volumétrica.
Para obter um bom resultado, talvez seja necessário ajustar alguns elementos:
- Em seus Blueprints, ajuste o tamanho da malha para obter uma melhor resolução de volume ao usar neblina volumétrica. O exemplo acima aumenta a malha do cubo em 20 vezes em relação a seu tamanho original.
- No seu material SVT, use um valor de multiplicação mais alto para a última multiplicação antes de conectar à entrada de Extinção. O exemplo acima usa 7,5 em vez do valor original de 2,5.
Além dos exemplos acima, você também pode fazer o seguinte:
- Usar outras funções disponíveis no controlador para definir o índice de quadros ou a hora atual diretamente.
- A velocidade de reprodução é configurada ajustando a propriedade "Frame Rate" do controlador. O padrão é 24 FPS.
- Como alternativa para obter apenas o quadro atual, você pode usar a função Get Current Frames For Interpolation (Obter quadros atuais para interpolação) para retornar os dois quadros mais próximos e um valor entre 0 e 1 para interpolar entre eles. Você pode usar esse método para criar dois parâmetros de SVT, um parâmetro escalar para o alfa de lerp e depois usar um nó "Interpolation" (Interpolação) no gráfico de material.
Usando uma textura de volume esparso animada com o Sequencer
Usando o Blueprint de SVT animado criado na seção anterior, você pode estendê-lo para a reprodução para ser controlado no Sequencer. Você criará uma nova variável que é definida como "Expose Cinematics" (Expor cinematografia) e que substituirá partes da lógica de "Event Tick". Esse fluxo de trabalho é semelhante a como os Blueprints de animação de malha do esqueleto são controlados com o Sequencer.
Para estender a reprodução de Blueprint de SVT animado para serem controles pelo Sequencer:
- Abra seu Blueprint de SVT animado.
- No painel "Meus Blueprints", em "Componentes", arraste e solte uma variável "Controller" para o gráfico e selecione "Get Controller" na lista.
- Arraste do nó "Get Controller" e adicione um nó "Get Duration" (Obter duração)
- Conecte o pin de execução do nó Event Tick para o nó "Get Duration".
- Arraste o nó "Get Duration" e adicione um nó "Set Time" (Definir tempo) (na categoria "Animated Sparse Volume Texture Controller").
- Conecte o nó "Get Controller" ao pin "Target" do nó "Set Time".
- Arraste "Return Value" do nó "Get Duration" e adicione um nó "Multiply".
- Arraste o pin de saída de "Multiply" e conecte-o ao pin de entrada de "Time" do nó "Set Time".
- Clique com o botão direito no gráfico e adicione um nó "Fraction" (Fração).
- Clique com o botão direito no pin de entrada A do nó "Fraction e escolha "Promote to Variable". Dê a variável o nome de "Animation Alpha".
- Arraste o nó "Set Time" e adicione um nó "Get Current Frame" (Obter quadro atual).
- Arraste do nó "Controller" e conecte ao pin "Target" no nó "Get Current Frame".
- No painel Meus Blueprints, sob Componentes, arraste uma variável MID para o gráfico e selecione "Get MID".
- Arraste o nó "Get MID" e adicione um nó "Set Sparse Volume Texture Parameter Value".
- Arraste o pin "Return Value" do nó "Get Current Frame" e conecte-o ao pin "Value" do nó "Set Sparse Texture Parameter Value".
- No nó "Set Sparse Volume Texture Parameter Value", defina o "Parameter Name" como o nome do parâmetro de amostra de textura de volume esparo usado no seu material de SVT.
- No painel Meus Blueprints, sob Componentes, selecione a variável "AnimationAlpha". No painel Detalhes, marque a caixa "Expose Cinematics" (Expor cinematografia).
- Compile e salve.
Sua lógica de Blueprint de SVT animada deve ter a seguinte aparência para o caminho "Event Tick":
Clique na imagem para ampliá-la.
Com essa configuração de lógica, quando você adicionar uma Track (Faixa) ao Sequencer para Animated SVT Blueprint", ao clicar no ícone Adicionar (+) ao lado da faixa, você deverá ver sua variável AnimationAlpha** na lista.
Quando adicionada, sua variável pode ser codificada no painel Sequencer.
Observações sobre o desempenho de transmissão
- Reprodução em tempo real de SVTs animadas
- A reprodução em tempo real de SVTs animadas depende muito da sua resolução e da dispersão dos dados de volume. Se os dados demorarem muito para serem transmitidos, a renderização usará níveis mip com maior granularidade, ocasionando uma queda visível de fidelidade. Você pode contornar essa questão de algumas maneiras:
- Usando um formato de pixel menor ao importar uma VDB, que, por sua vez, melhora o desempenho da transmissão. Um formato de 32 bits geralmente é demais para casos de uso em tempo real.
- Diminuir a taxa de quadros de animação.
- Usar um nível de mip de resolução mais baixa.
- Se estiver usando esse método, o nível de mip precisa ser definido no controlador de SVT animada ou nas configurações do componente de volume heterogêneo. Definir o pin de entrada MipLevel no transmissão nó Sparse Volume Texture Sample tenta amostrar no nível de mip fornecido (desde que tenha sido transmitido), mas a transmissão em si não é orientada de lá. Variáveis de console úteis para ajustar o desempenho da transmissão
r.SparseVolumeTexture.Streaming.NumPrefetchFramesé o número de quadros a serem pré-buscados quando um determinado quadro é solicitado no sistema de transmissão. O padrão é 3 quadros, pois funciona bem na maioria dos casos, mas o valor pode depender da própria SVT. Definir um valor muito alto pode sobrecarregar o sistema de transmissão com solicitações. Definir muito baixo pode fazer com que os quadros não sejam totalmente transmitidos quando forem necessários para a renderização.r.SparseVolumeTexture.Streaming.PrefetchMipLevelBiasaplica uma tendência ao nível de mip do quadro pré-buscado. A pré-busca é feita em níveis de mip cada vez mais altos (resolução mais baixa). Essa tendência pode ser usada para alterar o nível de mip no qual o quadro é pré-buscado. Valores negativos fazem com que os quadros sejam pré-buscados em níveis de mip de resolução mais alta, enquanto valores positivos fazem com que os quadros sejam pré-buscados em níveis de mip de resolução mais baixa.r.SparseVolumeTexture.Streaming.PrintMemoryStatsgera informações de memória sobre todas as SVTs registradas no sistema de transmissão. O desempenho da transmissão geralmente começa a ser prejudicada para quadros de SVT maiores que valores entre 30 a 50 megabytes (MB). Ao tentar reproduzir com a taxa de quadros padrão de 24. O desempenho depende muito da plataforma e do PC em uso. O desempenho da transmissão também depende do número de SVTs sendo transmitidas no momento.
- Reprodução de bloqueio
- Para determinados casos de uso (produções off-line), talvez você não queira comprometer-se das formas descritas acima. Para garantir que todos os mips sejam transmitidos quando você renderizar o quadro atual, o transmissor aceita o solicitações de bloqueio. Com as solicitações de bloqueio, as solicitações de E/S para carregamento em um determinado quadro são emitidas e imediatamente esperadas até que sejam concluídas. Solicitações de bloqueio podem afetar a taxa de quadros e causar o "salto" de quadros quando a hora atual do jogo é usada para conduzir a reprodução da animação. Mas ao usar o Sequencer para renderizar quadros, o problema de saltos desaparece porque o Sequencer especifica que quadro de SVT renderizar, não importa se cinco minutos de tempo real se passaram entre a renderização do quadro anterior e o atual. Não se aplica ao visualizador de SVT porque é principalmente uma forma de depuração ativos de SVT.
- Filtro de mip estocástico
- Essa opção apresenta otimizações semelhantes às de texturas virtuais, em que os dois níveis de mip mais próximos são amostrados estocasticamente. Reduzindo efetivamente o número de amostras de textura pela metade, e melhorando o desempenho. Veja como exemplo de cena abaixo com cinco instâncias de "Aerial Explosion" com instâncias sendo transmitidas com largura de banda de E/S de 2 GB/s. Essa cena precisaria de aproximadamente 25 GB/s sem o limitador de largura de banda e sem dimensionamento de acordo com o tamanho do espaço de tela projetado.

Limitações
- A textura da tabela de páginas é limitada em 2 gigabytes (GB) de tamanho, e a resolução de SVT virtual máxima não deve ultrapassar 32 mil unidades nas extensões X e Y. O eixo Z é limitado a 16 mil.
- Por exemplo, você pode criar um volume unitário de 32.000 x 100 x 100, um volume unitário de 100 x 32.000 x 100 ou um volume unitário de 100 x 100 x 16.000. Cem neste exemplo é um valor baixo o suficiente para manter a tabela de páginas abaixo do limite de 2 GB.
- A reprodução em tempo real de SVTs animadas depende muito da sua resolução e da dispersão dos dados de volume. Se os dados demorarem muito para serem transmitidos, a renderização usará níveis mip com maior granularidade, ocasionando uma queda visível de fidelidade. Você pode contornar essa questão diminuindo a taxa de quadros de animação ou usando um nível de mip de resolução mais baixa. O desempenho da transmissão também pode ser melhorado selecionando-se um formato de pixel menor ao importar o arquivo VDB.
- Plataformas compatíveis:
- Atualmente, aceito no Windows com DX11, DX12 usando o Shader Model 5 (SM5) e o Shader Model 6 (SM6).
- Atualmente, a importação de VDBs funciona apenas em compilações de editores Windows. As compilações preparadas oferecem suporte a SVTs em qualquer plataforma capaz de apresentarem o desempenho necessário para transmiti-las e renderizá-las.
- As SVTs não funcionam com renderizadores de dispositivos móveis.
Recursos adicionais
- O arquivo VDB usado nos exemplos desta página são do conjunto VDB gratuito do JangaFX, criado com EmberGen.
- Você pode baixar seus exemplos gratuitos aqui.





