A API Lighting Estimation analisa indicações de indicações visuais distintas e fornece informações detalhadas sobre a iluminação em uma determinada cena. É possível usar essas informações ao renderizar objetos virtuais para iluminá-los nas mesmas condições da cena em que estão, o que torna esses objetos mais realistas e melhora a experiência imersiva para os usuários.
Pistas e conceitos de iluminação
Humanos, inconscientemente, percebem sutis dicas sobre como os objetos ou seres vivos são iluminados no ambiente deles. Quando um objeto virtual não tem uma sombra ou tem um material brilhante que não reflete o espaço ao redor, os usuários podem sentir que o objeto não se encaixa em uma cena específica, mesmo que não possam explicar o motivo. É por isso que a renderização de objetos de RA para corresponder à iluminação em uma cena é essencial para experiências imersivas e mais realistas.
A estimativa de iluminação faz a maior parte do trabalho para você fornecendo dados detalhados que permitem imitar vários sinais de iluminação ao renderizar objetos virtuais. Essas indicações são shadows, ambiente ambiente, sombreamento, destaques específicos e reflexões.
Podemos descrever esses sinais visuais como:
Luz ambiente. A luz ambiente é a luz difusa geral que vem do ambiente, iluminando tudo.
Sombras. As sombras geralmente são direcionais e informam aos espectadores de onde as fontes de luz são provenientes.
Brilho. O sombreamento é a intensidade da luz em diferentes áreas de uma determinada imagem. Por exemplo, partes diferentes do mesmo objeto podem ter diferentes níveis de sombreamento na mesma cena, dependendo do ângulo em relação ao visualizador e da proximidade de uma fonte de luz.
Destaques especulares. Estas são as partes brilhantes das superfícies que refletem diretamente uma fonte de luz. Os destaques de um objeto mudam de acordo com a posição de um espectador em uma cena.
Reflexão. A luz sai das superfícies de forma diferente dependendo do tipo de superfície: propriedades especulares (ou seja, altamente refletivas) ou difusas (não refletivas). Por exemplo, uma bola metálica será altamente especular e refletirá o ambiente dela, enquanto outra bola pintada em cinza fosco será difusa. A maioria dos objetos reais tem uma combinação dessas propriedades. Pense em uma bola de boliche recheada ou um cartão de crédito bem usado.
As superfícies refletivas também coletam cores do ambiente. A cor de um objeto pode ser diretamente afetada pela cor do ambiente. Por exemplo, uma bola branca em um cômodo azul terá um tom azulado.
Como usar os modos de estimativa de iluminação para aumentar o realismo
A API Config.LightEstimationMode
tem
modos que estimam a iluminação no ambiente com diferentes graus de
granularidade e realismo.
Modo HDR de ambiente (
ENVIRONMENTAL_HDR
). Esse modo é uma API que permite estimativas de iluminação realistas para iluminação direcional, sombras, destaques especulares e reflexões.Modo de intensidade do ambiente (
AMBIENT_INTENSITY
). Esse modo determina a intensidade média de pixels e a cor da iluminação de determinada imagem. Ele é uma configuração aproximada projetada para casos de uso em que a iluminação exata não é essencial, como objetos com iluminação integrada.DISABLED
. DesativeConfig.LightEstimationMode
se a iluminação corresponder a um determinado ambiente não for relevante para uma cena ou um objeto.
No modo ENVIRONMENTAL_HDR
O modo ENVIRONMENTAL_HDR
usa machine learning para analisar a imagem da câmera de entrada
e sintetizar a iluminação ambiental para renderizar um objeto
virtual.
Esse modo combina iluminação direcional, harmônicas esféricas esféricas e um cubo em DRDR para fazer com que os objetos virtuais pareçam fazer parte de uma determinada cena:
A iluminação direcional analisa a fonte de luz aparente de uma determinada imagem. Esse tipo de iluminação adiciona realces especulares posicionados de maneira razoável e inclina as sombras em uma direção consistente com outros objetos reais visíveis.
As harmônicas esféricas esféricas recebem uma representação realista da luz ambiente geral que vem de todas as direções em uma cena. Durante a renderização, essas informações são usadas para adicionar sinais sutis que trazem a definição de objetos virtuais.
Um cubo de mapas HDR captura a iluminação ambiental ao redor do objeto virtual. Durante a renderização, este cubo de mapas cria a reflexão do material médio para alto brilho.
A imagem a seguir mostra um exemplo de um objeto virtual em uma cena
com ENVIRONMENTAL_HDR
ativado.
Configurar o modo ENVIRONMENTAL_HDR
para uma cena de formato de cena
Para usar ENVIRONMENTAL_HDR
com uma cena Sceneform, estenda a classe ARFragment
e modifique a configuração da seguinte maneira:
@Override
protected Config getSessionConfiguration(Session session) {
Config config = new Config(session);
config.setLightEstimationMode(Config.LightEstimationMode.ENVIRONMENTAL_HDR);
return config;
}
Para ver um exemplo de como isso funciona, consulte o exemplo do sistema solar. Este exemplo implementa
ENVIRONMENTAL_HDR
sem usar ARFragment
.
No modo AMBIENT_INTENSITY
O modo AMBIENT_INTENSITY
determina a intensidade média de pixels e os
escalares de correção de cor de uma determinada imagem. Ele é uma configuração aproximada projetada para
casos de uso em que a iluminação exata não é essencial, como objetos com
iluminação integrada.
A intensidade de pixel captura a intensidade média de pixels da iluminação em uma cena, para aplicar a um objeto virtual inteiro.
Os escalares de correção de cor detectam o equilíbrio de branco de cada frame específico. Além disso, permitem que você corrija a cor de um objeto virtual para que ele se integre com mais facilidade à cor geral de uma cena.
Configurar o modo AMBIENT_INTENSITY
para uma cena de formato de cena
Para usar AMBIENT_INTENSITY
com uma cena Sceneform, estenda a classe ARfragment
e modifique a configuração da seguinte maneira:
@Override
protected Config getSessionConfiguration(Session session) {
Config config = new Config(session);
config.setLightEstimationMode(Config.LightEstimationMode.AMBIENT_INTENSITY);
return config;
}