Quando a luz passa de um meio para outro, digamos do ar para a água, a direção para a qual essa luz está viajando é alterada onde os dois meios se encontram. Esse fenômeno de iluminação é conhecido como refração e ocorre porque a velocidade de uma onda de luz pode mudar quando a luz passa para um tipo diferente de material. No Unreal Engine, você pode simular esse fenômeno de iluminação em seus Materiais usando a entrada Refração no Nó de Material Principal.
Refração
Refração é o termo usado para descrever a mudança na direção de uma onda de luz devido a uma mudança em seu meio de transmissão. Em outras palavras, quando a luz entra em contato com certas superfícies, como água ou vidro, a luz é desviada ou redirecionada porque essas superfícies afetam a velocidade com que a luz passa por elas.
Você pode ver um exemplo clássico de refração mergulhando um lápis em uma tigela de água. O lápis parecerá dobrar ou mudar de direção no ponto onde o lápis cruza a água. A ilustração abaixo mostra como funciona a refração.
X mostra a verdadeira posição física do lápis quando ele é mergulhado na água. Os raios de luz da parte submersa do lápis são refratados na interface ar-água, mudando de velocidade e direção. Da perspectiva da câmera, o lápis parece dobrar na superfície da água, com a ponta aparecendo na posição Y em vez de em sua verdadeira posição X.
Índice de Refração ou IOR
Índice de Refração ou IOR é uma medida óptica que descreve até que ponto a luz é curvada ou refratada quando entra em um determinado material. O índice de refração pode ser medido, e os valores do mundo real para superfícies comuns são bem conhecidos. Ao criar materiais refrativos no Unreal Engine, é melhor usar valores de IOR do mundo real para dar aos seus materiais uma melhor sensação de realismo. A tabela abaixo lista os valores de IOR medidos para alguns tipos de superfície comuns.
| Material | Valor de IOR |
|---|---|
| Ar | 1,00 |
| Água | 1,33 |
| Gelo | 1,31 |
| Acrílico | 1,49 |
| Vidro | 1,52 |
| Diamante | 2,42 |
Usando Refração em Materiais
Siga as instruções abaixo para criar um Material que usa refração.
Este tutorial usa recursos do Conteúdo Inicial do Unreal Engine. Se você não incluiu o Conteúdo Inicial em seu projeto, leia a página Migrando Recursos para saber como migrar o Conteúdo Inicial para seu projeto atual.
-
Clique com o botão direito no Navegador de Conteúdo e selecione Material na seção Criar Recurso Básico no menu de contexto. Renomeie o material RefractionMaterial.
-
Clique duas vezes no recurso de Material para abri-lo no Editor de Material.
-
No painel Detalhes, altere o Modo de Mesclagem de Opaco para Translúcido. Expanda a seção Translucidez e altere o Modelo de Iluminação de Volumétrico Não Direcional para Volume de Translucidez da Superfície. Alterar essas configurações habilitará o pino Refração no Nó de Material Principal. Quando concluído, as propriedades do painel Detalhes devem ficar assim.
- Pesquise os seguintes nós de Expressão de Material e adicione-os ao seu gráfico nas quantidades listadas abaixo. Seu Gráfico de Material deve se parecer com a imagem abaixo.
-
Constante x 3
- Parâmetro escalar x 2
- Lerp x 1
- Fresnel x 1

