Blender: adicionar reflexos a apenas parte de um objeto
Neste tutorial veremos como adicionar um reflexo apenas a uma parte de um objeto/malha no Blender, usando o "View Layers" no Compositor. Por exemplo (como nos tinham perguntado nas redes sociais) se queremos fazer um edifício com estrutura metálica, com um HDRI que valorize as estruturas metálicas e o vidro que reflita um painel que representa um céu, não queremos que o painel com o céu sendo também refletido pelas estruturas metálicas.
Para o tutorial, vamos criar um exemplo simplificado, usando um cubo: inicie o Blender, selecione o cubo padrão clicando nele, pressione a tecla "TAB" para entrar no "Edit Mode". Selecionamos tudo, pressionando a tecla "A", e clicamos no cubo com o botão direito do mouse, escolhendo a opção "Subdivide"
então, na janela inferior esquerda, eles escolhem um número de cortes igual a 4
Desmarcamos tudo pressionando as teclas "Alt+A" e no modo de seleção "Face"
selecionamos as 4 "janelas" do "palácio", extrudando-as para dentro após pressionar a tecla "E"
Na aba "Material Properties" criamos um material "metal" simples para o cubo, composto apenas pelo shader "Principled BSDF" com "Roughness:0" e "Metallic:1"
Ao pressionar o botão "+" à direita
vamos adicionar um novo material "glass" para as vidraças
relativamente simples, apenas um shader "Glass" e um "Glossy" misturados de acordo com o modo "facing" do nó "Layer Weight", então se estivermos de frente veremos a janela como vidro, enquanto se olharmos obliquamente veremos mais e mais do refletido à medida que o ângulo de visão aumenta do normal.
No "Edit Mode" selecionamos as janelas e pressionamos o botão "Assign" para atribuir o material de vidro às janelas
(Você pode obter uma boa simulação do material de vidro quando a janela tiver uma espessura, mas neste exemplo simplificado não é o objetivo principal criar uma cena realista)
No subpainel "Settings" do material "glass" atribuímos a "Pass Index:1" para identificar posteriormente os elementos aos quais esse material foi atribuído
Movemos a camera para enquadrar bem o cubo
Na guia "World Properties" usamos a imagem HDR "uffizi_probe.hdr" para a iluminação ambiente (útil para "animar" os reflexos do metal) baixada do site https://www.pauldebevec.com/Probes/
Estamos interessados apenas no que acontece no cubo, portanto, para não nos distrairmos com o resto da cena, escolhemos um fundo transparente: na guia "Render Properties", marcamos a opção "Transparent" no sub-painel "Film"
Se pressionarmos a tecla "F12" para renderizar, obtemos
Agora vamos adicionar um reflexo do céu nas janelas: vamos baixar uma foto de um céu azul em https://pixabay.com/photos/sun-sky-blue-sunlight-sunbeam-3588618/ ,
importamos a imagem com o complemento "Images as Planes" (já presente no Blender e ativo por padrão e presente em "File > Import") em um plano (que chamamos de "sky plane"), que giramos, ampliamos e colocamos na frente das janelas para que seja refletido por elas.
No entanto, o avião esconde parcialmente o cubo se tentarmos observá-lo com a camera
para evitar ocultá-lo mesmo durante a renderização, selecionamos o plano e na guia "Object Properties" desmarcamos "Camera" no subpainel "Visibility > Ray Visibility"
Pressionamos "F12" para iniciar a renderização e obtemos o cubo com o reflexo do plano contendo a textura do céu
Agora queremos separar esses dois efeitos (cubo com reflexos apenas do hdr do "world" e cubo que reflete o plano que contém a imagem do céu), disponibilizando-os em duas "view layer", camadas que podemos então add e no qual podemos realizar outras operações no "Compositor".
Na "Scene Collection" criamos duas coleções "Collection metal" e "Collection sky". "Collection metal" representa a cena apenas com o cubo, sem que o plano seja refletido, enquanto "Collection sky" representa a cena do cubo ("cube") que reflete o céu, portanto contém uma cópia do cubo e do plano ("sky plane"). A lâmpada e a camera são externos a estas duas coleções, pois são comuns às duas situações (até o cubo seria comum, mas para simplificar criámos "agrupamentos lógicos").
Agora vamos criar as duas "View layer":
renomeamos a atual "View Layer" para "view metal" e ativamos (exibimos) apenas a coleção "Collection metal"
então vamos criar uma nova "View layer" clicando no pequeno botão à direita,
escolhendo a opção "Copy settings",
chamando-o de "view sky", onde ocultamos "Collection metal" e exibimos "Collection sky"
Habilite para este "View layer", em "View Layer Properties", o "Passes" "Passes > Data > Indexes > Material Index", que serve para selecionar as partes de uma malha com determinado material, e "Passes > Light > Glossy > Indirect", para exibir reflexões indiretas, ou seja, objetos espelhados, neste caso o plano. (Eles são chamados de reflexos indiretos porque os raios do sistema Ray Tracing atingem primeiro o objeto, depois a superfície que os reflete e depois acabam na camera)
Acessamos o espaço de trabalho "Compositing", clicando no rótulo na parte superior,
e habilite a opção "Uses Nodes"
Vamos criar dois nós "Render Layers" ("Add > Input > Render Layers") que corresponderão às duas camadas
de fato, em um escolheremos no menu suspenso na parte inferior "View Layer" "view sky"
e as portas "IndexMA" (correspondente ao "pass" "Material Index") e "GrossInd" (correspondente ao "pass" "Glossy > Indirect") aparecerão automaticamente
No outro nó "Render Layers", definimos a "View layer" "view metal"
e o nó possui apenas as portas padrão.
Para ter uma prévia dos resultados intermediários das operações no "Compositor", verifique se a opção "Backdrop" está ativada no canto superior direito
e adicione o nó "Viewer" ("Add > Output > Viewer") para ver a visualização.
De fato, se conectarmos o nó "Render Layers" correspondente à camada "view sky" e iniciarmos a renderização pressionando a tecla de função "F12", no final das duas renderizações (correspondente às duas camadas) aparece
Agora vamos gerar uma máscara que isole as janelas: lembramos que demos ao material "glass" "Pass Index:1", então adicionamos o nó "ID Mask" ("Add > Converter > ID Mask") , que seleciona um máscara, utilizando o índice de entrada "IndexMA" com o parâmetro "Index:1", que corresponde ao "Pass Index" com valor 1 do material da janela (marque a opção "Anti-Aliasing" para suavizar as linhas oblíquas). Conectamos a saída "Alpha" ao nó "Viewer" e exibimos a máscara que identifica as janelas
Agora podemos seguir dois caminhos: ou pegamos apenas o reflexo do céu e aplicamos nas janelas, sem levar em conta o efeito do HDRI nas janelas, ou nas janelas misturamos o efeito do reflexo do céu com o de HDRI
Apenas reflexo do céu nas janelas:
Com a máscara obtida, extraímos a imagem das janelas adicionando um nó "Mix" ("Add > Color > Mix"), com a opção "Mix" selecionada
O nó "Mix" mantém apenas as partes da "Image" que são marcadas pelas partes brancas da máscara de entrada em "Fac", para a outra porta deixamos uma cor preta (neutra em relação aos nós "Mix") .
Usando outro nó "Mix", agora colamos esta imagem na gerada apenas pela camada "view metal", obtendo assim o que procurávamos
(O resultado deste nó "Mix" será a imagem do "view metal" com apenas as partes indicadas pela máscara vinda do nó "ID Mask" substituído)
Reflexão do céu em janelas misturada com reflexão HDRI:
Neste caso, não usamos a imagem final da camada "view sky", que também inclui contribuições de outras fontes, mas apenas os reflexos indiretos, que são gerados pelos objetos que são refletidos no vidro (neste caso, o plano com a textura do céu), então usaremos a saída da porta "GlossInd", em vez da "Image" mais completa. Para misturar com o restante da edificação ainda podemos usar o nó "Mix" ("Add > Color > Mix") para misturar as duas camadas, mas é melhor escolher uma opção "Screen" que, mesmo usando algum nó para ajustar brilho e cores ("Add > Color > Hue Saturation Value" e "Add > Color > Bright/Contrast"), simula melhor os reflexos de uma janela.
Depois de conectar esses nós e reiniciar a renderização, obtemos
Exportar para arquivo:
Se ao invés de usar o "Compositor" do Blender queremos compor tudo em um software gráfico 2D, podemos usar um nó "File Output" ("Add > Output > File Output") para exportar as imagens e reflexos
Isso é tudo para este tutorial sobre como adicionar um reflexo extra a apenas parte de um objeto no Blender. Happy blending!