Le but de ce projet est de visualiser en 3D les bâtiments étudiés par Olivier Amadieu, thésard à l'I3S. Son travail consiste à détecter des bâtiments à partir de photos aériennes. Nous devons alors analyser ces données pour construire un objet 3D représentant l'ensemble des bâtiments, créer un moteur 3D pour " naviguer " dans le modèle reconstruit.
Afin de construire l'objet 3D qui représentera notre scène, nous allons utiliser l'algorithme des " Marching cubes ". Cet algorithme crée un objet constitué de points et de facettes à partir de fichiers de voxels. L'avantage de créer un tel objet est qu'il est facilement représentable par un logiciel de représentation 3D, que ce soit Visu(que nous avons développé en cours de synthèse d'image) ou bien par le moteur 3D écrit en OpenGl durant le projet.
Le principe des " Marching Cubes " est de subdiviser le volume où se situe notre surface en petits cubes ou parallélépipèdes. On progresse alors dans notre volume cube par cube et on vérifie si la surface intersecte chaque cube. Si c'est le cas on approxime la partie de la surface concourante avec le cube par une ou plusieurs facettes. Une étude approfondie nous montre qu'il ne peut y avoir que 256 " types " d'intersection qui peuvent se ramener à 15 cas si l'on joue sur les rotations et symétries. Pour se référer à cette table de possibilités, nous avons besoin de numéroter les arêtes et les sommets de nos cubes et de comparer la valeur de chaque sommet à l'isovaleur de la surface recherchée. La qualité du résultat obtenu dépend de la dimension des cubes (correspond à la résolution du maillage).
Dans la partie visualisation 3D de bâtiments à proprement parler, nous devons être capables de réaliser des transformations sur l'objet reconstruit telles que la rotation, la translation et le zoom, ceci afin d'obtenir des angles de vue très divers.
Pour effectuer les transformations nous avons décidé de faire bouger uniquement la caméra autour des bâtiments au lieu d'appliquer les transformations aux bâtiments eux-mêmes. Nous avons ensuite utiliser une demi sphère virtuelle au-dessus des bâtiments sur laquelle se déplace la caméra. En effet, seule la partie au-dessus du sol nous intéresse et il est inutile d'avoir une vue de dessous des bâtiments.
La rotation consiste donc à faire tourner la caméra sur la demi sphère tout en visant son centre. La translation est un déplacement dans le plan xOz(la translation selon l'axe des y étant inutile puisqu'on ne veut pas voir la ville par-dessous). Enfin, le zoom correspond à une augmentation ou une diminution du rayon de la demi sphère virtuelle.
Nous pouvons réaliser des animations à partir du schéma 2D de la ville sur lequel l'utilisateur sélectionne une suite de points qui définissent un chemin à parcourir. Nous pouvons ensuite visualiser ce parcours à l'aide de deux fonctionnalités implémentées : la promenade à l'intérieur de la ville et son survol.
Remarque : Il est aussi possible d'appliquer des textures sur les bâtiments reconstruits ainsi que de produire des effets de brouillard à l'intérieur de la ville.
Pour faciliter l'utilisation de notre logiciel des interfaces conviviales ont été réalisées. Une permet de le faire tourner sous WINDOWS et l'autre sous UNIX. Elles sont accompagnées d'un "README" expliquant les diverses fonctionnalités exploitabes.
Pour de plus amples renseignements sur notre projet, vous pouvez télécharger notre rapport en français ci-après ainsi que les deux versions …
Télécharger |
|||
|