ProfilVase 1.0

Guillaume Duriaud

- 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. ♪

- Titre : ProfilVase 1.0

- Auteur : Guillaume Duriaud

- Parution : 18 octobre 2006

- Mise à jour : 9 novembre 2008

- Licence : Copyright ® 2006-2008 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 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

- JVCL 3.34

- ProLib 1.86

- GlScene 1.0.0.0714

- GraphicEx 9.9

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 tridimensionnelle 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 trois 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 six forms et une 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 vaisselier pouvant contenir six 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 deux 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'avait que deux voisins (toutes les courbes étant fermées). C'est pour cela que la préparation du profil était primordiale. 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.

Version

Date

Taille

Mode FTP

Mode HTTP de secours

Binaires 1.0

2006.11.01

2.54 Mo

binProfilVase1.0.zip

binProfilVase1.0.zip

Sources 1.0

2006.11.01

1.97 Mo

srcProfilVase1.0.zip

srcProfilVase1.0.zip