Rapport de stage de L3 au LIRIS Vincent Nivoliers
4096 repr´esente 212, donc pour adresser une texture carr´ee de 4096 de cˆot´e, il est n´ecessaire d’avoir
24 bits de mantisse, pas de chance.
2.3 Partitions spatiales
Pour limiter la recherche d’intersection, les objets sont organis´es selon leur r´epartition dans
l’espace, afin de pouvoir rapidement isoler l’objet cr´eant l’intersection. Les objets ´etant pour la
plupart d´ecris sous forme d’un maillage de triangles, on consid´erera par la suite que tous nos
objets sont des triangles.
2.3.1 Partitions classiques
Grilles :
Une premi`ere approche consiste `a discr´etiser la sc`ene par une grille r´e-
guli`ere et r´epartir les objets dans des “voxels”. Cette structure permet
tout d’abord de calculer facilement ´etant donn´e un rayon les voxels
travers´es par le rayon et de les ´etudier dans l’ordre de parcours du
rayon. De plus, elle est particuli`erement adapt´ee aux sc`enes dyna-
miques, car il est facile de transf´erer un objet d’une case `a une autre.
Une approche plus r´ecursive est la structure de grilles hi´erarchiques
qui consistent `a imbriquer des grilles les unes dans les autres avec
une r´esolution de plus en plus fine, aux endroits o`u la sc`ene est plus
complexe.
Arbres :
Les Arbres sont uns structure purement r´ecursive. On en distingue
principalement deux types : ceux qui cherchent `a diviser le nombre
d’objets, et ceux qui cherchent `a partitionner l’espace. Les r´esultats
actuels tendent `a prouver que les partitions spatiales sont plus effi-
caces, car un rayon ne peut se trouver dans deux nœuds `a la fois. Le
principe est de diviser la sc`ene par des plans de coupe et de r´epartir
les objets de part et d’autre. La construction d’un arbre optimal ´etant
trop complexe, on utilise des heuristiques pour le construire de fa¸con
intelligente. Je me suis int´eress´e lors de mon stage `a la structure de
kd-tree.
2.3.2 Structure de Kdtree
La construction d’un Kdtree suit la logique suivante : au d´epart, tous les ´el´ements de la sc`ene
sont regroup´es dans une boˆıte englobante. Cette boˆıte correspondra `a la racine de l’arbre. `
A chaque
´etape, on s´electionne un plan de coupe selon des crit`eres qui seront expliqu´es par la suite, et on
coupe la boˆıte initiale en deux. Les triangles sont r´epartis de part et d’autre de `a ce plan, et des
deux cˆot´es s’ils sont coup´es par le plan. On obtient ainsi deux boˆıtes plus petites, et disjointes,
que l’on va pouvoir subdiviser `a nouveau. Les plans de coupe sont `a priori quelconques, mais dans
les impl´ementations actuelles, ils sont align´es sur les trois axes xyz, ce qui rend la construction et
le parcours pour un rayon plus simple. Le crit`ere d’arrˆet est d´efini selon des heuristiques, mais le
principe global est le suivant : on d´efinit tout d’abord une profondeur maximale limite, ainsi qu’un
nombre de triangles maximum par feuille.
Sur la CPU, le principe de parcours est simple, `a chaque nœud, on parcours les fils dans l’ordre
de travers´ee du rayon. Lorsqu’on arrive `a une feuille, on parcourt la liste des triangles qu’elle
contient, et on regarde si l’un d’eux coupe le rayon. Les nœuds ´etant parcourus dans l’ordre de
travers´ee, la premi`ere intersection trouv´ee correspond `a la plus proche de l’origine du rayon, et
interrompt le d´eroulement de la recherche. Dans le cas d’un lancer de rayon sur carte graphique
ce type de parcours n’est plus possible, ´etant donn´e qu’il se base sur la pile du processeur pour
savoir `a quel nœud il doit remonter dans l’arbre en cas d’´echec, et pour r´ecup´erer les r´esultats des
calculs pr´ec´edents. L’algorithme de parcours ne peut donc pas ˆetre le mˆeme, ce qui nous m`ene au
Encadrants : B. P´eroche, J.C. Iehl 5