Sous-sections


4.4 Analyse automatique du dessin

Comme nous l'avons exposé dans la section 3.4.4, le système doit interpréter les données reçues de l'utilisateur pour composer son modèle interne du dessin, utilisable en entrée par un noyau fonctionnel. Le dessin produit est assimilé à des flux continus de points, les traits. Ces traits vont être utilisés par les filtres d'analyse de SVALABARD pour structurer et nettoyer le dessin afin de produire une structure exploitable par un système de reconstruction 3D. La structuration du dessin revient à transformer les traits du dessin en objets de plus haut niveau (points et segments) et à en identifier les relations (extrémités de segments, segments concourants, etc.). Nettoyer le dessin consiste à simplifier les données et supprimer celles qui sont inutiles au noyau fonctionnel (élimination des traits des phases non constructives, fusion de points, etc.). Le résultat en est une représentation vectorielle (voir figure 4.23).

SVALABARD n'inclut pas de système d'interprétation de courbes (Bézier ou NURBS). Bien qu'il soit possible de dessiner tout type de traits et de surfaces, ceux-ci seront toujours représentés sous la forme de points et de segments. Rien ne garantit alors dans ce cas la justesse et la précision de l'interprétation ni, surtout, la possibilité d'obtenir une reconstruction 3D. Cette restriction est due aux limites actuelles du noyau mathématique de GINA qui ne permet que de reconstruire des objets polyédriques. Nous discuterons toutefois dans le chapitre suivant les possibilités d'évolution globales sur ce point.

Figure 4.23: Interprétation d'un dessin au trait. En rouge, l'interprétation vectorielle attendue d'un dessin pour sa reconstruction en 3D.
\includegraphics[width=450pt]{interpret}

Nous présentons dans cette section les principes et algorithmes que nous proposons, ainsi qu'un filtre de détection du contexte. Cet algorithme permet de filtrer les traits des différentes phases que nous avons proposées dans la section 3.3.3, et peut donc être utilisé dans un but de filtrage du dessin, mais aussi pour adapter l'interface à la phase courante de dessin (affichage de résultats ou propositions, démarrage de traitements, etc.).

4.4.1 Organisation des filtres de dessin

Beaucoup de travaux on été réalisés dans le domaine de l'interprétation de dessins (et plus généralement d'images). Nos travaux se situent dans un cadre bien particulier: l'interprétation temps réel, ou interactive. En effet, l'approche à adopter pour interpréter un dessin dont on connaît la chronologie n'est pas la même que pour une image terminée, sans indication temporelle (un atout indéniable pour l'extraction des propriétés du dessin). Généralement, la démarche interactive est la suivante:
  1. Capture des traits: reconnaître les différents points qui composent un trait.
  2. Caractérisation des traits: pour chaque trait, déterminer la (ou les) caractéristique(s) géométrique(s) qu'il représente (segment, courbe, etc.).
  3. Connection des extrémités: réduire l'imprécision du dessin à main levée en détectant les entités concourantes et connectant leurs extrémités.
Cette démarche générale est bien adaptée au dessin à main levé mais tout de même dans un cadre particulier: celui où le dessinateur trace des traits continus, d'une manière plus ou moins contrainte. Or, nous inscrivant dans un paradigme de dessin libre pour la conception, nous avons du compléter cette approche à plusieurs niveaux: l'élimination des traits inutiles au noyau fonctionnel (les phases non constructives), et l'assimilation et le nettoyage des traits de révision (démarche itérative).

Dès lors, nous avons inséré deux traitements supplémentaires, qui sont la détection du contexte de dessin et la fusion de segments. La détection du contexte, à partir des caractéristiques des traits et des segments construits, va permettre de ne conserver que les données des phases constructives. La fusion des segments va permettre de regrouper en un seul segment des traits repassés, révisés, rallongés. La figure 4.24 illustre donc la chaîne de traitement que nous proposons, ponctuées par le module de reconstruction 3D.

Figure 4.24: Filtres séquentiels de dessin.
\includegraphics[width=500pt]{conceptfilters}

