Neste tutorial, vamos analisar os recursos, configurações, pontos em comum e diferenças entre Depth e Mist: dois Render Passes de Composição no Blender que nos fornecem informações sobre a distância dos objetos ou a profundidade da cena na pós-produção.



Transcrição do vídeo

Olá pessoal! Neste tutorial, vamos analisar os recursos, configurações, pontos em comum e diferenças entre Depth e Mist: dois Render Passes de Composição no Blender que nos fornecem informações sobre a distância dos objetos ou a profundidade da cena na pós-produção.

Ambos podem ser usados para obter imagens que aparecem pretas nos pontos mais próximos da câmera e brancas nos pontos mais distantes, permitindo criar efeitos tanto misturando diretamente essas imagens com o render quanto usando-as como máscaras para criar outros efeitos, como mostrei, por exemplo, na minha série de videotutoriais sobre Atmospheric Perspective.

Porém, existem algumas diferenças, não apenas na forma como o intervalo de valores é calculado na cena virtual, mas também em outras características das imagens resultantes, que podem torná-las mais ou menos adequadas para determinados usos. Para tentar explicar melhor essas diferenças, ao longo do tutorial vou usar algumas cenas 3D e mostrar as diferenças nos resultados alterando algumas configurações a cada vez.

Em resumo, a diferença entre Depth e Mist é que Depth retorna os valores reais de distância dos objetos em relação à câmera virtual, enquanto Mist introduz neblina a partir de uma determinada distância da câmera, aumentando-a ao longo de uma certa profundidade, além da qual tudo se torna branco.

Portanto, Depth é mais adequado para aplicações em que é necessário usar os valores reais de distância, como com os nodes Defocus e Z-Combine.

Defocus permite focar em elementos a uma determinada distância da câmera, desfocando os demais, implementando assim profundidade de campo.

Já o Z-Combine permite misturar duas cenas determinando quais pixels mostrar e quais não mostrar com base nos valores de distância da câmera armazenados nos campos Z ou Depth de cada cena ou imagem.

Porém, isso não significa que Depth não possa ser usado em outros casos: eu mesmo o utilizei na série sobre Atmospheric Perspective, mas ali precisei normalizar as informações retornadas por Depth; em breve veremos o que significa normalizar o Depth e quais consequências isso pode ter nos dados.

O Render Pass Depth é selecionado por padrão na seção Passes da aba View Layers no editor Properties; nessa aba, esse Render Pass é chamado de Z, enquanto no node Render Layers da composição ele é chamado de Depth.

O valor mínimo de distância retornado por Depth é dado pelo valor Clip Start do objeto Camera, porque todos os objetos posicionados mais próximos da câmera do que Clip Start não são renderizados; portanto, se a saída de Depth não estiver normalizada, esse será o valor mínimo que Depth pode retornar.

O valor máximo de distância retornado por Depth é dado pelo valor Clip End do objeto Camera, porque todos os objetos posicionados além desse valor não são renderizados. O fundo do universo virtual é considerado a uma distância infinita, então ele terá o valor máximo na máscara Depth.

Você pode exibir os pontos Clip Start e Clip End na cena 3D selecionando a câmera virtual e ativando a opção Limits na seção Viewport Display da aba Data no editor Properties.

Dessa forma, será mais fácil definir corretamente o valor de Clip End.

Já o Mist retorna uma imagem que se torna progressivamente mais branca à medida que a distância da Camera aumenta. Porém, nesse caso, o ponto inicial do efeito de neblina não é dado por Clip Start, mas por um valor que podemos especificar como quisermos, chamado Mist Start.

Diferentemente de Depth, que está ativo por padrão, o Render Pass Mist precisa ser ativado explicitamente na seção Passes. Essa operação deve ser feita antes de iniciar o render; caso contrário, as informações não serão processadas e será necessário iniciar o render novamente para utilizá-las.

Após ativar o Render Pass Mist, uma nova seção chamada Mist aparecerá na aba World, onde podemos definir Mist Start e outros parâmetros.

Existe outra diferença entre Mist e Depth: Mist não usa Clip End para determinar a distância além da qual todos os objetos são renderizados como brancos. Em vez disso, ele utiliza um parâmetro chamado Mist Depth. Assim, todos os objetos posicionados a uma distância de Start + Depth serão renderizados como brancos.

