Animation : marche / arrêt en 3D



Ce didacticiel se propose de montrer comment faire basculer un Noeud Anim de marche à arrêt et retour par un clic sur l'objet en utilisant un TouchSensor avec cette simple ligne de script :

spin.pause = spin.play

Ce même didacticiel montre comment provoquer la rotation d'un objet avec une ligne de scipt aussi simple que ceci :

p.rotation = Rotation(0, 0, 1, PI * 2 * v)

Toutefois, nous aurons le plus souvent déjà créé une animation avec le Noeud Anim, de sorte que seule la première ligne devra en réalité être ajoutée, et c'est donc sur ce point que l'on va insister avec l'opération 7 : Add toggle script (ajouter un script de bascule).

Pour plus de sûreté les deux lignes de script peuvent être copiées collées à partir du présent didacticiel à l'aide du raccourci clavier habituel (Ctrl V) vers un Noeud Seamless CodeLine (ligne de code). Toutefois si notre Noeud Anim porte un autre nom que "spin" (tourner) il faut remplacer "spin" par le nom déjà donné au Noeud Anim.
Les lignes de script ne sont pas traitées (compilées) avant que la clé Entrée ne soit pressée (ou qu'un autre Noeud et/ou une autre fenêtre ne soit choisie). Une ligne de code compilée avec succès apparaît en couleurs.

Begin (Commencer)

Lancer la demo robotisée en déplaçant le curseur en haut et à gauche de l'écran (stricto sensu, de la fenêtre 3d) et choisir switch anim in 3d demo (démonstration de mise en marche/arrêt de l'animation 3d) comme ceci :

 

Tous les titres des opérations de la demo robotisée seront présentés ici en gras avec le numéro de l'opération suivi du titre lui-même. Les opérations de ce didacticiel vont de 0 à 8 seulement. Les opérations 9 et suivantes concerneront des didacticiels complémentaires plus détaillés.

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 box (Construire un cube)

Dès que le Noeud est choisi, cliquer le bouton dans la barre d'outils horizontale pour créer un Noeud BoxBuild (créateur de cube) en référence à cette Partie. Cette Partie contient maintenant les triangles constitutifs du cube, sachant que le Noeud BoxBuild est celui qui les a générés.

Le champ yCentred (centré en Y) de BoxBuild est coché pour que le point de flexion de ce cube soit centré dans la fenêtre.

2. Add Anim node (Ajouter un Noeud Anim)

Un Noeud Anim est ajouté au Noeud Scene .
Le Noeud Anim est réglé en boucle par un clic sur qui devient donc puis un clic sur le force à fonctionner indéfiniment. L'objet ne s'anime pas encore, mais nous voyons déjà que le curseur glisse effectivement en boucle pour chaque cycle.

3. Add Function for Anim (Ajouter une fonction pour l'animation)

La fonction onFrame est ajoutée au Noeud Anim . La fonction onFrame s'exécute brièvement avant qu'une image soit affichée dans la fenêtre 3d et c'est cette fonction que nous allons ajouter à notre script d'animation. Dans le didacticiel Cap sur l'animation cette fonction est ajoutée automatiquement parce que nous avons cliqué-tiré un point de contrôle d'animation destiné à cette Partie. Il est très correct d'ajouter une animation de cette façon de sorte que, si nous l'avons fait, nous pouvons sauter la présente opération et passer à l'opération 5. Cependant, s'il suffit pour une démonstration de faire tourner un objet en continu, il est peut-être plus simple de cliquer-tirer une fonction et une CodeLine (ligne de code)   puis d'y copier-coller la ligne de script.

4. Add spin script (Ajouter un script de rotation)

Un Noeud CodeLine (ligne de code) est ajouté à la fonction onFrame puis cette ligne de script :

p.rotation = Rotation(0, 0, 1, PI * 2 * v)

est entrée dans le Noeud CodeLine .

Il n'est pas nécessaire de comprendre comment cette ligne de code fonctionne, si l'on accepte qu'elle suffit à provoquer la rotation de la Partie nommée "p".

Notre ligne entraîne la rotation selon l'axe Z, mais on peut spécifier n'importe quel autre axe pour la Rotation, par exemple :

Pour l'axe X :

p.rotation = Rotation(1, 0, 0, PI * 2 * v)

Pour l'axe Y :

p.rotation = Rotation(0, 1, 0, PI * 2 * v)

Pour l'axe Z :

p.rotation = Rotation(0, 0, 1, PI * 2 * v)

5. Add TouchSensor (Ajouter un TouchSensor)

Un Noeud TouchSensor est ajouté à la Scène. Un TouchSensor (sensible au contact) surveille automatiquement tout objet "geometry" qui pourrait être cliqué si cet objet appartient à un Noeud qui est un frère (même niveau dans l'arbre logique) du TouchSensor. Comme à la fois notre Noeud TouchSensor et notre Noeud Seamless (qui contient le cube) sont des descendants directs du Noeud Scene, ils sont bien "frères".

6. Add Function for TouchSensor (Ajouter une fonction au TouchSensor)

La fonction onTouchTime (à l'instant du contact) est ajoutée au TouchSensor. Cette fonction exécute son script dès que le cube est cliqué.

7. Add toggle script (Ajouter le script de la bascule)

Un Noeud CodeLine est ajouté à la fonction onTouchTime (à l'instant du contact) puis cette ligne de script :

spin.pause = spin.play

est entrée dans le Noeud CodeLine .

Cette simple ligne de script est si simple que n'importe qui la comprendrait, quel que soit son niveau en matière de programmation.

Note du Traducteur : c'est toujours ce qu'on imagine quand on a soi-même un bon niveau. Comprendre cette ligne de code "script" est une chose, savoir l'écrire, une autre. Si vous ne comprenez pas, ça ne fait rien, mais contentez vous de recopier sans rien changer et tout ira bien. Fin de note.

"spin" désigne ici notre Noeud Anim, ce qui fait que, quel que soit le nom qu'on lui a donné, nous devons le reproduire à cette place.

Nous savons qu'en utilisant la barre d'animation nous pouvons directement faire une pause (pause) ou resume (reprendre) en utilisant le bouton et aussi play (lancer) l'animation en reprenant au début avec le bouton .

   = play (lancer).

  = pause (pause)

Le bouton play est toujours dans l'état logique opposé au bouton pause. C'est à dire que quand l'animation fonctionne, le bouton play est rouge (true, vrai) et le bouton pause est noir (false, faux). En revanche, uand le bouton pause est rouge (true, vrai) le bouton play est noir (false, faux).

C'est pourquoi écrire pause = play dans notre script crée un bouton à bascule (il intervertit vrai et faux).

8. Click box to switch off & on (Cliquer le cube pour basculer en marche / arrêt)

Afin d'éprouver notre théorie, cliquons le cube pour lancer l'animation en marche / arrêt. Ceci met un point final au fonctionnement de notre animation 3d marche / arrêt. On peut appliquer cette simple ligne de script à n'importe quel objet géométrique que nous aurions fabriqué, et obtenir le même résultat.

Pour voir comment utiliser une instruction "if" (si) avec facilité, se reporter aux deux didacticiels annexes suivants :

Lancer l'animation pour un nombre défini de cycles  



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