• Aucun résultat trouvé

Habituellement, une scène est composée de plusieurs objets. Nous nous intéresserons ici à la génération d’une scène. Dans une scène à générer, on trouve deux sortes d’objets (ou con- cepts) :

• les objets « virtuels », que l’on appelle aussi ébauches d’autres objets ; • les objets « réels » que l’on retrouvera dans la scène finale.

Tous les objets de la scène ne peuvent pas être générés en même temps. Il existe certaines dépendances entre eux, en particulier par rapport à la méthode de conception choisie par le concepteur ([CDMM97b] et [CDMM97c]). Ils sont donc organisés de manière hiérarchique en fonction de cette méthode. Cette organisation sera prise en compte par la génération. La hiérarchie de la scène est à différencier de celle d’un concept complexe. Dans la première, chaque niveau de l’arbre peut être un objet très différent de l’objet de niveau inférieur et qui ne sera pas forcément présent dans la scène finale alors que dans la seconde les objets de ni- veau inférieur sont des composants du niveau courant.

Par exemple, s’il désire une conception par ébauche successives (Figure 88), il peut conve- nir que chaque niveau de la hiérarchie de la scène est un niveau de détail, une ébauche. La génération doit alors s’effectuer par étapes selon un ordre donné. Il est donc indispensable d’avoir un système, que nous appellerons chef d’orchestre, permettant de gérer la génération de la scène en fonction des contraintes de l’application.

Définition II.2.18 : Le chef d’orchestre est chargé d’organiser la génération de la scène vis-à-vis de la méthode de conception choisie et des actions de l’utilisateur. Il ordonne la construction des objets et gère les phases de conception.

Description Solutions niv 1 Ebauche niv 1 + nouv. description Solutions niv 2 + Ebauche niv 2 + nouv. description Solutions niv 3 + scènes sélectionnées Arbre de recherches Solution

Solution sélectionnée servant d’ébauche pour le niveau de détail suivant Description

Figure 88. Mode de travail “conception par ébauches successives” [CDMM97c]

6.1. Classification en groupes

Le chef d’orchestre se charge d’abord de classer, de grouper les objets de la scène pour toute la hiérarchie. Chaque groupe possède un numéro d’ordre. Le groupe 0 ne comporte que la racine, c’est-à-dire l’objet « scène ». La classification effectuée dépend du mode de généra- tion désiré. Il existe quelques méthodes de classification générales mais le concepteur peut proposer sa propre méthode (Figure 89).

Chef d’orchestre

Chef Spécifique • Numéroter()

Figure 89. Redéfinition de la méthode de classification et numérotation

Parmi les classifications « standard », nous proposons les suivantes :

• un seul niveau (mode automatique), tout est généré en même temps (Figure 90) ;

• par niveaux de l’arbre (génération par niveau de détail), où tous les objets de même ni- veau appartiennent au même groupe dont le numéro est égal à ce niveau (Figure 91) ;

• par frères, où tous les fils d’un objet sont dans le même groupe (Figure 92) ;

• en profondeur, où chaque objet est dans un groupe différent, numéroté par parcours de la hiérarchie en profondeur d’abord (bien évidemment préfixé puisque tout objet de ni- veau i est ébauche pour ses fils de niveau i+1)…

scène o1 o2 o3 o31 o32 o12 o11 o13 o1 21 o1 22 Groupe 0

Figure 90. Classification pour une génération en mode automatique

scène o1 o2 o3 o31 o32 o12 o11 o13 o1 21 o12 2 Groupe 0 Groupe 1 Groupe 2 Groupe 3

Figure 91. Classification par niveaux de la hiérarchie

scène o1 o2 o3 o31 o32 o12 o11 o13 o1 21 o1 22 Groupe 0 Groupe 1 Groupe 2 Groupe 4 Groupe 3

Figure 92. Classification par frères

6.2. Génération d’un groupe

Le chef d’orchestre s’occupe aussi de la génération des groupes. Pour un groupe donné, cette génération est en mode « automatique », c’est-à-dire l’utilisateur n’a pas à intervenir dans la génération (voir [CDMM97c]) sauf, nous le verrons, pour résoudre des situations de blocage. Le chef d’orchestre doit générer une solution pour le groupe afin qu’elle soit présen- tée à l’utilisateur. Il doit donc gérer des situations où certains objets sont produits de manière

aléatoire alors que d’autres le sont par énumération. Il donnera la priorité aux objets énumérés afin d’obtenir le plus de solutions possibles. Cependant, le concepteur peut faire en sorte que l’utilisateur dirige la génération en demandant de s’occuper en priorité de tel ou tel objet. Ain- si, nous avons la possibilité d’avoir un mode de conception guidée (voir [CDMM97c] ; Figure 93). Pour bien gérer la valeur d’un concept pendant la génération et au cours des phases de conception, nous allons introduire la notion de validité. Un objet de la scène peut être dans trois états : « à générer », « à valider » ou « validé ».

Description Niveau de détail 1

Niveau de détail 2

Niveau de détail 3

Niveau de détail 4

Constituant de la scène à un niveau de détail

Constituant au niveau de détail le plus fin à l’instant courant a

b

Figure 93. Scène à un instant t [CDMM97c]

L’objet est « à générer » en début de génération ou lorsque l’utilisateur le refuse. Il est « à valider » lorsqu’il vient d’être produit et qu’il est pret à être proposé. L’objet est « validé » quand l’utilisateur le considère comme satisfaisant. Il ne doit donc plus être généré. C’est alors un objet final ou une ébauche pour un prochain groupe. La Figure 94 montre l’évolution de l’état de validité d’un objet en fonction des événements lors de la génération d’un groupe.

A générer

A valider Validé

Génération Refus

Acceptation

Impossibilité d'autres générations Début de génération

Passage à un autre groupe Remise en cause de la validation

changement d’état provoqué par le maître d’orchestre ou par l’utilisateur situations en début et en fin de génération du groupe

cas exceptionnel

Ainsi, aux informations déjà présentes dans la table des objets, il faut ajouter la validité courante de l’objet ainsi que le numéro de groupe auquel il est associé. De plus, lors de la gé- nération, il est nécessaire de stocker les objets construits (selon leur modèle géométrique). Nous aurons donc une table spécifique à la génération que nous appellerons table de généra-

tion. Pour chaque objet de la table des objets, cette table indique la validité de l’objet et con-

tient l’instance (le modèle géométrique des objets déjà conçus) le numéro du groupe auquel il appartient et la tâche de génération qui le concerne (Tableau 12).

Tableau 12. Constitution de la table de génération

Champ Validité Numéro Instance Groupe Tâche

Type Entier Entier Ptr Entier Ptr

Remarque : Avec ce que nous avons désormais présenté, il est possible de construire un modeleur déclaratif dont la génération se fait par ébauche (Figure 91 et Figure 88) et pour lequel, le passage d’une ébauche à la suivante se fait par conception guidée. Nous avons ainsi un mixage de deux modes de conception présentés dans [CDMM97b] et [CDMM97c].