Você também pode exibir Mist Start e Mist Depth no 3D Viewport simplesmente ativando a caixa Mist na seção Viewport Display da aba Data. Se você também ativou a opção Limits, é recomendável desativá-la, porque as representações se sobrepõem.

Antes de renderizar novamente, estou ajustando os valores de Mist Start e Depth para que o efeito coincida com os valores de Clip Start e Clip End.

Na seção Mist da aba World, existe outro parâmetro: Falloff, que indica como implementar a neblina ao longo da distância. O modo padrão é Quadratic, mas também existem opções como Inverse Quadratic e Linear.

Quadratic implementa a mesma transição da iluminação, proporcionando uma transição mais suave de 0 para 1. Linear implementa uma transição um pouco mais brusca do que Quadratic. Por fim, Inverse Quadratic faz a transição muito rapidamente de 0 para 1, mostrando uma neblina densa mesmo em elementos do primeiro plano.

Z-Depth não possui esse parâmetro porque não é um efeito implementado seguindo uma fórmula; ele apenas retorna os valores reais de distância dos objetos... poderíamos dizer que ele é sempre linear, mas não faz muito sentido fazer essa observação.

Como mencionei anteriormente, Z-Depth é mais adequado para obter informações sobre distâncias reais, enquanto Mist é mais indicado para criar o efeito do qual recebe o nome, porque permite configurar suas características livremente.

Se renderizarmos agora e analisarmos os passes em uma janela do Compositor, obteremos um resultado interessante na saída Mist, enquanto a máscara proveniente de Depth será, pelo menos aparentemente, inutilizável.

Vamos ver agora o que significa “normalizar o Depth” e por que o node Normalize é frequentemente usado em vários tutoriais.

Como mencionado anteriormente, os valores retornados por Z-Depth não estão no intervalo de 0 a 1, mas indicam efetivamente distâncias em relação à Camera virtual. Portanto, isso pode ser útil se, por exemplo, você quiser introduzir um efeito exatamente a uma determinada distância da câmera.

Os números armazenados podem ser muito grandes, então o campo Z-Depth armazena os dados usando mais memória do que os 8 ou 16 bits da maioria dos formatos de imagem como JPG ou PNG; tenho quase certeza de que ele usa 32 bits.

Além disso, no Backdrop, todos os valores maiores que 1 são truncados, ou “clamped”, para esse valor, e os pixels correspondentes são exibidos como brancos. Porém, os valores de Z-Depth são determinados por Clip End, que geralmente é muito maior que 1.

Por essas razões, os valores retornados não são exibidos corretamente no Backdrop do editor de Composição porque, nessa aba, todos os valores maiores que 1 são renderizados como brancos. Portanto, na maioria dos casos, as imagens retornadas aparecem muito claras e sem detalhes...

... de fato, na cena que utilizei, o valor de Clip Start é 1 e o Clip End é 20000, então o Pass Depth aparece completamente branco!

Por esse motivo, o node Normalize do grupo Utilities é frequentemente usado para mapear os valores para o intervalo de 0 a 1. Porém, nesse ponto precisamos parar porque existe uma observação importante a fazer.

O node Normalize não mapeia os valores entre Clip Start e Clip End para o intervalo de 0 a 1. Em vez disso, ele considera os valores mínimo e máximo dos pixels presentes na imagem que está processando.

Porém, essa não é a imagem que vemos no Backdrop porque, como mencionado anteriormente, o canal Depth armazena muito mais dados do que aquilo que é visível.

É por isso que, se conectarmos um node Normalize entre a saída Depth e o Viewer, os elementos na parte inferior do render aparecem pretos: porque esses são os pontos mais próximos da câmera virtual, que portanto possuem os valores mais escuros na máscara Depth e, assim, serão renderizados como pretos na versão normalizada, embora claramente não estejam à distância Clip Start da Camera!

Considerações semelhantes podem ser feitas para objetos mais distantes e para pixels que aparecerão brancos na versão normalizada da máscara Depth.

