Arbre de scène 3D

[30 minutes]

On souhaite pouvoir gérer les différents éléments composant des scènes 3D dans une base de données. Une scène contient des objets qui eux-mêmes peuvent appartenir à plusieurs scènes (au moins une), mais il ne peut y avoir plusieurs fois le même objet dans une même scène. Dans chaque scène, les objets peuvent être visibles ou invisibles. Les scènes et les objets sont identifiés de manière unique par un nom. Une scène peut être active ou inactive. Un objet a comme propriété une position dans l'espace, représentée par un vecteur de réels à trois composantes (x, y, z). Les objets sont organisés de manière hiérarchique : un objet peut être parent de plusieurs objets et chaque objet peut avoir au plus un parent. Des scripts peuvent être associés à un objet ou à une scène (à l'un ou à l'autre mais pas aux deux). Un script est identifié de manière unique par un nom et possède également un attribut permettant de connaître son état (actif ou inactif). Un personnage est un objet particulier qui possède des animations. Une animation est relative à un personnage et est identifiée de manière locale par un nom. À un objet est associé un maillage et celui-ci peut être utilisé par plusieurs objets. Un maillage est identifié de manière unique par un nom et est composé de plusieurs éléments. Chaque élément est relatif à un maillage et est identifié de manière locale par un numéro. Il existe exactement trois types d'élément : des nœuds, des arrêtes et des faces. Une face est délimitée par trois arrêtes et chaque arrête est délimitée par deux nœuds. Plusieurs arrêtes peuvent partager un même nœud et plusieurs faces peuvent partager une même arrête. Afin d'évaluer la complexité d'une scène, on souhaite pouvoir calculer le nombre de faces affichées pour une scène donnée (c'est-à-dire la somme du nombre de faces du maillage associé aux objets visibles de la scène). Un maillage possède plusieurs matériaux identifiés de manière unique par un nom. Un matériau peut être associé à plusieurs maillages. Un matériau est caractérisé par une couleur définie par un vecteur d'entiers à quatre composantes : rouge, vert, bleu, alpha. Un matériau peut posséder une texture et celle-ci peut être utilisée par plusieurs matériaux. Une texture est identifiée de manière unique par un nom et possède comme attribut une image.

Question

Proposez une clarification de ce problème. On pourra reclasser les informations par grande catégorie : scène, objets, scripts...

Question

Établissez un modèle conceptuel en UML de ce problème.