Volumes

Renderização de volumes pode ser usada para efeitos como fogo, fumaça, névoa, absorção em vidro, e muitos outros efeitos que não podem ser representados por superfícies de malhas apenas.

Para criar um volume, você cria uma malha que define os limites nos quais o volume existe. No material você tipicamente remove os nós de superfície e ao invés disso conecta nós de volume para definir o sombreamento dentro do volume. Para efeitos como absorção em vidro você pode usar tanto um sombreador de superfície como um sombreador de volume. O mundo também pode usar um sombreador de volume para criar efeitos como névoa.

Sombreamento

Principled Volume

Principled Volume is a physically-based volume shader that can be used to create a wide range of volume materials. It supports scattering, absorption and emission in one easy to use node. Fire can be rendered with blackbody emission.

../../../_images/render_materials_components_volume_principled.jpg

Fumaça e fogo renderizados com o sombreador Principled Volume.

Componentes de Volume

Para maior controle, componentes de sombreadores de volume podem ser combinados manualmente em uma configuração de sombreador customizado.

  • Volume Absorption will absorb part of the light as it passes through the volume. This can be used to shade for example black smoke or colored glass objects, or mixed with the volume scatter node. This node is similar to the transparent BSDF node, it blocks part of the light and lets other light pass straight through.
  • Volume Scatter lets light scatter in other directions as it hits particles in the volume. The anisotropy defines in which direction the light is more likely to scatter. A value of 0 will let light scatter evenly in all directions (similar to the diffuse BSDF node), negative values let light scatter mostly backwards, and positive values let light scatter mostly forward. This can be used to shade white smoke or clouds for example.
  • Emission will emit light from the volume, for example for fire.
../../../_images/render_materials_components_volume_node.jpg

Absorção, Espalhamento e Emissão de Volume

Atributos

Quando renderizando fumaça e fogo, atributos de volume são usados para definir a forma e sombreamento do volume. Então o sombreador Principled Volume será usado por padrão, enquanto sombreadores de volume customizados podem usar o nó Atributo para obter atributos como densidade, cor e temperatura.

Densidade

Todos os sombreadores de volume têm entrada de densidade. A densidade define quanto da luz irá interagir com o volume, sendo absorvida ou espalhada, e quanto irá passar direto através. Para efeitos como fumaça você especificaria um campo de densidade para indicar onde no volume há fumaça e quanto (densidade maior que 0), e onde não há fumaça (densidade igual a 0).

Volumes no mundo real consistem de partículas, uma densidade maior significa que há mais partículas por unidade de volume. Mais partículas significa que há mais chance da luz colidir com uma partícula e ser absorvida ou espalhada, ao invés de passar direto através.

Volumes de Malha

Malhas usadas para renderização de volume devem ser fechadas e contíguo. Isso significa que não deve haver buracos na malha. Cada aresta deve estar conectada a exatamente duas faces de modo que não existam buracos ou faces em forma de T onde três ou mais faces estão conectadas a uma aresta.

Normais devem apontar para fora para resultados corretos. As normais são usadas para determinar se um raio entra ou sai de um volume, e se elas apontam na direção errada, ou há um buraco na malha, então o renderizador não é capaz de decidir que lado é dentro ou fora do volume.

Essas regras são as mesma para a renderização correta da refração em vidros.

Volume do Mundo

Um sombreador de volume também pode ser aplicado ao mundo, preenchendo todo espaço.

Currently, this is most useful for night time or other dark scenes, as the world surface shader or sun lights will have no effect if a volume shader is used. This is because the world background is assumed to be infinitely far away, which is accurate enough for the sun for example. However, for modeling effects such as fog or atmospheric scattering, it is not a good assumption that the volume fills the entire space, as most of the distance between the sun and the earth is empty space. For such effects it is be better to create a volume object surrounding the scene. The size of this object will determine how much light is scattered or absorbed.

Espalhamento Múltiplo

Real-world effects such as scattering in clouds or subsurface scattering require many scattering bounces. However, unbiased rendering of such effects can be noisy, so by default the number of bounces is zero in Cycles, and no support is available in Eevee. The effect you get when rendering with zero volume bounces is what is known as «single scattering», the effect from more bounces is «multiple scattering».

Para renderizar materiais como pele ou leite que exigem espalhamento múltiplo, espalhamento sub-superfície é mais eficiente e fácil de controlar. Particularmente o método de caminhada aleatória pode renderizar precisamente tais materiais.

Para materiais como nuvens ou fumaça que não possuem uma superfície bem definida, renderização de volume é necessário. Esses ficam melhor com muitos rebatimentos de espalhamento, mas na prática pode ser necessário limitar o número de rebatimentos para manter o tempo de renderização aceitável.