Que sont les harmoniques sphériques et les sondes lumineuses?

14

Que sont les harmoniques sphériques et les sondes lumineuses ? Quelle est leur utilité en infographie? Que font-ils exactement? J'ai entendu le mot harmoniques sphériques et sondes de lumière partout, des présentations de siggraph aux articles de blog.

Récemment, Matt Pettineo a publié une série de blogs en 6 parties sur eux, mais je ne comprends toujours pas ce qu'ils sont.

Est-ce une autre façon d'améliorer l'éclairage ambiant?

Arjan Singh
la source

Réponses:

11

Bases des harmoniques sphériques

lentrez la description de l'image ici

Une telle opération qui peut être effectuée efficacement dans SH est appelée " convolution ", ce qui signifie intégrer le produit de deux fonctions sphériques 2D sur une sphère. Il s'agit d'une opération courante dans les calculs d'éclairage, par exemple une des fonctions pourrait être votre éclairage incident et une fonction le BRDF. Lorsqu'elle est représentée comme SH, cette opération est simplement le produit scalaire de deux vecteurs de coefficient SH.

Une autre opération intéressante est la possibilité d'effectuer un filtrage passe-bas efficace. Parce que SH est représenté dans le domaine fréquentiel, il s'agit simplement de mettre à l'échelle ou de mettre à zéro certains des coefficients SH. Par contre, certaines autres opérations peuvent être difficiles à effectuer dans SH par rapport au domaine spatial, par exemple si vous voulez faire pivoter une fonction représentée comme SH, cela peut devenir assez cher pour SH d'ordre supérieur. Cela dépend donc vraiment du problème s'il peut être exécuté en SH ou non.

