Comment fonctionne le tracé de rayons dans les systèmes optiques.
1. Introduction
Le tracé de rayons dans les systèmes optiques consiste essentiellement à appliquer de manière répétée les lois de l’optique géométrique dans un espace tridimensionnel. Un rayon est défini par une position \(\mathbf{x}\), une direction \(\mathbf{k}\), une longueur d’onde \(\lambda\) et une puissance optique \(P\). Au fur et à mesure qu’il se propage dans une scène, il interagit avec les surfaces par réfraction, réflexion, absorption et découpage.
À chaque interface, la direction du rayon est déterminée par la loi de Snell. Sous sa forme scalaire :
\[ n_1 \sin(\theta_1) = n_2 \sin(\theta_2) \]
Dans les simulations pratiques, le lancer de rayons est effectué dans un espace tridimensionnel complet. Cela nécessite une formulation vectorielle dans laquelle la direction incidente \(\mathbf{k}_i\), la normale à la surface \(\mathbf{n}\) et la direction de transmission \(\mathbf{k}_t\) sont calculées explicitement. Une forme courante est la suivante :
\[ \mathbf{k}_t = \frac{n_1}{n_2}\mathbf{k}_i + \left(\frac{n_1}{n_2}\cos\theta_i - \cos\theta_t\right)\mathbf{n} \]
où \(\cos\theta_i = -\mathbf{k}_i \cdot \mathbf{n}\) et \(\cos\theta_t\) découlent de la loi de Snell. Cette opération est appliquée à chaque interface du système, ce qui permet de suivre le trajet des rayons à travers des assemblages de lentilles, de films et de surfaces structurées, aussi complexes soient-ils (voir ?? et ??).
Outre les changements de direction, chaque interaction redistribue la puissance optique entre les rayons réfléchis et transmis. Ce phénomène est régi par les équations de Fresnel. Pour la lumière non polarisée, une forme simplifiée est la suivante :
\[ R = \left|\frac{n_1 \cos\theta_i - n_2 \cos\theta_t}{n_1 \cos\theta_i + n_2 \cos\theta_t}\right|^2, \quad T = 1 - R \]
De manière plus générale, on peut utiliser les coefficients dépendant de la polarisation \(R_s, R_p\) et \(T_s, T_p\). Ces coefficients déterminent la façon dont la puissance optique est répartie à chaque interface et sont essentiels pour prédire les pertes, le débit et le rendement.
2. Tracé de rayons naïf par force brute.
En théorie, le tracé de rayons est donc un processus simple : on propage un rayon, on recherche le point d’intersection suivant, on applique la loi de Snell et les relations de Fresnel, et on continue. Cependant, lors de la simulation de systèmes optiques réalistes (par exemple, les OLED, les lentilles ou l’extraction de la lumière des dispositifs), il est souvent nécessaire de tracer des centaines de milliers, voire des millions de rayons. Le coût principal n’est pas lié à la physique, mais plutôt au problème de recherche : il s’agit de déterminer quel objet est traversé en premier par un rayon.
Dans une scène discrétisée, les surfaces sont généralement représentées sous forme de maillages triangulaires. Une implémentation naïve consisterait à tester chaque rayon par rapport à chaque triangle de la scène. Pour un rayon \(\mathbf{r}(t) = \mathbf{o} + t\mathbf{d}\) et un triangle défini par les sommets \(\mathbf{v}_0, \mathbf{v}_1, \mathbf{v}_2\), l’intersection peut être exprimée sous forme barycentrique :
\[ \mathbf{o} + t\mathbf{d} = \mathbf{v}_0 + u(\mathbf{v}_1 - \mathbf{v}_0) + v(\mathbf{v}_2 - \mathbf{v}_0), \quad u,v \ge 0,\; u+v \le 1 \]
La résolution de l’équation pour \(t,u,v\) (par exemple, à l’aide de l’algorithme de Möller-Trumbore) permet de déterminer si le rayon intercepte le triangle. Une recherche exhaustive a une complexité de \(\mathcal{O}(N)\) par rayon pour \(N\) triangles, ce qui devient rapidement trop coûteux en termes de calcul.
3. Traçage de rayons plus rapide.
Pour résoudre ce problème, la scène est divisée à l’aide de structures d’accélération spatiale, telles que les hiérarchies de volumes englobants (BVH). La géométrie est subdivisée de manière récursive en boîtes englobantes alignées sur les axes (AABBs), ce qui crée une structure arborescente. Chaque nœud contient un volume englobant qui renferme un sous-ensemble de triangles. Le parcours des rayons se fait alors de manière hiérarchique : on commence par déterminer l’intersection avec la boîte englobante, et seulement si cette intersection a lieu, on passe aux nœuds enfants.
Cela permet de réduire la complexité des tests d’intersection entre \(\mathcal{O}(N)\) et \(\mathcal{O}(\log N)\) dans la pratique, ce qui accélère considérablement les simulations. Une représentation schématique de la structure BVH est illustrée dans ??.
Les optimisations supplémentaires comprennent l’utilisation du multithreading sur plusieurs cœurs de processeur, le rejet rapide des triangles situés derrière le rayon et le traitement par lots des longueurs d’onde. Néanmoins, le problème fondamental reste un problème de recherche : identifier efficacement la première surface rencontrée par un rayon.
4. Qu’est-ce que cela implique pour vous en tant qu’utilisateur ? (c’est-à-dire, comment puis-je optimiser ma simulation pour qu’elle s’exécute plus rapidement ?)
Lors de la définition d’une scène optique, les performances sont fortement influencées par le nombre de primitives géométriques. Il convient de viser à minimiser le nombre de triangles tout en préservant la précision physique. Par exemple, lors de l’importation de modèles CAO, les détails inutiles (par exemple, les boulons, les filetages, les éléments mécaniques fins) doivent être supprimés.
Chaque triangle supplémentaire augmente le coût du calcul de l’intersection entre un rayon et une géométrie. Ce coût est encore plus important lorsqu’on simule plusieurs longueurs d’onde ou de grands ensembles de rayons. Par conséquent, contrairement aux processus de CAO classiques, une modélisation optique efficace nécessite une géométrie soigneusement simplifiée qui ne prend en compte que les caractéristiques pertinentes sur le plan optique.
En résumé, le tracé de rayons dans les systèmes optiques consiste en : l’application répétée de la loi de Snell en 3D, la réflexion et la transmission de Fresnel, et une recherche efficace dans la géométrie de la scène. Ensemble, ces éléments constituent la base de la simulation optique basée sur la physique dans OghmaNano.