Como prova adicional de que Normalize atua sobre os valores mínimo e máximo encontrados na imagem fornecida, observe o que acontece se eu também normalizar as informações provenientes de Mist: os pixels da parte inferior, que são os mais escuros, são remapeados para 0 e, portanto, renderizados como pretos, enquanto os pixels dos elementos mais distantes já eram brancos e, assim, permanecem inalterados.

Vou mostrar outro exemplo para entender melhor esse conceito. Na cena que estou mostrando agora, a câmera e alguns objetos estão posicionados dentro de uma sala.

O valor Clipping End da câmera está configurado de forma a renderizar a face frontal da caixa mais distante colocada na sala, mas não a parede traseira da sala.

De fato, nem mesmo a caixa mais distante é totalmente visível, mas isso se deve ao efeito de perspectiva do enquadramento.

Não existem objetos posicionados próximos ao Clip Start, que está definido em 10 centímetros da câmera: até mesmo as paredes da sala nas bordas do enquadramento estão a uma distância maior do que esse valor em relação à câmera.

Se eu iniciar o render agora e analisar o Render Pass Depth sem normalização, a parede traseira ficará completamente branca porque, na prática, o Depth Pass não enxerga além da caixa mais distante e renderiza todo o restante como branco.

Porém, não existem áreas pretas porque, como mencionado anteriormente, não há objetos posicionados em Clip Start.

Mas, se utilizarmos um node Normalize, uma faixa preta será introduzida na parte inferior, algo que também vimos no render da cena usada anteriormente: evidentemente, aquela parte do chão é a mais próxima da câmera.

Podemos verificar isso movendo uma das paredes laterais para dentro, de forma que fique mais próxima da câmera, e então iniciar o render novamente.

É importante entender como a máscara Depth é alterada pelo Normalize.

Esse node não deve ser usado com Mist, e seu uso com Depth também deve ser decidido com cuidado: ele é útil para criar máscaras para efeitos especiais, como o já mencionado Atmospheric Perspective, enquanto em outros casos não deve ser utilizado.

Então, você pode estar se perguntando se existe uma forma de mapear os valores de Clip Start e Clip End para o intervalo de 0 a 1, para visualizar a máscara Depth no Backdrop...

... bem, aqui está: adicione um node Map Range do grupo Utilities no Compositor e então faça os valores From Min e From Max do node serem iguais aos valores Clip Start e Clip End da Camera.

Você obterá uma máscara semelhante ao pass Mist, mas naturalmente perderá os valores reais de profundidade.

Existe uma última diferença importante a destacar antes de encerrar este tutorial: o número de samples usados para calcular os valores de distância dos objetos na cena.

Mist, de fato, também implementa Anti-Aliasing, algo que não é calculado pelo Z-Depth.

O valor Z-Depth, em particular, utiliza apenas um sample, então pode ser usado sem problemas quando efeitos como Motion Blur ou Depth of Field não são utilizados, ou seja, em casos nos quais não é necessário misturar os valores de profundidade. Quando é necessário misturar os valores de profundidade, usar Mist é mais apropriado.

Por fim, uma observação sobre as configurações de Color Management do render e sobre como as máscaras Z-Depth e Mist são exibidas no Backdrop.

Dependendo do modo escolhido para o parâmetro View Transform, os resultados exibidos na tela tanto para Mist quanto para Depth, normalizados ou não, podem variar bastante.

Porém, essas transformações devem afetar apenas a forma como os dados são exibidos no Backdrop, portanto não devem alterar seus valores intrínsecos.

Bem, isso é tudo por este tutorial! Espero que tenha sido útil! Até breve!

Pesquisar nos Tutoriais

Digite uma frase ou várias palavras-chave separadas por vírgulas para pesquisar.

Este é um site pessoal e não constitui um canal de vendas. As páginas dedicadas aos modelos 3D documentam uma seleção dos meus trabalhos e não contêm ofertas, preços, formas de compra nem links comerciais. No momento, não aceito solicitações de trabalhos personalizados, consultorias ou outras colaborações profissionais.


INFORMAÇÕES DE POLÍTICA DE PRIVACIDADE AVANÇADAS E USO DOS FICHEIROS DE COOKIES