Logiciel COMPA5
version de recherche, évolution de compa3


Principes de base : constituants d'une scène:
une scene comporte des personnages

l'élément
un personnage est composé d'éléments (par ex: squelette, corps, tete, bras_droit, bras_gauche etc.)
un élément est soit une forme, soit la position d'un autre élément (par ex: l'élément squelette comporte des éléments position pour l'élément corps, l'élément tete et.)
une position est un référentiel 2d qui est définit par un vecteur, donc deux points.
une forme est tout ce qui peut être dessiné (actuellement, une forme est composé d'un ensemble de lignes et d'aplats)

l'objet serie
tous les dessins clés d'un élément sont rassemblés dans un objet appelé serie
l'objet serie contient à la fois les données et les procédures pour les manipuler (affichage, interpolation, sauvegarde)
le fichier d'archivage d'une serie porte le nom de l'élément et l'extension serie (ex: tete.serie)
[ L'objet serie est décrit dans les deux documents: organisation et archivage.]

le fichier .pilote
pour animer un élément, il faut associer à la série qui contient les dessins clés de cet élément, un pilote d'animation
un pilote est analogue à la traditionnelle feuille d'exposition
un pilote est une suite de couples (numéro d'image/ numéro de dessin clé) avec des paramètres affinant l'animation.
tous les pilotes d'animation des éléments d'un personnage au cours d'un plan sont rassemblés dans un fichier portantl'extension .pilote

le fichier .pilou
mais l'animation d'un personnage est en général une succession de gestes simples
un geste peut être décrit par un pilote simplifié qui porte l'extension .pilou
un fichier pilote peut alors être ramené à une succession de gestes .pilou

les noms
la relation entre les positions, les series et les pilotes se fait par le nom de l'élément.
ainsi, l'élément tete sera positionné sur la position p_tete et animé par un pilote a_tete (a pour animation)

les noms sont qualifiés
tous les personnages ayant en général une tête, le nom de l'élément sera complété par le nom du personnage
l'élément tete du personnage annie sera nommé : annie.tete, la position annie.p_tete et le pilote annie.a_tete

le repertoire .perso
Les fichiers associés à un personnage sont dans un répertoire portant le nom du personnage et l'extension .perso
exemple : annie.perso contient tous les fichiers .serie, .pilote et .pilou du personnage annie

Principes de base : le moteur d'animation
L'animation du plan est prise en compte par l'objet animateur2D.

fonction structure:
c'est un fonction "intelligente". Elle analyse le répertoire et les sous-répertoires du plan, en déduit la structure de la scène et passe le résultat à animateur2D qui construit différentes tables:
- table des positions
- table d'affichage
- table des series
- table des pilotes

triplet:
c'est un groupe de trois valeurs : deux numéros de dessins clés et un coefficient.
le coefficient dit comment interpoler entre les deux clés
un triplet associé à un objet serie définit une forme ou une position interpolée

Le travail d'animateur2D consiste, pour chaque image, à mettre à jour la table des positions (la position de chaque élément est ainsi déterminée) et la table d'affichage (mise à jour du triplet associé à chaque élément)

La table ordre donne l'ordre d'affichage des éléments.

Les Tables du moteur d'animation
Ce sont elles qui donnent ses propriétés au système. [ Les classes d'animateur2D sont dans ce le document animateur2D.h]

Table des séries : (classe CDicSerie)
- nom de la série
- pointeur vers l'objet série

Table des pilotes : (classe CDicPilote)
- nom du pilote
- pointeur vers l'objet pilote

Table des positions : (classe CTablePosition)
----- éléments fixes au cours du plan
- nom de la série contenant la position
- pointeur vers l'objet série
- identificateur de la position [ Lors de la création d'une série, chaque élément se voit attribuer un identificateur qui permet de l'identifier de clé en clé.]
- numéro du pilote associé dans la table des pilotes
- pointeur vers la table CSupport [ Le résultat du calcul des positions est, pour chaque position, la création d'une table qui contient, pour chaque image, la position associée]

-----éléments modifiables au cours du plan
- numéro de la position père dans la table des positions
- type d'accrochage
- numéro de la position à laquelle on est accrochée dans la table des positions

----- valeurs instantanées
- position courante
- okworld: false si la position est encore relative, true si la position absolue a été calculée

Table d'affichage : (classe CTableAffichage)
----- éléments fixes au cours du plan
- nom de la série contenant la forme
- pointeur vers l'objet série
- numéro du groupe à afficher [ Lorsque plusieurs éléments ont un comportement analogue(ex:les ailes d'un oiseau) il est possible de les placer dans la même série, en leur attribuant un numéro de groupe différent]
- numéro du pilote associé dans la table des pilotes

----- la structure est modifiable au cours du plan
- numéro de la position père dans la table des positions


Les Algorithmes de base

Construction de la Structure : (classe CStructure)
1) chargement des fichiers .serie et .pilote
On balaie le répertoire principal du plan (.ani) ainsi que les sous-répertoires des personnages (.perso) et
- pour chaque fichier .pilote rencontré: chargement, communication à animateur2D et ajout à la table des pilotes.
- pour chaque fichier .serie rencontré : chargement, communication à animateur2D et ajout à la table des séries et à la table d'affichage puis
analyse de la serie pour en extraire les éléments position, qui sont ajoutés à la table des positions.

2) compilation des tables
- pour chaque position dans la table des positions: initialisation de la position père et du pilote. [ Cela se fait en ajoutant "p_" et "a_" au nom de la série et en les cherchant respectivement dans la table des positions et dans la table des pilotes.]
- initialisation de la table d'affichage avec les pilotes correspondants trouvés dans la table de pilotes, ainsi qu'avec la position trouvée dans la table des positions [ toujours de manière automatique en se basant sur les noms]

3) calcul des supports
La table des positions et la table des pilotes sont maintenant suffisamment définies pour qu'on puisse lancer le calcul des positions de tout le plan
[ Un objet CSupport contient la position relative (par rapport au père) de l'élément associé, pour toutes les images du plan. Il y a un CSupport par élément.
Le calcul des supports, directement dérivé de la logique COMPA3, est décrit par ailleurs.]

Le travail, bien avancé, a été interrompu.
Il était développé avec le système QT3.
Ce dernier étant passé à la version 4, incompatible avec les développements QT3, le développement en court est devenu à revoir entièrement.


retour