Surfels

Le concept de surfel [vB98,Oos98], une abréviation pour élément de surface ou encore voxel de surface, a été développé par [PZvG00]. Un surfel peut être vu comme un échantillon ponctuel de la surface d'un objet, composé d'attributs tels que : position, texture, normale, etc... . Comparé au nuage de points brut utilisé dans les méthodes de la section précédente, les surfels embarquent plus d'informations sur la surface échantillonnée, comme par exemple les coordonnées de texture, et sont liés au dispositif d'affichage. En particulier, la façon dont les surfels texturés sont filtrés dans l'espace de la texture avant d'être écrasés à l'écran par splatting différencie les méthodes à base de surfels, et dépend du dispositif d'affichage. Le filtrage de texture utilisé avec les surfels est le filtre par pondération moyenne elliptique (EWA Filter,''Elliptical Weighted Average'')[Hec89] qui donne de très bons résultats visuels mais à un lourd coût en temps de calcul[PZvG00,ZGPvB01]. Différentes méthodes accélérées de ce filtre ont été présentées [GP03,RPZ02], mais leurs performances ne sont pas suffisantes dans le cadre d'une application de simulation d'environnement 3D, où plusieurs modèles doivent être rendus simultanéments.

Dans [PZvG00], un objet est représenté par des échantillons de surface composés d'une profondeur, une normale et différents niveaux de couleurs précalculés (issus de la texture appliquée à l'objet) appelés ''surfels mip-map'' ainsi que d'autres informations. Les surfels sont regroupés dans une structure à base d'octree appelée LDC-tree1.12 . Cette structure est créée lors de la transformation de l'objet 3D en surfels et est basée sur trois vues orthographiques de l'objet.
Durant le rendu, une déformation 3D hiérarchique basée sur l'algorithme de McMillan (cf. section 1.4.3.2) est utilisée pour projeter les surfels dans le z-buffer. Le choix du noeud de l'octree contenant les surfels à projeter est fait en traversant l'octree de bas en haut et en estimant le nombre de surfels projetés par pixel. Ainsi on peut choisir de n'utiliser qu'un surfel par pixel (rendu rapide) ou plusieurs surfels par pixel (sur-échantillonnage de l'image pour une meilleure qualité visuelle). Afin de résoudre les problèmes de visibilité, les projections orthographiques des disques tangeant des surfels sont rastérisés directement dans le z-buffer. Une nouvelle méthode appelée ''visibility splatting'' est utilisée pour détecter les trous, bien que l'on puisse indifféremment utiliser le sur-échantillonnage, le splatting ou le push-pull. Le rendu s'effectue assez rapidement car la rastérisation et le placage de texture sont délocalisés dans la phase de précalcul.

Porquet Damien 2005-03-02