-
-
Comece a conectar o material conforme mostrado abaixo. Altere o valor de Constante fluindo em Cor de Base e Metálico para 1. Renomeie um dos parâmetros escalares Opacidade, dê a ele um valor padrão de 0,3 e conecte-o à entrada de Opacidade.
-
Renomeie o segundo parâmetro escalar IOR e altere o valor padrão para 1,52 (o IOR do vidro). Termine de conectar o Material conforme mostrado na parte delineada da imagem.
Como o vidro não refrata a luz da mesma maneira de todos os ângulos de visão, uma Expressão de Material Fresnel é usada para mesclar os dois valores no nó Lerp. O vidro não refrata tanta luz quando visto de frente, mas produz uma refração perceptível em ângulos de visão. O nó Fresnel reproduz esse efeito — o valor de Constante na entrada A é mapeado para o centro do Material, e o parâmetro IOR na entrada B é mapeado para as bordas onde a esfera se afasta da câmera.
Leia a página Usando Fresnel em Materiais para ter uma melhor compreensão de como a Expressão de Material Fresnel funciona.
-
Clique em Aplicar e Salvar na barra de ferramentas para compilar o material e salvar o recurso. Após salvar o material, você pode fechar o Editor de Material.
-
Encontre o recurso RefractionMaterial no Navegador de Conteúdo, clique com o botão direito na miniatura e selecione Criar Instância de Material no menu de contexto.
-
Solte alguns objetos em sua cena para testar o Material. O exemplo abaixo usa recursos da pasta Formatos no Conteúdo Inicial, mas qualquer objeto é adequado. Arraste o recurso RefractiveMaterial_Inst do Navegador de Conteúdo para as malhas em sua cena. Observe como a esfera parece refratar a luz nas bordas, mas não no centro onde a geometria está diretamente na frente da câmera. Este é o resultado da lógica de Fresnel descrita acima.
-
Clique duas vezes em RefractionMasterial_Inst para abri-lo no Editor de Instância de Material. Habilite o parâmetro IOR marcando a caixa ao lado do nome do parâmetro. Uma vez habilitado, você pode definir o IOR para valores diferentes para simular diferentes interações de superfície. O vídeo abaixo mostra como a refração muda quando o valor é definido como 1,0 (ar), 1,33 (água), 1,52 (vidro) e 2,42 (diamante).
Dicas e Truques de Refração
Esta seção apresenta algumas maneiras de usar a refração em combinação com outros aspectos do Editor de Material para criar superfícies refrativas complexas e interessantes.
Refração e Mapas Normais
Adicionar uma opção para usar um mapa normal com seu material refrativo produzirá alguns resultados muito interessantes, especialmente em áreas onde o mapa normal tem muitos detalhes interessantes. Siga as etapas abaixo para modificar o RefractiveMaterial criado acima para que funcione com mapas normais.
-
Primeiro encontre um mapa normal para usar. Para este exemplo, T_Water_N do Conteúdo Inicial foi usado, porém qualquer textura normal funcionará. Abra o recurso RefractionMaterial e arraste a textura normal do Navegador de Conteúdo para o Gráfico de Material.
-
Clique com o botão direito no mapa normal Amostra de Textura e selecione Converter para Parâmetro. Renomeie o parâmetro Mapa Normal e conecte-o à entrada Normal no Nó de Material Principal. Ao parametrizar a textura, você oferece aos artistas uma maneira de substituí-la em uma [Instância de Material] (desenho visual, renderização e gráficos/materiais/instâncias de material) sem editar o material-pai.
-
Clique em Aplicar e Salvar na barra de ferramentas e feche o Material.
-
No Editor de Instância de Material, agora você deve ver o parâmetro Mapa Normal listado em Valores Globais de Parâmetros de Textura. Você pode substituir o mapa normal habilitando o parâmetro e escolhendo uma textura diferente no menu suspenso.
-
Ao alterar o Mapa normal, você pode alterar a refração do Material de maneiras interessantes. Aqui estão alguns exemplos usando apenas os mapas normais que você pode encontrar na pasta Texturas do conteúdo inicial.
Refração e Movimento
Combinar refração com movimento é um componente chave em muitos tipos de Materiais. Ondulações na água são um exemplo, mas a técnica é igualmente útil em muitos materiais de efeitos especiais, como névoa de calor, distorção de uma grande explosão ou efeitos de energia.
O gráfico abaixo mostra uma maneira de adicionar movimento de aparência orgânica às normais. Duplique o mapa normal e conecte-os às entradas A e B em um nó Lerp. Adicione duas Expressões de Material Panner ao gráfico e conecte-as aos UVs das texturas do mapa normal.
Altere os valores nos nós Panner para adicionar movimento às texturas. Tornar negativos alguns dos valores move a textura na direção oposta e é uma boa maneira de criar um movimento de aparência orgânica e aleatória. Aqui estão os valores usados para os dois Panners neste exemplo.
O resultado é mostrado no vídeo abaixo. Em seu estado atual, ele se assemelha a um fluido oleoso de aparência metálica, mas com algumas modificações pode ser a base para um material de água.
Polarização de Profundidade de Refração
Polarização de Profundidade de Refração é uma maneira de impedir que objetos mais próximos sejam renderizados na superfície distorcida em ângulos de visão agudos. No entanto, isso pode aumentar a desconexão entre a superfície e onde a refração começa. Você pode ajustar Polarização de Profundidade de Refração nos dois locais a seguir.
-
Editor de Material — você pode encontrar o Polarização de Profundidade de Refração no painel Detalhes na seção Material. Você precisará pressionar o triângulo branco (destacado em verde) para expor esta propriedade.
-
Editor de Instância de Material — você pode encontrar o Polarização de Profundidade de Refração na seção Geral do painel Detalhes.
Conclusão
Adicionar refração aos seus materiais é uma ótima maneira de obter resultados realistas para materiais translúcidos, como vidro e água. Lembre-se de consultar o gráfico na parte superior do documento e usar os valores de IOR corretos para o tipo de superfície que você está tentando simular. Os valores de IOR vêm de medições do mundo real, portanto, aumentar ou diminuir o IOR do que deveria ser não é recomendável se você estiver buscando o realismo. Nos efeitos especiais e em outras aplicações mais flexíveis de refração, é claro que você pode experimentar e usar valores que se adéquem à sua estética desejada.