Cap sur l'Animation



L'Idée de base

Il s'agit ici de montrer comment animer des Parties contenant différentes formes, et comment l'animation d'une Partie fille est affectée par sa sa partie parente.

Combien de temps cela prend-il ?

Pas plus de 30 secondes entre la création d'un nouveau fichier Seamless et l'animation d'un cône !

Commencer

Commencez la demo robotisée en déplaçant la souris vers l'angle haut à gauche de l'écran et en choisissant :

beeline to animation demo (survol de la démonstration d'animation)

Tous les titres de la demo robotisée apparaissent ci-dessous en gras avec le numéro de l'opération suivi de l'opération elle-même. [NDT : traduction en italiques]. Si un commentaire est utile il figure après le titre.

 

0. Create a New Seamless File (Créer un nouveau fichier Seamless)

Cliquer le bouton pour créer un nouveau fichier Seamless.

1. Build a Cone (Construire un cône)
Choisir (un clic) le Noeud , puis cliquer le bouton dans la barre d'outils horizontale pour créer un Noeud ConeBuild (Constructeur de cône) référencé dans la Partie choisie. Cette Partie est le Noeud qui contiendra les triangles, cependant que le Noeud ConeBuild (Constructeur de cône) est le Noeud qui génère les triangles voulus dans cette Partie.

2. Setup Animation (Régler l'animation)

Un nouveau Noeud est ajouté à la scène en cliquant-tirant le bouton de la barre de nouveaux Noeuds vers le Noeud scène.

Puis on clique le nouveau Noeud dans la scène pour ouvrir le panneau de contrôle :

 

On clique le bouton haut-bas de réglage period (période) pour ajuster la période à 2.

3. Set First Pose (Régler la première position)

Choisir la part1 (Partie 1) dans le scene tree (arbre logique de la scène) et, du fait que la barre Anim est ouverte, cette Partie affiche ses propres points de contrôle d'animation dans la fenêtre 3d (les points jaune et rouge réunis par une ligne droite).

Le point rouge (point de contrôle de l'orientation) est cliqué-tiré pour changer l'orientation de la Partie. Cette action entraîne automatiquement l'écriture des lignes de script avec les interpolators voulus dans le Noeud Anim de l'arbre logique.

 

mais nous n'avons aucun besoin de nous en préoccuper, ni de ce que le script signifie, à moins que nous ne voulions y accéder. Il est parfaitement licite de cliquer à gauche du Noeud Anim (pour le réduire à un trait rouge) de sorte que nous ne voyions plus que le Noeud Anim dans l'arbre logique :

 

Quand cette position a été enregistrée comme étant celle du début de la ligne temporelle, le bouton play (jouer) peut être cliqué pour jouer l'animation.

4. Set Second Pose (Régler la deuxième position)

Pour donner plus d'intérêt à notre animation, nous allons ajouter une nouvelle position au milieu de la ligne temporelle. Remarquez ce qui se passe lorsqu'on relâche le point de contrôle d'orientation : une marque rouge vient s'ajouter dans la ligne temporelle pour marquer où cette position a été enrtegistrée. Une position peut être effacée en cliquant sur le bouton effacer .
La position enregistrée peut être déplacée ailleurs sur la ligne temporelle en cliquant-tirant cette marque rouge. (Actuellement, version Seamless 2.121, il ne faut pas tenter de la tirer plus loin qu'une autre marque rouge à cause d'un bug qui sera corrigé dès la version 2.122).

5. Copy the First Pose and Paste to Last Pose (Copier la première position et la coller en dernière position)

Habituellement nous désirons voir une animation finir où elle a commencé. La façon la plus simple d'y parvenir est de copier la première position et de la coller en dernière position comme on peut le voir dans la demo.

6. Build a Cylinder (Construire un cylindre)
Une nouvelle Partie est ajoutée au Noeud Seamless puis cette partie est choisie (un clic) et le bouton est cliqué pour ajouter un Noeud CylinderBuild (Constructeur de cylindre) qui y fait référence.

7. Move part1 Up (Déplacer la part1 (Partie 1) vers le haut)

On utilise les boutons translation haut-bas du Noeud ConeBuild (constructeur de cône) pour déplacer le cône jusqu'à ce qu'il s'appuie sur le haut du cylindre.

8. Move part1's Pivot Point Up (Déplacer vers le haut le point de flexion de la Partie 1)

Sans tenir compte du fait que l'on anime ou non, dès qu'on est en mode fil de fer et si un Noeud Partie est choisi dans l'arbre logique, l'emplacement du point de flexion (le point autour duquel la Partie tourne lorsqu'elle est animée) figure dans la fenêtre 3d sous forme d'un point jaune. Ce point de flexion peut être déplacé n'importe où en utilisant les boutons de la barre d'outils. Parce que nous utilisons des Noeuds constructeurs ces boutons ajouteront automatiquement un Noeud CenterJoint (Centre de flexion) qui fait référence à la Partie en cause, si un tel Noeud n'a pas été déjà ajouté à cette fin.
Dès que ce Noeud est ajouté, nous pouvons utiliser ses champs (dans son "panneau de contrôle" ouvert à gauche de l'écran) pour contrôler le point de flexion, à moins que nous ne préférions continuer à nous servir des boutons de la barre d'outils, ce qui revient au même que d'utiliser les boutons translation du Noeud CenterJoint.

Remarque : si nous utilisons des Noeuds constructeurs, il est inutile d'arrêter l'animation des parties pour déplacer le point de flexion. En revanche, si on utilise des Parties directes (Parties bleues) il faut arrêter l'animation en cours avant de déplacer un point de flexion.

9. Animate part2 (Animer la Partie 2)

On fait la même chose que pour la Partie 1.

Notons qu'à cette étape aucune des deux animations des Parties n'agit sur l'autre, parce que ces parties ont été créées "jumelles" (aucune Partie n'est greffée sur l'autre) dans l'arbre logique.

10. Move part1 as a child of part2 (Déplacer la Partie 1 en position de fille de la Partie 2)

Dans l'arbre logique on clique-tire la Partie 1 (part1) vers la droite de la Partie 2 et on l'y relâche, de façon qu'elle soit greffée dans la Partie 2 en position de fille (et non plus de jumelle). Aussitôt après on peut voir comment la Partie 2 influence l'animation de la Partie 1.
On peut dès maintenant en déduire de quelle façon il sera possible de structurer les Parties d'un arbre logique pour animer des articulations.

11. Move part1's Pivot Point Up Half Way (Déplacer le point de flexion de la Partie 2 au milieu)

Remarquez maintenant qu'il y a désormais deux Noeuds CenterJoint (Centre de flexion) dans cette scène, un pour chaque Partie.

12. Animate Position (Animer la position)

Nous allons maintenant animer la position d'une Partie au lieu de son orientation. Cela se fait en cliquant-tirant le point de contrôle jaune (contrôle de position) au lieu du rouge. Ce point de contrôle jaune joue ici le rôle de point de flexion, cependant, nous ne chan,gerons pas l'emplacement du point de flexion dans la Partie concernée, puisqu'il va être entraîné avec elle. En effet, ce point de contrôle jaune ne peut être déplacé que lorsque la barre d'animation (Anim bar) est ouverte, exactement comme c'était le cas pour le point d'orientation déjà vu.
Tirer le point de contrôle de position (jaune) change le champ translation de la Partie et tirer le point de contrôle d'orientation (rouge) change son champ rotation.
On peut donc aussi régler les champs rotation et translation directement dans le panneau de contrôle pour installer une position dans la ligne temporelle.
De plus pour tous les champs rotation, les boutons de rotation changeront l'orientation directement à angle droit si la clé Ctrl est tenue en même temps.

13. Create a Bxx Av PROTO by Adding a GestureGroup (Créer un PROTO Blaxxun par addition d'un Groupe geste)

Un Noeud GestureGroup (Groupe geste) est ajouté à l'arbre logique.

Ceci n'est nécessaire que si nous tenons à utiliser notre modèle animé (un avatar) dans un monde Blaxxun multi-utilisateur.

Un Noeud GestureGroup (Groupe geste) conduit Seamless à exporter la scène dans un PROTO avatar de Blaxxun.


Note de Thyme pour la version 2.133 de Seamless3d :
Matthieu avait signalé que le TouchSensor (détecteur de contact) ne fonctionnait pas dans les exportations en WRL lorsque la scène contenait un GestureGroup (Groupe de gestes) et que le TouchSensor avait été ajouté après les Noeuds geometry (geométrie). Maintenant, Seamless ajoute automatiquement un Noeud Group destiné à contenir tous les Noeuds de la scène dès que la scène contient un GestureGroup (sauf bien entendu si la scène contient déjà un Noeud Group ou un Noeud Transform). De cette façon le TouchSensor fonctionne toujours, et ceci, qu'il ait été installé avant ou après la géométrie.

Note du traducteur : Je laisse cependant cette note, qui pourra vous dépanner facilement en cas d'ennuis, ancienne version etc.
Quoi qu'il en soit, ceci ne vous concerne que si vous avez ajouté un touchSensor (voir plus loin Animation, marche/arrêt en 3d) à votre avatar. Si vous avez ajouté le clic marche/arrêt, et si vous faites ce qui est dit plus haut, vous récupèrerez un avatar parfaitement mobile, mais le touchSensor ne sera pas exécutable, autrement dit, en Vrml aucune petite "main" n'appellera le clic et l'avatar restera toujours immobile.
J'en ai parlé à Thyme qui m'a donné des conseils et cherchera à dépanner l'exportation smls vers wrl dès qu'il en aura le temps.

D'ici là, vous pouvez faire deux choses :

1 - vous passer de PROTO, pour examiner simplement votre travail. Il vous suffit d'effacer les deux premières lignes
PROTO Avatar []
{
et aussi, bien sûr, l'accolade finale du PROTO, après les ROUTE, avant l'appel de l'avatar lui même
PROTO Avatar { }
tout se passera bien.

2 - Mais voilà, si vous tenez à utiliser cet avater dans un "monde" Blaxxun, il vous faudra vraiment un PROTO. C'est (à peine) plus compliqué et voici comment faire. Immédiatement sous le proto
PROTO Avatar[]
{
ajoutez un Group, un children et un Transform :
Group {
	children	[
		Transform {
Plus loins, repérez le premier Shape (VrmlPad le repèrera pour vous s'il le faut :o)) et ajoutez une accolade juste avant, pour fermer le Noeud Transform (il n'y a pas de Shape dans un Noeud Transform)
}
Bien entendu, tout à la fin du PROTO, vous devez enlever l'accolade qui précède immédiatement les ROUTE (là encore VrmlPad s'en inquiète éventuellement) puisque c'est celle que vous avez déjà fermée avant le "Shape", et enfin, entre ROUTE et accolade finale du PROTO, fermez le Group children Transform que vous avez ajouté, comme ceci
}]}
Tout fonctionne normalement, l'Avatar est et reste un PROTO, le touchSensor est fonctionnel, avant les modifications de la procédure qui sont attendues, vous êtes déjà dépanné. Regardez le code de cap sur l'animation pour vérifier tout ce qui vient d'être dit. Fin de note.



Copyright © 2000-2008 Graham Perrett thyme@seamless3d.com
traduction de Matthieu