• Aucun résultat trouvé

Reconstruction du cône 3D

Dans le document en fr (Page 75-80)

Comme expliqué section 3.1.1 les fleurs partagent une structure commune qui peut être approximée par une forme géométrique simple. En effet chaque couche de pétales d’une fleur peut être modélisée à l’aide d’un cône 3D. Ce sont donc ces cônes que nous cherchons à reconstruire à partir du dessin. Cependant le croquis seul ne permet pas d’avoir les informations nécessaires à cette tâche, c’est pourquoi l’utilisateur doit nous fournir des données supplémentaires par le biais des traits de guidage : le point du centre

de fleur C2,correspondant au point de jonction entre la tige et la corolle, ainsi qu’une ou plusieurs courbes d’extrémité, qui sont les courbes reliant les extrémités des pétales d’une même couche (fig. 3.9). Comme le montre la fig. 3.9 (b), les courbes d’extrémité ne sont pas nécessairement des courbes fermées. En effet, il est demandé à l’utilisateur de ne passer que par les points des pétales visibles sur le dessin, une courbe ouverte indique donc qu’un ou plusieurs pétales de cette couche ne sont pas présents sur l’es- quisse, certainement cachés par d’autres éléments tels que la tige ou même par d’autres couches de pétales (comme dans la fig. 3.9 (b)). Afin de pouvoir être utilisée par notre méthode, chaque courbe d’extrémité doit subir une étape de prétraitement qui va cher- cher à l’approximer par l’ellipse correspondant le mieux [FF70], que l’on nomme ellipse

d’extrémité. Lorsque la courbe d’extrémité dessinée n’est pas fermée, l’ellipse d’extrémité

qui en découle peut être labellisée en 2 parties : la partie visible présente sur le dessin et la partie non visible, qui en est interpolée et permettra par la suite le placement des pétales non présents sur le dessin. Une fois que l’utilisateur a fourni l’ensemble de ces informations, il est possible de reconstruire chaque cône 3D ayant pour base une ellipse d’extrémité et pour apex le centre de fleur.

Figure 3.9 – Après avoir tracé l’esquisse florale (a), l’utilisateur localise le point centre

de fleur (éventuellement caché) C2 où la tige se joint à la corolle (point rouge) et trace les courbes d’extrémité (courbes rouges) pour chaque couche de pétales (b). À partir de ces traits de guidage, interprétés comme des ellipses 2D, nous reconstruisons les cônes 3D que nous utiliserons pour guider le positionnement des éléments botaniques 3D (pétales et tige).

3.5.1 Orientation de la fleur

La première étape de cette reconstruction est de déterminer l’orientation de la fleur, c’est-à-dire savoir si celle-ci est orientée vers l’observateur ou si elle est de dos par rapport à celui-ci. Cette information est importante puisqu’elle nous indique le sens que les cônes

