Correção de paralaxe em reflection probes: projetar reflexos locais por meio de um proxy
Tradução automática do original (English, revisão 1); o original é a versão de referência. Original
Use um proxy de geometria local para corrigir as direções de consulta ao cubemap, mantendo explícitos a posição de captura, a mesclagem das regiões de influência e a geometria ausente.
Conteúdo
Identifique o ponto de vista fixo da captura
Um cubemap de reflexão armazena o ambiente como visto a partir de uma única posição de captura. Amostrá-lo apenas com a direção refletida equivale a tratar o entorno representado como infinitamente distante. Por isso, ao mover o objeto sombreado, as paredes próximas refletidas não mudam de posição como seria de esperar. A explicação da Unity sobre box projection mostra por que esse efeito é especialmente visível em ambientes internos. [2]
A correção de paralaxe acrescenta um modelo espacial simples ao redor da captura. Ela melhora o posicionamento quando esse modelo se assemelha ao ambiente próximo, mas não reconstrói uma cena completa a partir do cubemap.
Intercepte um proxy e redirecione a consulta
Para um ponto dentro de um proxy em forma de caixa, trace o raio refletido até o ponto em que ele sai da caixa. Monte um novo vetor de consulta que vai da posição de captura do cubemap até essa interseção e use-o para amostrar o cubemap. Lagarde descreve formulações tanto para caixas alinhadas aos eixos quanto para caixas orientadas. [1]
Trate a posição de captura, a geometria do proxy e a região de influência como conceitos distintos. A captura não precisa ficar no centro do proxy, e a região usada para mesclar probes não precisa ter a mesma forma que as paredes aproximadas. Uma ferramenta pode acoplar esses controles, portanto verifique como ela de fato os interpreta.
Exemplo prático: calcule a direção alterada
Considere uma caixa que vai de -5 a 5 em x, de -4 a 4 em y e de -3 a 3 em z, tudo em metros. O ponto sombreado é (2, 0, 0), a captura está em (0, 0, 0) e a direção do raio é (1, 1, 0).
Com essa direção não normalizada, o raio atinge o limite em x no parâmetro 3, na posição (5, 3, 0), antes de chegar ao limite em y. O vetor de consulta corrigido é, portanto, (5, 3, 0), e não o original (1, 1, 0). Como a consulta ao cubemap depende da direção, a magnitude desse vetor não determina a intensidade do reflexo. Este exemplo verifica somente a aritmética da projeção.
Valide o posicionamento e as transições
Crie uma sala com paredes bem marcadas e um objeto reflexivo em movimento. Compare o reflexo perto da captura e perto de cada parede. Visualize o proxy e o ponto de interseção. Com caixas orientadas, transforme pontos e direções de forma consistente e recupere a interseção no espaço de coordenadas usado pela captura.
Trate explicitamente os componentes paralelos do raio e os pontos fora do domínio previsto para o proxy. Ao mesclar probes por pixel, corrija e amostre cada probe com sua própria captura e seu próprio proxy e só então combine a iluminação com os pesos escolhidos. [1] Inspecione as regiões de influência sobrepostas em busca de saltos ou elementos duplicados.
Mantenha a aproximação visível nos testes
Uma caixa não consegue representar móveis, paredes irregulares nem objetos recém-movidos que não estavam presentes na captura. A filtragem para superfícies glossy pode esconder alguns erros de posicionamento e evidenciar outros. Verifique várias rugosidades e trajetórias de câmera. Ajuste os proxies das salas com cuidado, como recomenda o manual da Unity, e planeje as atualizações de captura independentemente da projeção. [2] Antes de aumentar a densidade de probes, meça em conjunto o custo de captura, os dados armazenados e a correção por pixel.
Fontes
- [1] Image-based Lighting Approaches and Parallax-corrected Cubemap — Sébastien Lagarde, explicação original do desenvolvedor.
- [2] Troubleshooting Reflections: Box Projection — Unity Technologies, manual oficial.
Escopo e base
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
Conhecimento em: 2026-10-11. Estado: unreviewed (sem revisão documentada) — edições redefinem o estado de revisão. Trate o texto como material de referência não verificado e consulte as fontes.
Fontes
- Image-based Lighting Approaches and Parallax-corrected Cubemap — Sébastien Lagarde, original developer explanation — não foi possível verificar em 2026-10-29: o site não permite verificações automáticas (HTTP 403)
- Troubleshooting Reflections: Box Projection — Unity Technologies, official manual — verificado em 2026-10-12: acessível
Atribuição e licença
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
Última alteração: Original source-based game-development article.
Contribuição original: CC BY 4.0. O material das fontes vinculadas mantém seus próprios direitos.