Les traitements sont séquentiels et suivent un paradigme de flot de données. Chaque filtre est un module réactif, qui reçoit des données en entrée et transmet au module suivant les données reçues et les traitements produits. Nous parlons de traitements en cascade. Cet ordre obéit à la logique de traitement des traits et à une structuration progressive du dessin. Il est toutefois possible d'insérer simplement de nouveaux traitements dans la séquence, ou d'en changer l'ordre (en respectant toutefois leurs entrées-sorties), grâce à la modularité et la flexibilité des outils logiciels utilisées pour l'implémentation (voir les boîtes à outils ICON [Dragicevic et Fekete1999,Dragicevic et Fekete2004,Dragicevic2004b] et MAGGLITE dans la partie II de ce mémoire). Cette modularité est une partie de l'originalité de notre approche du traitement du dessin, contrairement à nombre d'approche ou il est ardu de modifier la séquence de traitement.

En outre, cette architecture permet l'intégration des traitements dans la description des interactions et des comportements du système, décrits dans le même paradigme de flot de données (voir le détail dans le chapitre 7 et la section 8.4.3). Ainsi, les filtres sont appliqués en temps réel et intégrés aux interactions du système. Cela confère une plus grande adaptabilité aux données reçues contrairement aux méthodes dites paresseuses qui repoussent les traitements en fin de saisie.

4.4.2 Création des traits

Nous définissons un trait comme une collection de points tracés sur la zone de dessin (trait sur une feuille). Leur saisie est initiée par une action (pression sur un stylet ou sur un bouton de périphérique), effectuée en déplaçant le pointeur et terminée par une autre action (relâchement du stylet ou du bouton), comme le montre la figure 4.25. Ce mode de saisie est identique au tracé d'un trait sur une feuille.

Figure 4.25: Dessin d'un trait.
\includegraphics[width=350pt]{trait}