doivent avoir, c’est-à-dire si ceux-ci doivent être, ou non, orientés vers nous. Cependant, à partir d’une ellipse 2D, correspondant à la projection d’un cercle 3D, et d’un point, ici le centre de fleur qui correspond à la projection de l’apex du cône que l’on cherche, il est possible de reconstruire deux cônes 3D identiques, mais de sens opposés (fig. 3.10. Les traits de guidage seuls ne permettent donc pas de déterminer l’orientation de la fleur, et de résoudre ainsi cette ambiguïté.

Figure 3.10 – Deux cônes 3D identiques, mais de sens opposés possèdent la même projection 2D.

Nous avons alors cherché un moyen de résoudre ce problème le plus simplement possible, en évitant au maximum d’avoir à recourir à de nouvelles interactions avec l’utilisateur et en n’utilisant donc que les informations déjà accessibles au programme, c’est-à-dire le dessin lui-même. Nous avons trouvé que la tige permettait de résoudre ce problème et de lever l’ambiguïté. Lorsque le croquis contient plusieurs couches de pétales, l’utilisateur aura tracé plusieurs courbes d’extrémités, et donc plusieurs ellipses seront disponibles. Nous considérons que la plus grande ellipse est toujours celle que celui-ci aura dessinée le plus précisément possible, et qu’elle transcrit plus précisément l’orientation globale de la fleur. C’est donc cette dernière que nous utilisons.

Définissions E2 comme étant la plus grande ellipse d’extrémité dont le centre est O2, et S2 le point correspondant à l’extrémité de la courbe de la tige le plus proche de O2. Si l’ellipse d’extrémité E2 est fermée, et donc qu’aucun pétale n’est caché par d’autres éléments, alors la fleur est toujours considérée comme étant orientée vers l’observateur (fig. 3.11 (a)). Dans le cas contraire, nous nous servons de la tige afin de déterminer l’orientation de la fleur. Si le segment [S2, O2] ou la tige elle-même intersecte cette ellipse

E2, alors nous considérons que les pétales cachés de E2 le sont par d’autres couches de pétales (tel que c’est le cas fig. 3.9 (b)), et nous en déduisons que la fleur est orientée vers l’observateur (fig. 3.11 (b) et (c)). Sinon cela signifie que les pétales cachés de E2 le sont par la tige et donc que la fleur est orientée de dos par rapport à l’observateur (fig. 3.11(d)).

Figure 3.11 – La fleur est orientée vers l’observateur si la courbe d’extrémité E2 est fermée (a) ou si la tige (b) ou le segment [S2, O2] (c) intersecte avec l’une d’entre elles. Sinon, la fleur est orientée de dos par rapport à l’observateur (d).

3.5.2 Orientation de la corolle

Maintenant que l’orientation générale de la fleure est déterminée, nous pouvons cal- culer l’orientation de chaque corolle, qui consiste en l’ensemble des pétales et du coeur de la fleur. Nous supposons que tous les pétales se trouvent sur un cône 3D dont le sommet c3 se projette sur c2 et dont le cercle de base E3 se projette sur l’ellipse E2 sur le plan d’esquisse (fig. 3.12). Nous supposons également que le centre de E3, o3 possède

sa coordonnée z fixée à 0. L’axe du cône 3D n3 se projette en 2D sur n2, ce qui corres- pond au petit axe de E2. On peut en déduire que n3 = n2± d · z3 où d est un scalaire.

Le deuxième terme pouvant être ajouté ou retiré, puisque deux cônes 3D peuvent être reconstruits à partir d’une même projection, et dépend de l’orientation de la fleur précé- demment obtenue ( section 3.5.1). Ce terme est ajouté si la fleur fait face à l’observateur et il est soustrait dans le cas contraire. L’angle α entre n2 et n3 peut être obtenu par le

rapport de r et kn2k, qui correspondent respectivement à la longueur de l’axe majeur et mineur de l’ellipse. Nous avons donc sin α = kn2k/r et tan α = d/kn2k. À l’aide des for-

mules trigonométriques on peut alors exprimer d par rapport à r et kn2k, qui sont deux

informations dont notre système dispose, nous donnant ainsi d = kn2k2/p

r2− |n

2k2.

Connaissant maintenant la valeur de d nous pouvons calculer la valeur de n3. Cepen- dant, avoir les valeurs de o3, n3 et r ne permet de définir que le cercle 3D E3 qui est la base du cône, il est également nécessaire de calculer par la suite l’emplacement du sommet du cône c3. Ce sommet, ayant pour projection c2, doit être situé sur la ligne

Cz passant par ce point 2D. Puisqu’il est également l’apex du cône 3D il doit aussi

se situé sur Dn, qui correspond l’axe 3D de la fleur. Par conséquent c3 est censé être

un point commun à ces deux lignes 3D distinctes, c’est-à-dire qu’il s’agit de leur point d’intersection. Il faut cependant prendre en considération que le dessin de l’utilisateur est très souvent approximatif et ne respecte pas toujours l’intégrité de ces contraintes

Figure 3.12 – Un disque 3D E3 (la base d’un cône 3D) est projeté sur le plan d’esquisse sous la forme d’une ellipse E2.

géométriques. Ces lignes ne se croisent donc pas nécessairement dans la réalité. Dans le cas où aucune intersection n’existe, nous avons décidé de définir c3comme étant le point

de Cz le plus proche de Dn. Notons que les cônes obtenus peuvent avoir une ouverture

supérieure à 180 degrés, comme celui présent dans fig. 3.1.

Lorsque la fleur présente dans le dessin est composée de multiples couches de pétales, et donc que l’utilisateur a tracé de multiples ellipses d’extrémité, nous devons modéliser plusieurs cônes 3D, un pour chacune des ellipses. L’orientation de chacun des cônes est déterminée de la même manière que lorsqu’il n’y en a qu’un seul, sans tenir compte de la reconstruction des précédentes couches. Par la suite, une translation est appliquée à l’apex de chacun des cônes reconstruits de sorte à le positionner aux coordonnées de celui du premier cône, reconstruit à partir de la plus grande ellipse. Une étape supplémentaire est nécessaire afin de vérifier que les cônes 3D ne s’intersectent pas entre eux. Le cas échéant, le système va réorienter de manière itérative l’axe du cône interne le plus proche des cônes sous-jacents, de manière à éviter les intersections. Ici aussi, la même logique que pour la détection de l’orientation de fleur est appliquée : la plus grande ellipse tracée par l’utilisateur est la plus correcte, c’est donc l’orientation du cône 3D issue de cette ellipse qui restera toujours inchangée en cas d’intersection.

Il existe cependant un cas particulier de dessins qui nécessite un traitement spécifique : les dessins de fleurs d’une vue strictement de face. Dans ce genre de dessin, les ellipses dessinées par l’utilisateur seront des cercles dont le centre se confondra avec le centre de fleur indiqué par l’utilisateur. Ainsi, bien que c3 et o3 soient deux points distincts

rendant impossible le calcul de leur coordonnée z, et donc de la profondeur du cône. Nous avons donc décidé que lorsque la différence entre r et n2 est négligeable, c’est-à-dire que

|r − n2| < 0.1 · r, alors les informations de profondeur extraites des ellipses ne sont pas fiables pour calculer automatiquement le cône 3D et choisissons arbitrairement un angle d’ouverture de 140 degrés pour le premier cône. Si la fleur dessinée de face est composée de multiples couches de pétales alors nous supposons également que les plus petits cônes sont plus proches de l’observateur que les plus grands, et plaçons donc le centre de leur base plus proche de nous.

Dans le document en fr (Page 75-80)