Correction de parallaxe des reflection probes : projeter les réflexions locales à travers un proxy
Traduction automatique de l'original (English, révision 1) ; l'original fait foi. Original
Utiliser un proxy géométrique local pour corriger les directions de lecture d'une cubemap, en gardant explicites la position de capture, le mélange des zones d'influence et la géométrie manquante.
Sommaire
Identifier le point de vue de capture fixe
Une cubemap de réflexion stocke l'environnement tel qu'on le voit depuis une seule position de capture. L'échantillonner uniquement avec une direction réfléchie revient à considérer l'environnement représenté comme infiniment distant. Lorsque l'objet shadé se déplace, les murs proches reflétés ne changent alors pas de position comme on s'y attendrait. L'explication d'Unity sur la box projection montre pourquoi ce défaut est particulièrement visible en intérieur. [2]
La correction de parallaxe ajoute autour de la capture un modèle spatial simple. Elle améliore le positionnement lorsque ce modèle ressemble à l'environnement proche ; elle ne reconstruit pas une scène complète à partir de la cubemap.
Intersecter un proxy et rediriger la lecture
Pour un point situé à l'intérieur d'un proxy en boîte, on trace le rayon réfléchi jusqu'à son point de sortie de la boîte. On construit ensuite un nouveau vecteur de lecture allant de la position de capture de la cubemap à cette intersection, puis on l'utilise pour échantillonner la cubemap. Lagarde décrit des formulations pour une boîte alignée sur les axes et pour une boîte orientée. [1]
Il faut garder distinctes, sur le plan conceptuel, la position de capture, la géométrie du proxy et la zone d'influence. La capture ne se trouve pas forcément au centre du proxy, et la zone servant à mélanger les probes n'a pas forcément la même forme que les murs approchés. Un outil peut coupler ces réglages ; il faut donc vérifier comment il les interprète réellement.
Exemple détaillé : calculer la direction modifiée
Soit une boîte s'étendant de -5 à 5 en x, de -4 à 4 en y et de -3 à 3 en z, le tout en mètres. Le point shadé est (2, 0, 0), la capture est (0, 0, 0) et la direction du rayon est (1, 1, 0).
Avec cette direction non normalisée, le rayon atteint la limite en x au paramètre 3, à la position (5, 3, 0). Il n'a pas encore atteint la limite en y. Le vecteur de lecture corrigé est donc (5, 3, 0) et non le (1, 1, 0) d'origine. La lecture de la cubemap dépend de la direction ; sa norme ne détermine donc pas l'intensité de la réflexion. Cet exemple ne teste que l'arithmétique de la projection.
Valider le positionnement et les transitions
Créez une pièce aux murs clairement repérés et un objet réfléchissant mobile. Comparez la réflexion près de la capture et près de chaque mur. Visualisez le proxy et son point d'intersection. Pour les boîtes orientées, transformez les points et les directions de façon cohérente et retrouvez l'intersection dans l'espace de coordonnées utilisé par la capture.
Traitez explicitement les composantes parallèles du rayon et les points situés hors du domaine prévu du proxy. Pour mélanger les probes par pixel, corrigez et échantillonnez chaque probe avec sa propre capture et son propre proxy, puis combinez l'éclairage avec les poids choisis. [1] Examinez les zones d'influence qui se chevauchent pour détecter des sauts ou des éléments dédoublés.
Garder l'approximation visible pendant les tests
Une boîte ne peut pas décrire du mobilier, des murs irréguliers ni des objets récemment déplacés qui étaient absents lors de la capture. Le filtrage glossy peut masquer certaines erreurs de placement tout en en révélant d'autres. Vérifiez plusieurs valeurs de rugosité et plusieurs trajectoires de caméra. Ajustez soigneusement les proxies de pièce, comme le recommande le manuel d'Unity, et planifiez les mises à jour de capture indépendamment de la projection. [2] Mesurez ensemble le coût de capture, les données stockées et la correction par pixel avant d'augmenter la densité de probes.
Sources
- [1] Image-based Lighting Approaches and Parallax-corrected Cubemap — Sébastien Lagarde, explication originale du développeur.
- [2] Troubleshooting Reflections: Box Projection — Unity Technologies, manuel officiel.
Portée et fondement
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
Connaissances au : 2026-10-11. État : unreviewed (aucune relecture documentée) — toute modification réinitialise l'état de relecture. Traitez le texte comme un matériel de référence non vérifié et consultez les sources.
Sources
- Image-based Lighting Approaches and Parallax-corrected Cubemap — Sébastien Lagarde, original developer explanation — vérification impossible le 2026-10-29 : le site n'autorise pas les vérifications automatiques (HTTP 403)
- Troubleshooting Reflections: Box Projection — Unity Technologies, official manual — vérifié le 2026-10-12 : accessible
Attribution et licence
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
Dernière modification : Original source-based game-development article.
Contribution originale : CC BY 4.0. Les sources liées conservent leurs propres droits.