ProfilVase 1.0
Date de publication : 18/10/2006 , Date de mise à jour : 20/08/2007
Par
Guillaume Duriaud (Page personnelle)
- Cette source permet de construire un vase en trois dimensions grâce à la bibliothèque glScene et Delphi à partir de son profil.
- Exemple d'utilisation d'utilisation de la bibliothèque GlScene et de la classe TGlRevolutionSolid.
- Développement de quelques algorithmes de traitement d'images.
I. Prérequis
II. Description
III. Captures d'écran
IV. Source
V. Téléchargement
I. Prérequis
Voici les langages et bibliothèques utilisés pour compiler la release 1.0 de ProfilVase:
Langage
- Delphi 7 édition personnelle
Bibliothèques
II. Description
J'ai développé cette application à l'occasion de la fête de la science 2003 pour une animation archéologique sur le travail de l'argile au cours
de la Préhistoire récente et organisée par le
Grat
(Groupe de Recherche Archéologique de Tournus). L'objectif de cette application était de construire une représentation
tridimentionnelle de vases à partir de leur profil, les vases étant supposés de révolution.
La prise en main de l'application est très simple. Ce logiciel a été conçu pour pouvoir être manipulé par des enfants d'une dizaine
d'années. Tout d'abord, on trace à l'aide de la souris dans un cadre blanc le profil d'un récipient.
Le logiciel se charge ensuite à partir de l'image obtenue d'afficher le récipient en 3 dimensions. D'autres fonctionnalités apparaissent alors
permettant de manipuler simplement le récipient et de se constituer un vaisselier.
J'ai depuis simplement fait une mise à jour afin que les sources puissent être compilées avec les dernières versions des bibliothèques externes utilisées.
En fin du document, vous trouverez les liens pour télécharger l'application: soit le zip des sources (
Sources 1.0) soit simplement le zip
de l'application compilée (
Binaires 1.0). Dans ce dernier cas, une fois le fichier dézippé, il vous suffit d'exécuter le fichier ProfilVase.exe
III. Captures d'écran
IV. Source
Voici quelques explications qui vous permettront de voir rapidement où ont été les enjeux de la réalisation du logiciel.
Le code source est constitué de 6 forms et 1 unité, le tout atteignant moins de 2000 lignes de code:
- FormTitre: paqe de présentation
- FormInstruction: page explicative de l'utilisation de l'application
- FormProfil: feuille pour tracer le profil du vase
- FormVase: page de visualisation du vase en 3D
- FormVaisselier: page du vaisseliers pouvant contenir 6 vases
- FormSave: page pour sauvegarder le vaisselier
- GDDMonoPicture: unité de traitement d'images
Tout se joue dans les forms FormProfil, FormVase et l'unité GDDMonoPicture.
Les autres fichiers sont relativement courts et d'une lecture très aisée. Les explications sont en général assez brèves.
Pour GDDMonoPicture qui traite d'images binaires (valeur des
pixels 0 ou 255) ou en niveau de gris, de petits dessins suffisent en général à comprendre les algorithmes.
Pour FormProfil,
la seule procédure ButtonValiderClick est un peu compliquée mais des commentaires détaillent les différentes parties du traitement.
L'objectif est simplement de modifier l'image tracée à l'écran pour récupérer une image dont les pixels appartiennent tous au contour extérieur
de l'objet (et donc à son profil). Le programme considère ainsi que toute forme est pleine (ainsi un cercle est considéré comme un disque).
Le profil devait être le plus "propre" possible pour ensuite être utilisé simplement dans les fonctions générant le solide de révolution.
Pour FormVase, il vous faudra vous concentrer en particulier sur les procédures CreerVase et CreerVaseBackup
qui développent 2 algorithmes différents pour déterminer les points du profil qui serviront à effectuer la reconstitution 3D. Cette reconstitution est
alors automatiquement réalisée dans l'objet TGlRevolutionSolid de la bibliothèque glScene. CreerVaseBackup se contente de récupérer,
sur le profil, à intervalle régulier le nombre de points définis par l'utilisateur pour créer l'objet 3D. CreerVase recherche quant à lui
les points du profil qui minimise l'erreur (en distance) entre le profil réel et les segments de droites générés par les points
sélectionnés sur le profil. La grande difficulté a été le parcours du contour du profil, les points de ce profil devant former une courbe où chaque
point du profil n'avaient que 2 voisins (toutes les courbes étant fermées). C'est pour cela que la préparation du profil était primordial.
Il arrive ainsi parfois (heureusement très rarement) que l'on obtienne une reconstitution 3D farfelue à cause d'un profil pas tout à fait propre où
des pixels mal placés ont perturbé le parcours de celui-ci.
V. Téléchargement
Vous pouvez télécharger les sources complètes ou simplement l'application compilée.


Copyright © 2006-2007 Guillaume Duriaud. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.