Le premier filtre (cadre A de la figure 4.24) permet d'enregistrer les traits, collections de points, ainsi produits. Cet algorithme simple construit un trait en enregistrant les points qui suivent le déplacement de l'outil de dessin est utilisé. Pour chaque point, le système enregistre la position 2D, le temps et la pression (si le dispositif d'entrée le permet). L'algorithme effectue aussi un filtrage des points saisis, afin d'éliminer des points identiques ou trop proches dans un même trait. En effet, la fréquence d'échantillonnage4.5 de plus en plus élevée des périphériques d'entrée actuels entraîne la saisie de plusieurs points identiques, ou de points très proches qui ne seront ni significatifs visuellement, ni pour les algorithmes de traitement. Éliminer les points trop proche ne change donc pas l'aspect visuel des traits dessinés, et ne fausse pas les algorithmes de traitement (cela les rend même plus performants en terme de rapidité, sans perte de qualité de traitement). Ainsi, l'algorithme de création des traits propose un seuil réglable de filtrage, basé sur la distance entre deux points consécutifs.

Ce module de traitement réalise aussi un autre filtrage: celui des traits de construction. Nous avons constaté dans le chapitre 3 que les traits de construction n'étaient pas nombreux sur les dessins des sujets de notre étude. Toutefois, ils ne sont pas inexistants. Il est important de les détecter, car n'étant pas nécessaires au noyau fonctionnel du système, il n'est pas utile de leur appliquer tous les traitements. Ils doivent toutefois être propagés dans la séquence de filtrage, étant utilisés par l'algorithme de détection du contexte.

Cette détection est réalisée en regard de nos observations: ce sont de simples points (ou des traits de taille très réduite), ou des traits dont la pression est très faible. Ainsi, le filtre de création des traits permet de marquer les points seuls ainsi que les traits d'une taille ou d'une pression moyenne inférieures à des seuils. Nous avons réglés ces seuils de filtrage de manière expérimentale, à partir de notre propre expérience et des tests informels que nous avons réalisé avec quelques dessinateurs. Toutefois, ceux-ci sont facilement paramétrables et peuvent être adaptés à l'utilisateur.


4.4.3 Segmentation des traits

Afin de structurer le dessin et de l'adapter aux futurs traitements, il faut simplifier et décomposer les traits en un ou plusieurs segments formés uniquement de deux points (cadre B de la figure 4.24). Le principe est d'éliminer tous les points «inutiles» situés entre deux points critiques (appelés coins) qui formeront les extrémités des segments (voir figure 4.26).

Figure 4.26: Segmentation de traits. Un trait et son approximation.
\includegraphics[width=300pt]{segmentation}

On trouve beaucoup de ces méthodes de segmentation de traits, appelées aussi détection de coins, dans la littérature (vingt et une d'entre elles sont recensées et comparées dans [Rosin1997]), adaptées à différents cas d'utilisation (traitement d'images numérisées, traitement de vidéos, dessin temps réel, etc.). Nous avons utilisé et adapté la méthode proposée par Tevfik SEZGIN [Sezgin et al.2001], conçue pour le dessin en temps réel, qui combine les informations de vitesse et de courbure pour extraire les points critiques. La prise en compte de ces deux caractéristiques confère à cette méthode plus d'efficacité que celles basées uniquement sur l'une des deux, sans pour autant en diminuer la performance.
L'algorithme calcule la courbure et la vitesse en chaque point du trait. Une première approximation est composée à partir des deux points extrêmes du trait et du point de plus petite vitesse et de plus grande courbure. Ensuite, deux segmentations de plus en plus précises sont composées en ajoutant le point de plus petite vitesse pour l'une et celui de plus grande courbure pour l'autre. La meilleure des deux solutions, en terme de distance au trait original, est conservée et l'algorithme itère ainsi jusqu'à ce qu'un taux de précision fixé soit atteint.

Ce filtre reçoit donc un trait en entrée et produit en sortie un ou plusieurs segments, approximation du trait dessiné (il ne fait rien si le trait avait été marqué comme trait de construction). Il reste tout de même à éliminer certains segments ainsi construits, de façon à épurer le dessin pour ne garder que les données utiles à la reconstruction 3D.


4.4.4 Détection du contexte

Nous avons déterminé, dans la section 3.3.3, trois phases dans la tâche de dessin en perspective pour l'architecture. Nous proposons un traitement du dessin en temps réel pour la détection automatique de ces phases. Il y a deux objectifs à caractériser ces phases:
  1. Traitement du dessin. Dans l'optique d'obtenir une reconstruction 3D à partir des tracés de l'utilisateur, il n'est pas utiles de fournir au noyau de reconstruction les traits produits lors des phases de complétion et de style4.6.
  2. Adaptation des interactions et de l'interface. Un problème récurent des interfaces de dessin au stylet est une certaine incompatibilité de cette modalité avec les commandes «traditionnelles» des interfaces WIMP. Ainsi, devoir presser un bouton, ou changer d'outil, de visualisation en utilisant le stylet de dessin dans le mode de dessin peut provoquer des ruptures dans la tâche créative. Parallèlement, cela oblige aussi à contrôler à la fois la tâche et le fonctionnement du programme (modes), comme souligné dans [Nielsen1993]. Ce filtre de détection du contexte est une solution possible à ces problèmes, pour adapter l'interface et les outils d'interaction à la phase courante du dessin, c'est à dire opérer à des changements de mode implicites dans l'esprit du protocole introduit dans [Saund et Lank2003]

Ce filtre (cadre C de la figure 4.24) identifie automatiquement le contexte (ou phase de dessin) à partir des segments reçus, de la phase courante et des données collectées dans l'évaluation présentée dans la section 3.3. Ces phases, au nombre de trois et que nous avons nommées construction, amélioration et style, sont identifiées par un algorithme basé sur les résultats de notre étude et des heuristiques simples.

À la réception du premier trait d'un dessin, l'algorithme initialise le système en contexte « constructif» (un dessin débute toujours par cette phase). Ensuite, chaque nouveau trait est analysé à sa réception de manière à évaluer la possibilité de passer dans l'une des trois phases à partir de la phase courante. Cette évaluation repose sur le calcul d'un score pour chaque phase potentielle. Ces scores sont tout d'abord initialisés à la probabilité de transition depuis la phase courante vers celles qu'ils représentent. Ces probabilités ont été calculées d'après les données de notre étude (table 4.2).


Tableau 4.2: Probabilité des transitions entre contextes (%).
Phase Construction Amélioration Style
Construction 95 3, 5 1, 5
Amélioration 2, 5 96 1, 5
Style 4 4 92


Ensuite, les scores sont pondérés par l'analyse des propriétés du trait reçu, du contexte courant et des propriétés du dessin. Tout d'abord, nous avons constaté qu'il n'y avait pas de gribouillage en phase constructive dans les dessins de notre étude. Ces traits sont donc détectés et le score des phases d'amélioration et de styles sont pondérées en conséquence. Ensuite, si le trait reçu est marqué comme trait de construction (par le premier filtre), le score de la phase de construction est augmenté.

L'algorithme prend alors en compte la position du trait reçu par rapports aux traits précédemment dessinés en phase de construction. Appelons «zone constructive» la boîte englobante des traits de la phase de construction qui ont déjà été dessiné. Un trait recoupant ou «à l'intérieur» de cette zone constructive sera d'une phase constructive ou d'amélioration (de par la définition même et la caractérisation de ces phases). Cela induit une augmentation des scores des phases de construction et d'amélioration.

Les différentes pondérations appliquées aux scores de bases des phases de dessin potentielles lors du tracé d'un nouveau trait sont représentées dans le tableau 4.3. Ces valeurs ont étés déterminées par le calcul des pourcentages de tels traits dans les différentes phases des dessins de notre étude. Nous les avons ensuite corrigées pour obtenir un comportement cohérent lors de l'application de l'algorithme sur les dessins de l'étude.


Tableau 4.3: Pondération des scores selon le trait courant.
Trait courant Score de construction Score d'amélioration Score de style
Pression< 0, 1 +80    
Longueur< 20 +70    
Trait dans la zone «constructive» +100 +100  
Gribouillage   +100 +100


Enfin, l'algorithme analyse aussi les temps de pauses entre les traits afin d'appliquer les résultats que nous avons introduit sur l'augmentation des temps de pause lors d'un changement de phase. Le tableau 4.4 représente les pondérations des scores des différentes phases en fonction de la phase courante, pour des temps de pause considérés comme «longs». Ces valeurs sont proportionnelles aux moyennes calculées lors de notre étude, et de plus pondérées par le temps de pause. Bien sur, la notion de «long temps de pause» est subjective et ce seuil peut être configuré dans l'algorithme. Toutefois, les résultats de notre étude avaient mis en évidence des temps de pause variant de une à deux secondes lors des changements de phases. C'est pourquoi nous avons fixé ce seuil à deux secondes, par défaut.


Tableau 4.4: Pondération des scores selon les temps de pause.
Contexte courant Score de construction Score d'amélioration Score de style
Construction   +80 +15
Amélioration +75   +25
Style +50 +50  


Nous avons fixé ces différentes valeurs de pondération des scores de manière expérimentale, par l'analyse des dessins recueillis lors de notre étude. En appliquant l'algorithme sur ces dessins enregistrés, ainsi que sur de nouveaux dessins, nous avons pu ajuster ces valeurs expérimentales et ces heuristiques. Les résultats sont satisfaisants sur ces dessins exemples et sur de nouvelles réalisations en temps réel, mais nous n'avons toutefois pas encore évalué ses performances (en terme de «taux de réussite») dans des conditions réelles d'utilisation.

Notons enfin que cette méthode tire son efficacité de la combinaison de ces différentes heuristiques. En effet, l'utilisation conjointe des caractéristiques moyennes des traits et des phases de dessin (issues de l'étude préliminaire), ainsi que de quelques caractéristiques du dessinateur (temps de pause) permet de déterminer la phase courante. Il demeure toutefois des erreurs pouvant se révéler être une limitation évidente du système, occasionnant alors des interprétations erronées du dessin ainsi que des déroutes éventuelles de l'utilisateur. C'est pourquoi cette proposition d'algorithme reste un prototype, une preuve de faisabilité de la méthode, qui ne sera pas utilisée en l'état dans une évaluation globale du système. Il sera important, pour fiabiliser cette approche, d'étudier l'introduction de techniques de personnalisation et d'adaptation de l'algorithme à l'utilisateur et à son style de dessin (paramètres personnalisés et apprentissage).


4.4.5 Fusion des extrémités de segments

Lors de dessin a main levé avec des entrées discrètes (tablette graphique, souris, etc.), les extrémités des traits ayant un point commun coïncident rarement. Le système doit donc, afin de construire et affiner la structure du dessin après l'opération de segmentation, détecter et regrouper ces points (cadre D de la figure 4.24). Deux approches peuvent êtres mises en pratique pour réaliser ce traitement. Une première méthode est de contraindre la fusion de points concourants dès la saisie du dessin, c'est à dire lors du tracé des traits. Cette technique, dite de magnétisme ou snapping, contraint à débuter un trait à partir d'un point du dessin existant dès lors que le pointeur de l'outil est proche de ce point existant (à une distance inférieure à un seuil fixe). Cette technique d'interaction est très utilisée en dessin vectoriel, mais est inadaptée à notre approche de dessin libre à main levée car par trop contraignante. La seconde méthode consiste à appliquer le même principe de magnétisme entre les extrémités des segments du dessin, mais cette fois après leur tracé. Ainsi, lorsque le dessin est terminé et la segmentation des traits effectuée, les points dont la distance est inférieure à un certain seuil sont fusionnés. Cette méthode est déjà plus en accord avec les principes de notre système mais pose toutefois deux problèmes:

Nous proposons donc pour la fusion des extrémités des segments, une adaptation au traitement temps réel de la méthode de Moshe SHPITALNI [Shpitalni et Lipson1997]. Cette méthode est une amélioration de la fusion des points par seuil fixe. Le principe est de calculer, pour chaque extrémité de segment, une zone de tolérance dont la taille correspond à l'incertitude sur la position du point. Cette zone est un cercle dont le rayon est fonction de la distance entre le point et tous les segments du dessin. Des extrémités doivent être fusionnées lorsque chacune est située dans la zone de tolérance de l'autre (voir figure 4.27). Le barycentre du groupe de points remplace donc les points et les segments sont mis à jour (voir l'algorithme A.3 en annexe A).

Figure 4.27: Fusion de points. Deux extrémités à fusionner.
\includegraphics[width=200pt]{points}

L'efficacité de cette méthode est due en grande partie aux zones de tolérance adaptables, qui prennent en compte la densité du voisinage de chaque point, et donc les aspects locaux du dessin. Originalement conçue pour un dessin terminé, notre adaptation pour le traitement temps réel se situe au niveau du calcul des zones, pondéré par la résolution (taille globale) du dessin, et donc évoluant au cours du temps. De plus, l'algorithme ignore les cas extrêmes (zones maximales) en début de dessin, et nécessite un nombre minimal de segments avant de regrouper des points pour ne pas occasionner de fusions indésirables.


4.4.6 Fusion de segments

Nous avons déjà souvent exposé le principe des révisions dans le croquis de conception. Cela se traduit, en terme d'analyse de ce dessin, par des cas où le dessinateur a tracé plusieurs traits pour ne former qu'un segment (comme nous l'avions déjà montré avec le dessin de conception de Franck O. GEHRY, figure 3.13). Un trait peut en prolonger un autre, mais la plupart du temps les traits se recoupent ou se chevauchent (les traits «principaux secondaires» de notre taxinomie). Nous proposons donc un algorithme original permettant de fusionner de tels segments pour composer et nettoyer la représentation structurelle d'un dessin à main levée (cadre E de la figure 4.24).

Nous considérons deux types de critères à retenir pour analyser de telles situations et donc effectuer la fusion de segments: les critères positionnels et les critères relationnels. Nous considérerons dans la suite deux segments S1 et S2 pour lesquels nous voulons analyser les possibilités de fusion.

4.4.6.1 Critères positionnels

Le premier critère positionnel est la position globale des segments dans le dessin. Ainsi, la zone de dessin est divisée en zones rectangulaires égales (dont le nombre varie selon la taille de la feuille de dessin, voir figure 4.28). Les deux segments S1 et S2 doivent donc appartenir partiellement ou entièrement à une même zone pour être candidats à la fusion.

Figure 4.28: Fusion de segments. Division de l'espace de dessin en zones.
\includegraphics[width=420pt]{zones}

Dans le cas ou les segments sont dans la même zone de dessin, l'algorithme procède alors au calcul de l'intersection de leurs boîtes englobantes (voir figure 4.29(b)). Si l'aire de cette intersection est inférieure à un certain seuil, les segments sont potentiellement à fusionner. Dans le cas contraire, la distance entre les segments tout de même prise en compte pour déterminer un éventuel prolongement (voir figure 4.29). Précisons que nous définissons la distance entre deux segments par la plus petite des quatre distances de leurs extrémités respectives à l'autre segment. Un seuil de distance entre deux segment est fixé pour lequel les segments sont candidats à la fusion. Nous proposons des seuils déterminés de manière expérimentale mais paramétrables.

Figure 4.29: Cas d'une fusion de segments. Les segments de la figure (b) sont analysés. Les segments A et B seront fusionnés car leurs boîtes englobantes ont une intersection conséquente. Le segment résultant sera fusionné au segment C, même si leurs boites englobantes ne s'intersectent pas (leur distance est faible).
\begin{figure}\begin{center}
\setcounter{subfigure}{0}
\subfigure[Traits origi...
...{
\includegraphics[width=.45\textwidth]{segmergeb}}
\end{center}
\end{figure}

4.4.6.2 Critère relationnel

Dès lors que deux segments remplissent les critères positionnels que nous avons exposés, il reste un critère relationnel à examiner: l'angle formé par les deux segments. Si cet angle est en dessous d'un certain seuil, les segments remplissent alors une condition supplémentaire.

Il faut tout de même considérer le cas particulier des segments concourants, tout spécialement lors de dessin en perspective:

Ces différents seuils peuvent être considérés comme différents niveaux de tolérance de la fusion de segments pour les caractéristiques du dessin en perspective.

Figure 4.30: Fusion de segments: cas de segments concourants.
\includegraphics[width=350pt]{segments}

Si les deux segments S1 et S2 remplissent tous ces critères ils sont alors fusionnés en un seul, selon un principe simple: le segment résultant sera le plus long segment composé par combinaison des extrémités des segments originaux. Des quatre extrémités, les plus «à gauche» et «à droite» composent un premier segment, les plus «en bas» et «en haut» un autre. Le plus long des deux est conservé. Comme le montre la figure 4.31, nous parlons alors de composition lorsque le segment résultant est composé à partir de deux extrémités issues de segments différents et d'assimilation lorsque l'un des segments est conservé.

Figure 4.31: Fusion de deux segments. Les deux cas pouvant survenir lors de la fusion effective des segments sont la composition, figure (a) et l'assimilation, figure (b).
\begin{figure}\begin{center}
\setcounter{subfigure}{0}
\subfigure[Composition....
....]{
\includegraphics[width=.47\textwidth]{fusionb}}
\end{center}
\end{figure}

Nous avons vu le cas de l'étude de deux segments pour la fusion. L'algorithme global (voir l'algorithme A.4 dans l'annexe A) opère sur l'ensemble des segments résultants des traitements précédents. Ils les compare deux à deux et réalise les éventuelles fusion jusqu'à atteindre un point fixe sur l'ensemble des segments (plus de fusions) ou jusqu'à ce qu'un nouveau segment soit ajouté.

Ce filtre est utilisé ici dans un but de «nettoyage» du dessin, sans retour direct pour l'utilisateur (nous entendons ici sans être visible sur la feuille de dessin, mais les résultats des fusions sont toutefois visibles sur la feuille augmentée). Mais son comportement pourrait être raffiné, notamment au niveau de la détermination du segment résultant, afin de fournir des interactions avancées et novatrices dans un système de dessin vectoriel (prolongement ou déplacement naturel de segments, dans l'esprit de l'interaction pour la modification de courbes complexes proposée par Thomas BAUDEL dans «Ligne Claire» [Baudel1994]).


4.4.7 Compréhension du dessin pour et par le noyau

Au fur et à mesure du dessin, cette cascade de filtres en temps réel compose donc une structure géométrique du dessin. Cette structure forme les premières données transmissibles au noyau de reconstruction, représenté comme le dernier élément de la chaîne dans la figure 4.24. À l'heure actuelle, les informations que contient cette représentation issue de nos filtres de traitement sont essentiellement de bas niveau:
  1. points et segments composant l'enveloppe du modèle à reconstruire,
  2. segments concourants (déterminés implicitement par la fusion des points),
  3. points incidents à des segments.
Nous n'avons pas détaillé le dernier point concernant l'incidence de points à des segments. Cette détection de points situés sur un segment est encore en cours de développement. Elle se situe au niveau de l'algorithme de fusion des points. En effet, nous pensons que les zones d'incertitudes utilisées pour déterminer la fusion de points peuvent aussi être utilisées pour déterminer si un point n'est pas situé sur un segment (voir figure 4.32(a)). Il reste toutefois à régler certains problèmes avec cette méthode, notamment la prise en compte de la projection perspective qui ne garantis pas que le point, même si il parait appartenir au segment sur la projection en deux dimensions, est sur le segment en trois dimensions (voir figure 4.32(b)).

Figure 4.32: Incidence point/segment. La figure (a) suggère la question de l'appartenance du point A au segment S (le segment S coupe la zone d'incertitude du point). La figure (b) soulève une incertitude dès lors que l'on a une vision plus globale du dessin.
\begin{figure}\begin{center}
\setcounter{subfigure}{0}
\subfigure[]{
\include...
...]{
\includegraphics[width=.4\textwidth]{pointseg2}}
\end{center}
\end{figure}

Ces données sont toutefois insuffisantes pour permettre au noyau de reconstruire un modèle 3D, celui-ci nécessitant des relations de plus haut niveau entre les éléments du dessin: parallélismes, orthogonalités et coplanarités. Bien que les outils interactifs que nous avons proposés pour saisir ces données soient à notre avis plus efficaces que des boîtes de dialogue ou un langage de script, cette démarche n'en reste pas moins contraignante pour décrire les relations existantes sur un dessin complexe, provoquant alors une rupture dans la démarche de conception. Il est alors indispensable d'inclure un mécanisme de détection de telles contraintes dans la séquence de filtrage/interprétation du dessin, avant le module de reconstruction 3D. Nous proposerons plusieurs approches possibles dans ce but dans le chapitre suivant. Il est toutefois important de souligner que la flexibilité qu'offre l'architecture modulaire des filtres de traitement du dessin que nous proposons permet d'en ajouter, ou d'en remplacer, mais aussi d'en prototyper de nouveaux sans avoir à modifier tout le processus de traitements.

4.4.8 Calques et interprétation du dessin

Enfin, il est nécessaire de préciser le comportement de ces modules d'interprétation lors de l'utilisation de plusieurs calques de dessin. Du point de vue de l'utilisateur, les calques peuvent être utilisés pour structurer son dessin (l'utilisation habituelle avec les logiciels de conception) ou pour effectuer des révisions sur des points déjà spécifiés (l'utilisation plus habituelle à la conception architecturale). Du point de vue de l'interprétation automatique du dessin, ces deux modes d'utilisation impliquent un même principe: une fusion des interprétations issues des différents calques composant le dessin. Il est alors envisageable de réaliser cette fusion de deux manières possibles:
  1. une fusion a priori, où les traits tracés sur chaque calque sont interprétés par une même cascade de filtres (voir figure 4.33(a)).
  2. une fusion a posteriori, où chaque calque est connecté à une cascade de filtres différente, la fusion s'opérant sur les interprétations (voir figure 4.33(b)).

Actuellement, le système fusionne a priori les parties du dessin tracées sur des calques différents. Dès lors, il n'y a qu'une seule interprétation du dessin, tous les calques sont « connectés» à une unique séquence de filtres. Cette approche soulève le problème de l'éventuel retrait d'un calque: les interprétations issues de ce calque ont été incorporées à l'interprétation du dessin et ne peuvent plus en être retirées. Cela entraîne alors une incohérence entre le dessin et son interprétation: les données interprétées persistent, même si le calque a été retiré.

Figure 4.33: Filtres de traitement et calques. Dans la figure (a), les calques sont tous connectés à la même chaîne de filtres du dessin (approche actuelle). Dans la figure (b), le dessin de chaque calque est interprété séparément. Les interprétation sont fusionnées au moment de la reconstruction 3D.
\begin{figure}\begin{center}
\setcounter{subfigure}{0}
\subfigure[Fusion \emph...
... \includegraphics[width=\textwidth]{layersfilters2}}
\end{center}
\end{figure}

Nous envisageons, pour remédier à cette incohérence, de permettre l'interprétation indépendante de chaque calque, ainsi, la fusion des interprétation s'effectuera a posteriori, en aval des interprétations, juste avant la reconstruction 3D (voir figure 4.33(b)). Il pourra ainsi y avoir une historique des interprétations, celles-ci étant construites à plusieurs niveaux. Cette démarche pose toutefois le problème de déterminer le niveau de dépendance des traits de chaque calque: les traits tracés sur un calque sont-ils nécessaires à l'interprétation de ceux d'un autre calque ? Nous sommes d'avis que cette interdépendance est forte, même si nous n'avons pas encore fouillé plus avant la question. Dans ce cas là, notre approche constituée d'une seule chaîne d'interpréteurs est la plus efficace, traitant le dessin d'emblée dans sa globalité, même si moins souple en terme de retour en arrière (suppression d'un calque).

stuf
2005-09-06