SH est généralement utilisé pour représenter uniquement les fonctions à basse fréquence (c'est-à-dire les fonctions changeant en douceur) car les fréquences plus élevées nécessitent d'augmenter la quantité de stockage (coefficients SH) et de traitement. C'est pourquoi vous ne voyez pas SH utilisé par exemple pour remplacer les réflexions spéculaires sur les surfaces brillantes. Il existe également des harmoniques sphériques zonales , qui peuvent être utilisées pour réduire le stockage et le calcul des fonctions 2D qui sont symétriques en rotation autour de l'axe z, en stockant simplement les éléments diagonaux de la matrice de coefficients SH. Les harmoniques hémisphériques peuvent également être utilisées si vous avez uniquement besoin de gérer des fonctions hémisphériques (également courantes en éclairage) avec l'avantage de pouvoir représenter des fréquences similaires à SH avec moins de coefficients.

Une opération que vous devez également effectuer est la "projection SH" pour transformer les données du domaine spatial en SH. Vous pouvez effectuer cette opération en effectuant une convolution de données de domaine spatial avec des fonctions de base SH. Une propriété intéressante de SH est que, contrairement aux représentations de domaine spatial, SH ne souffre pas d'alias, donc vous n'avez pas d'artefacts d'alias même lors de la projection vers SH de très faible ordre.

Sondes lumineuses

Maintenant que vous comprenez les opérations et propriétés de base de SH, nous pouvons penser à comment les appliquer à GI. Une sonde lumineuse enregistre la quantité de lumière provenant de toutes les directions jusqu'au point où se trouve la sonde. Il s'agit d'une fonction 2D sur une sphère et peut être représentée comme SH (ou 3 fonctions SH pour le rouge, le vert et le bleu). Selon la quantité de détails d'éclairage que nous voulons encoder dans les sondes, nous pouvons choisir l'ordre SH.

Pour les sondes lumineuses qui ne sont utilisées que pour un éclairage diffus lambertien, un SH assez faible est suffisant car la convolution est effectuée avec un cosinus-lobe, qui peut être représenté avec un SH d'ordre 2 (9 coefficients). Les coefficients SH pour les sondes lumineuses peuvent être générés simplement en affichant un cubemap au point de la sonde, puis en le projetant sur SH.

Lors du rendu de la géométrie, peu de sondes lumineuses les plus proches sont prises et leurs résultats sont interpolés pour obtenir la fonction d'éclairage incident dans un point de l'espace. Cela peut être fait par exemple en interpolant directement les coefficients SH des sondes proches, puis en effectuant la convolution avec le lobe cosinus orienté normal des pixels dans le domaine SH.

JarkkoL
la source
Quels sont les avantages de l'utilisation de cette méthode par rapport à l'éclairage basé sur une image plus simple?
Arjan Singh
Vous pouvez avoir un éclairage basse fréquence de meilleure qualité avec des exigences de stockage et de performances similaires à celles de l'utilisation de cubemaps.
JarkkoL
16

Harmoniques sphériques

f(x)f(θ,ϕ)

Si vous ne savez pas ce qu'est une transformée de Fourier, vous devez savoir avant de comprendre les harmoniques sphériques. La transformée de Fourier vous permet de représenter un signal sous la forme d'une série d'ondes sinus et cosinus, chacune ayant deux fois la fréquence de la dernière. Autrement dit, vous pouvez représenter le signal comme sa moyenne, plus une onde sinusoïdale dont la longueur d'onde est la même que la longueur du signal, plus une onde sinusoïdale deux fois cette longueur d'onde, et ainsi de suite. Parce que la transformée de Fourier vous fixe à ces longueurs d'onde particulières, il vous suffit d'enregistrer l'amplitude de chacune.

Nous utilisons couramment des transformées de Fourier pour représenter des images, qui ne sont que des signaux numériques 2D. C'est utile parce que vous pouvez jeter certaines des ondes sinusoïdales (ou réduire la précision avec laquelle vous stockez leur amplitude) sans changer de manière significative à quoi ressemble l'image aux yeux humains. OTOH, jeter les pixels change beaucoup l'apparence de l'image.

Dans un signal échantillonné comme une image, si vous utilisez le même nombre d'ondes sinusoïdales qu'il y avait d'échantillons (pixels) dans l'image d'origine, vous pouvez reconstruire l'image exactement, donc une fois que vous commencez à éliminer les fréquences, vous faites le l'image prend moins de stockage.

Les harmoniques sphériques sont exactement comme les transformées de Fourier, mais au lieu des ondes sinusoïdales, elles utilisent une fonction sphérique, donc au lieu de fonctions linéaires (telles que les images), elles peuvent représenter des fonctions définies sur la sphère (telles que les cartes d'environnement).

Sondes lumineuses

Tout comme la façon dont une image standard enregistre toute la lumière atteignant un certain point à travers le plan de l'image, une sonde lumineuse enregistre toute la lumière atteignant un certain point de toutes les directions. Ils sont d'abord sortis des effets de film. Si vous souhaitez ajouter un objet généré par ordinateur à une scène du monde réel, vous devez être en mesure d'éclairer l'objet synthétique avec l'éclairage du monde réel. Pour ce faire, vous devez savoir quelle lumière atteint le point de la scène où sera l'objet synthétique. (NB Bien que je dis "éclairage", vous enregistrez une image de toute la lumière, donc elle peut également être utilisée pour les reflets.)

Parce que vous ne pouvez pas avoir un appareil photo avec un objectif sphérique qui enregistre toute la lumière atteignant un seul point de toutes les directions, vous enregistrez cela en prenant des photographies normales d'un miroir sphérique, puis en reprojetant les images sur une sphère.

En dehors des effets de film, il est plus courant d'utiliser des sondes lumineuses générées à partir d'une scène artificielle. Imaginez que vous ayez un algorithme coûteux pour calculer l'illumination globale (GI) dans une scène, et que vous avez également des objets plus petits qui se déplacent dans cette scène (comme un niveau de jeu avec des joueurs). Vous ne pouvez pas exécuter l'intégralité de l'algorithme GI chaque fois qu'un objet se déplace, vous l'exécutez donc une fois avec la scène statique et enregistrez les sondes de lumière prises à différents points du niveau. Ensuite, vous pouvez obtenir une bonne approximation de l'IG en allumant le lecteur avec la sonde de lumière dont il est le plus proche.

Les utiliser ensemble

En règle générale, vous souhaitez filtrer les arêtes vives dans votre éclairage global de toute façon, vous voulez donc un moyen de les représenter qui est compact et vous permet de jeter facilement les hautes fréquences. C'est à cela que les harmoniques sphériques sont vraiment bonnes! C'est pourquoi vous entendrez souvent ces deux termes ensemble.

Vous calculez des sondes lumineuses avec votre algorithme GI coûteux - généralement dans l'outil de conception de niveau, ou peut-être une fois par seconde (au lieu d'une fois par image) si vous souhaitez inclure vos objets dynamiques dans. Vous les stockez à moindre coût avec des harmoniques sphériques - 16 flotteurs suffisent pour un éclairage de assez haute qualité, mais pas de reflets. Ensuite, pour chaque objet dynamique que vous souhaitez éclairer, vous choisissez la sonde de lumière la plus proche (ou interpolez plusieurs linéairement ensemble) et l'utilisez comme entrée uniforme ou constante dans votre shader. Il est également courant d'utiliser des harmoniques sphériques pour représenter les données d'occlusion ambiante, et il est très bon marché de le faire avec la sonde de lumière, bien qu'il y ait une certaine complexité autour des fonctions harmoniques sphériques rotatives.

Dan Hulme
la source
Excellente réponse, cela a vraiment tout clarifié! Donc, fondamentalement, les sondes lumineuses sont un moyen facile de calculer l'éclairage des personnages en mouvement, ce qui nous empêche de recalculer l'IG pour la scène entière. D'autre part, les harmoniques sphériques sont utilisées pour filtrer les hautes fréquences. (Corrigez-moi si je me trompe, j'essaie juste de voir si j'ai la bonne compréhension).
Arjan Singh
"si vous utilisez le même nombre d'ondes sinusoïdales qu'il y avait d'échantillons (pixels) dans l'image d'origine, vous pouvez reconstruire l'image exactement", en fait, ce n'est pas vrai. Par exemple, l'onde carrée nécessite un nombre infini de fréquences pour une représentation exacte
JarkkoL
@JarkkoL Bien sûr, une véritable onde carrée fait. Mais si vous l'avez discrétisé par échantillonnage, vous n'avez besoin que du même nombre de fréquences pour faire l'erreur moins que l'erreur d'échantillonnage. C'est un résultat pratique du théorème de Nyquist (que la fréquence la plus élevée présente dans le signal échantillonné est la moitié de la fréquence d'échantillonnage).
Dan Hulme
Ah oui, c'est vrai bien sûr. Je suppose que vous avez besoin de la moitié des résultats du domaine fréquentiel, mais complexe (vs réel). Ou utilisez DCT et domaine réel avec deux fois la fréquence de DFT.
JarkkoL
5

Harmoniques sphériques

Disons que vous avez des données dans un tableau mais que vous souhaitez représenter ces données avec un nombre d'octets inférieur.

Une façon de le faire pourrait être d'exprimer les données en tant que fonction au lieu des valeurs brutes.

y=ax+b

ab

Le problème est qu'une équation linéaire est probablement une mauvaise approximation de vos données.

y=ax2+bx+c

ababc

Nous avons augmenté le stockage en mémoire et également la complexité de calcul du stockage et de la récupération de vos données, par rapport à l'équation linéaire, mais c'est une meilleure approximation de votre tableau de données. Nous pourrions également le porter à une fonction cubique ou supérieure. Augmenter la commande augmente le stockage, le calcul et la précision.

f(x)

Tout comme dans les exemples ci-dessus, vous pouvez utiliser une fonction d'harmoniques sphériques d'ordre inférieur pour créer quelque chose avec un stockage inférieur et un calcul inférieur pour calculer les données, mais également une précision inférieure.

D'un autre côté, vous pouvez augmenter la commande et obtenir une meilleure approximation de vos données d'origine, mais au prix de plus d'espace de stockage requis et de plus de calculs nécessaires pour calculer un point de données.

À l'extrême, vous pouvez utiliser autant de termes harmoniques sphériques que vous aviez d'échantillons dans votre tableau, puis vous pouvez reconstruire exactement votre tableau d'origine, mais vous passez beaucoup de calculs à le faire et vous utilisez tout autant d'espace de stockage comme vous avez commencé.

Pour cette raison, dans la pratique, les fonctions d'harmoniques sphériques n'offrent pas beaucoup d'avantages si vous devez représenter des détails fins - comme une réflexion nette sur une sphère - mais elles peuvent être bon marché pour des données qui n'ont pas de détails fins (données qui ne pas beaucoup de contenu haute fréquence). Ils sont également utiles pour effectuer des calculs dans le domaine fréquentiel comme l'analyse spectrale ou la convolution.

L'une de ces données qu'ils sont bons à stocker est "l'irradiance" qui est la quantité de lumière atteignant un point provenant d'autres directions. Il a tendance à être un peu flou, ce qui signifie qu'il n'a qu'un contenu à basse fréquence et est un bon candidat pour être stocké dans une fonction d'harmoniques sphériques.

Je vais laisser l'explication des sondes lumineuses à une autre personne: p

Alan Wolfe
la source
Pourquoi le vote négatif? : P
Alan Wolfe
Ce n'est pas vrai que les harmoniques sphériques ne sont pas bons pour représenter des détails fins. Comme la transformée de Fourier, ils peuvent reconstruire le signal d'origine exactement si vous gardez toutes les fréquences. C'est juste qu'ils facilitent l'économie d'espace en jetant les hautes fréquences si vous n'en avez pas besoin.
Dan Hulme
Et désolé, je pensais qu'après avoir voté, il était difficile de revenir en arrière pour une seule revendication douteuse dans une réponse par ailleurs utile, mais mon vote a été bloqué au moment où j'ai réfléchi.
Dan Hulme
Ah. Oui, c'est possible, de la même manière qu'il est possible de représenter n'importe quel ensemble de données avec un polynôme, mais en pratique, les deux sont de mauvais choix pour avoir besoin d'ajustements serrés à de nombreux points de données. Avec un polynôme, vous avez besoin de N termes d'une fonction d'ordre N pour s'adapter exactement à N points de données par exemple, ce qui en fait un choix pire qu'un simple tableau car c'est un calcul, pas une recherche, pour obtenir un point de données. De même, en termes pratiques, les harmoniques sphériques sont un mauvais choix pour les données sphériques avec un contenu haute fréquence que vous souhaitez conserver. Ce n'est pas un bon choix dans ces situations.
Alan Wolfe
C'est vrai si vous voulez pouvoir reconstruire des échantillons individuels, mais toutes les utilisations de Fourier ne nécessitent pas cela - de même pour toutes les utilisations de SH. Si vous allez faire une convolution, il est beaucoup moins cher de le faire dans le domaine fréquentiel avant de revenir aux échantillons. Pourriez-vous me proposer une modification pour rendre cela plus clair dans votre réponse, après avoir terminé ma propre réponse?
Dan Hulme