sequential point tree carsten dachsbacher christian vogelgsang marc stamminger présentation :...

27
Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Upload: fabrice-thevenet

Post on 03-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Sequential Point Tree

Carsten Dachsbacher

Christian Vogelgsang

Marc Stamminger

Présentation :

Thomas BARTHES

Matthieu CORVAISIER

Page 2: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Plan• Rendu par points, objectifs et mise en œuvre • Point Trees

– Sequential Point Trees– Point Tree Hierarchy

• Approximations et erreurs• Du récursif au séquentiel

– Rendu récursif– Séquentialisation– réarrangement

• Extensions– Rendu hybride point/polygone– Couleurs et textures

• Performances• Conclusion

Page 3: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Rendu par points

• Avantages:– Très efficace pour le rendu d’objets complexes– Gestion facile et pratique du niveau de détails

• Inconvénients:– Sélection des points effectuée par le CPU– La puissance du GPU n’est donc pas exploitée

• Objectif: décharger un maximum de calculs depuis le CPU vers le GPU

Page 4: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Mise en œuvre

• Obtenir une version séquentielle d’un arbre de points hiérarchique

• Traitement de cette liste par le GPU:– Sélection du niveau de détails – Affichage de splats figurant les points

Page 5: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Sequential Point Tree

Page 6: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Point Tree Hierarchy

• Construction d’un octree représentant la hiérarchie des points uniformément répartis sur l’objet

• Calcul des moyennes des positions et des normales des points intermédiaires

• Chaque nœud représente un morceau de l’objet• Un nœud équivaut à l’union de tous ses fils

• Structure de données d’un nœud:– Point central p– Normale moyenne n– Diamètre de la sphère englobante d

Page 7: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Approximation d’un nœud par un disque

• Chaque nœud de l’arbre peut être approximé par un disque– Même point central– Même normale– Même diamètre

• L’erreur d’approximation est décrite par deux valeurs– Erreur perpendiculaire eP– Erreur tangentielle eT

Page 8: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Erreur perpendiculaire (1)

• eP = distance minimum entre 2 plans parallèles au disque qui englobent tous les disques fils

Page 9: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Erreur perpendiculaire (2)

• Espace image: projection d’une erreur image ëP

• ëP = eP * sin(v,n) / |v|

• ëP: varie en fonction de sinus(v,n)– v: vecteur du point de vue– n: vecteur normal du disque

• ëP rend compte du fait que les erreurs le long des silhouettes sont moins acceptables (discontinuités)

• Plus le point de vue est éloigné, plus ëP est faible

Page 10: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Erreur tangentielle (1)

• eT = diamètre du disque père – largeur minimale de l’ensemble des disques fils

• Mesure si un disque parent couvre une trop grande surface• Conséquences: erreurs sur les bords des surfaces

Page 11: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Erreur tangentielle (2)

• Espace image: projection d’une erreur image ëT

• ëT = eT * cos(v,n) / |v|

• ëT: varie en fonction de cosinus(v,n)– v: vecteur du point de vue– n: vecteur normal du disque

• ëT rend compte du fait que les erreurs dans les plans faisant face au point de vue sont moins acceptables (trous)

• Plus le point de vue est éloigné, plus ëT est faible

Page 12: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Erreur géométrique

• Simplification: combinaison des erreurs perpendiculaire et tangentielle en une seule erreur géométrique

• eG = √(eP² + eT²)

• Espace image: projection d’une erreur image ëG

• ëG = eG / |v|

• ëG ne dépend plus de l’angle du point de vue

Page 13: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Rendu Récursif (1)

• Un objet est affiché par un parcours en profondeur de la hiérarchie de points

• Pour chaque nœud, l’erreur image ë est calculée

• Si ë dépasse un seuil acceptable ε, et si le nœud n’est pas une feuille fils parcourus récursivement

• Cas contraire affichage d’un splat de taille d/r (diamètre du nœud projeté dans l’espace image)

• ε défini par l’utilisateur

Page 14: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Rendu Récursif (2)

• Densité des points adaptée :– À la distance du point de vue: r– Aux propriétés locales de la surface

Page 15: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Séquentialisation (1)

• Problème : procédure récursive non adaptée pour un traitement séquentiel rapide par le GPU

• Solution : – réarranger l’arbre de données en une liste

– remplacer la procédure de rendu récursif par une boucle séquentielle parcourant cette liste

• Arrangement optimisé : toutes les entrées sélectionnées dans la liste sont regroupées dans un même segment

Page 16: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Séquentialisation (2)

• CPU: – Mémorise dans chaque nœud les valeurs rmin et rmax

– Stocke les nœuds dans une liste non hiérarchique

– Trie la liste en fonction des rmax

• GPU:– Test non récursif: r Є [rmin,rmax]

– Affichage

Page 17: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Séquentialisation (3)

Page 18: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Séquentialisation (4)

• Problème en cas de variation de r

Page 19: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Réarrangement

• Le segment de liste exhaustif est envoyé au GPU

• Le GPU effectue le test d’appartenance à [rmin,rmax]

• Test vérifié : point rendu par un splat de diamètre d/r

• Test non vérifié : point occulté (placé à l’infini)

• Pourcentage de points occultés : 10 à 40 % (dépend de la variation de r)

Page 20: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Rendu Hybride• Extension possible des sequential point trees :

– Parties de l’objet rendues par des points– Parties de l’objet rendues par des polygones

• But : sélection des polygones par le GPU

Page 21: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Couleur et Texture (1)

• Possibilité de mémoriser la couleur dans un nœud

• Couleur d’un nœud interne = moyenne de celle de ses fils

• Problème avec les grands splats : contours flous

• Obligation de reconsidérer l’erreur géométrique

• Solution : augmenter l’erreur de chaque point pour forcer l’affichage de petits splats

Page 22: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Couleur et Texture (2)

Page 23: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Performances (1)

• Matériel et logiciel : ATI Radeon 9700 avec DirectX

• Affichage :– Statues et arbres : sequential point trees– Sol, ciel et autres modèles : polygones (triangles)

• 77 millions de points envoyés par seconde au GPU, qui en affiche 50 millions après culling

• Textures et données géométriques sont stockées dans la mémoire de la carte graphique

Page 24: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Performances (2)

• Frame rates de l’ordre de 36 à 90 fps, avec une charge CPU de 5 à 15% sur un Pentium 2.4GHz

• Essais avec nouvelle NVIDIA NV30 résultats préliminaires, affichage possible de 80 millions de points par seconde après sélection par le GPU

• Modèles avec lumière dynamique– Illumination locale calculée dans le vertex shader– 60 millions de splats affichés par seconde après culling du GPU– vertex shader exécuté 85 millions de fois par seconde

Page 25: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

Conclusion

• Sequential point trees version séquentielle des point trees hiérarchiques

• Sélection du niveau de détails gérée quasi entièrement par le GPU, avec un simple vertex program

• Affichage effectif de 50 millions de points par secondes sur un GPU actuel, faible charge CPU (idéal pour jeux vidéos…)

• Extension proposée pour rendu hybride point/polygone, sans apparition d’artefacts

Page 26: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

(Et pour finir)

MAGNETO, SERGE…

(La page web pour télécharger l’article et la vidéo)

http://www9.informatik.uni-erlangen.de/Persons/Stamminger/Research/Research/spt

Page 27: Sequential Point Tree Carsten Dachsbacher Christian Vogelgsang Marc Stamminger Présentation : Thomas BARTHES Matthieu CORVAISIER

(Au cas où)