Adrien Auclair homepage |
Mes recherches portent sur la reconstruction 3d, notamment pour la vidéo-surveillance. Je travaille également sur la recherche de plus proche voisin dans des espaces à beaucoup de dimensions. Sur ces sujets, j'ai développé certains algorithmes sur le processeur graphique (GPU) en langage CUDA.
Images initiales | Surface 3D initiale (visual hull) | Surface 3D finale obtenue |
Une image d'un film de synthèse, avec certaines trajectoires dessinées. | Une reconstruction
3d de la voiture (le nuage de points est triangulé, texturé, et reprojeté sur une image du décor, avec sa boite englobante) |
Une image extraite d'un film. | Voiture 3D reconstruite (la partie droite est obtenue par symmétrie) |
Dans ce projet, on dispose d'une base de données d'image. Pour une image requete donnée, on souhaire savoir si notre base contient des images proches. Une application est de gérer les droits d'auteurs d'une base de photos. Nous avons créer une base de données de 160.000 images. Chaque recherche prends alors moins de 10 secondes.
Notre application retourne les résultats d'une
requete sous
forme d'une page web. Ci-dessous, un exemple de résultat.
Image requete | Capture d'écran de la page HTML des résultats |
Les images de notre base ont été récupérées au hasard sur internet. On voit ici que l'on retrouve meme une pochette de DVD qui contient une copie de l'image requete.
|
Water
effect Ce programme reprends le générateur de terrain précédent. Il ajoute la surface de l'eau à l'altitude 0. Les montagnes et le ciel (créé avec une skybox) se reflètent dans l'eau. De plus, l'eau est transparente et l'on voit le fond du terrain à travers. Les reflets sont obtenus en projetant la texture dans laquelle on a préalablement rendu la partie du monde au dessus de l'eau. Pour le rendu final, on commence par rendre le monde complet. Ensuite, on rajoute l'eau avec un coefficient alpha de transparence. J'ai aussi ajouté un modèle de vagues pour perturber les reflets dans l'eau de manière naturelle. Le fond vu par transparence est aussi perturbé. Octobre 2004 [ download ] [ download MFC version ] (Windows) |
|
Terrain
generator Ce programme génère un terrain aléatoire avec un bruit de Perlin. On mélange ensuite une texture d'herbe et une autre de pierre selon un coefficient dépendant de l'altitude. Enfin, à partir de la carte des altitudes, on enregistre la normale à la surface dans une texture. Cela permet au pixel shader (en HLSL) de simuler une ombre. A télécharger : le code c++ et le projet sous Visual C++ 6.0. Octobre 2004 [ download ] (Windows) |
||
Perlin
Noise texture generator Le bruit de Perlin est très utilisé pour générer des textures aléatoires à l'aspect doux, contrairement à un générateur de nombres aléatoires standard dont les résultats ne sont pas continus du tout. Le programme crée une texture Direct3D9 et la plaque sur une surface.A télécharger : le code c++ et le projet sous Visual C++ 6.0. Octobre 2004 [ download ] (Windows) |
||
HLSL Particles system Sur cet exemple, la pièce est illuminée par une lumière qui parcours un cercle au plafond. Les murs et le sol sont illuminés, avec bump mapping. Au centre, on trouve un système de particules. Ce système est rendu avec la technique de "point sprite". C'est à dire que chaque particule est un point texturé. Le vertex shader en HLSL fixe la taille des particules. Le pixel shader applique la texture. A noter que le pixel shader ne permet pas de faire bien grand chose avec la texture du point sprite (sur ma carte ATi RADEON 9600 Pro, on dirait qu'il y a un bug avec les point sprites, à vérifier). A télécharger : le code c++ et HLSL et le projet sous Visual C++ 6.0. Septembre 2004 [ download ] (Windows) |
||
HLSL
Shadow map Sur cet exemple, la scène est composée d'un tore dans une pièce. Une lumière tourne au dessus du tore. Le tore, les murs et le sol sont éclairés, texturés et on ajoute un effet de bump mapping. On rajoute en plus l'ombre du tore sur le sol. Pour cela, on rends une première fois la scène dans une texture en prenant la lumière comme point de vue. Cette texture est la shadow map. Ensuite, on projette cette texture sur le sol par la méthode de "projective texturing". Le pixel shader lit cette texture pour savoir si un point est éclairé ou non. A télécharger : le code c++ et HLSL et le projet sous Visual C++ 6.0. Septembre 2004 [ download (exe) (source) ] (Windows) |
||
HLSL
Bump Mapping Exemple de bump mapping réalisé avec le pipeline programmable de Direct3D 9. Les murs et le sol sont simples à réaliser. Pour le tore, on doit calculer la matrice de passage dans l'espace tangent. Les formules simples du tore donnent cette matrice par dérivation. A télécharger : le code c++ et HLSL et le projet sous Visual C++ 6.0. Septembre 2004 [ download (exe) (sources)] (Windows) |
||
Petit
jeu 2D |
||
Metaballs
3D |
||
Metaballs 2D Petit effet 2D très simple. Une metaball génère un potentiel proche d'elle, par exemple un fonction du style cos(d) où d est la distance au centre de la metaball. Il suffit de sommer tous les effets des metaballs pour obtenir une carte des potentiels. Octobre 2003 [ download ] (Linux) |
||
Projet
de wargame temps réel complet (Warcraft-like) L’IA permet au joueur de lancer une partie contre l’ordinateur. Les unités gérées par l’ordinateur vont défendre leurs bâtiments, ramasser de l’or, du bois, reconstruire les bâtiments détruits par le joueur…L’interface permet au joueur de sélectionner jusqu'à 10 unités et de leur assigner un ordre commun. Le code source a une taille d’environs 15000 lignes de code. La version à télécharger contient les 3 premières missions. Septembre - Décembre 2002 [ download ] (Windows) |
||
Bump
2D
|
Levenberg-Marquardt algorithm | MinPack C++ (BSD license) | levmar (GPL license) | |
Librairies graphiques | OpenGL | DirectX | VTK | Coin3D | |
Librairies d'interfaces | QT | FLTK | |
Librairie pour les traitements géométriques | GTS | CGAL | OpenMesh | |
Outils | CVS | Doxygen | Doxbar | KDevelop | NVIDIA tools | |
Modèles 3d | Stanford repository | The Stanford Bunny | |
Jeux vidéos | Gamasutra | GameDev | |
Programmation | STL | Design Patterns | Non-Software Examples of Software Design Patterns |
Auteur
: Adrien
Auclair
email : adrien dot auclair at
gmail dot com
Last update : 06/01/2008