Le morphisme 2 (animation)
From OFSET Wiki
Contents |
[edit] Avant-propos sur l'animation Morphique
Pour aborder l'univers de l'animation morphique il faut être sur un écran Squeak dont certains objets (les polygones) seront dotés de possibilités nouvelles. On obtient ce nouvel environnement en téléchargeant soit un projet déjà équipé, soit le projet vide ci-dessous qui servira d'outil de travail :
Le projet, à télécharger et étudier :
Dans ce nouvel espace, les 3 types de polygones dont il est parlé dans le premier chapitre sur le morphisme, ont, dans leur visualiseur, une catégorie supplémentaire, 'MORPHISME', qui contient une série de commandes permettant de créer un type d'animation basé sur la modification et la malléabilité des polygones.
Pour plus de clarté, on détaillera, au fur et à mesure, leur mode d'emploi en prenant des exemples.
[edit] L'animation morphique simple
Prenons un écran Squeak ordinaire et récupérons dans le fichier des projets qui apparaît lorsque l'on appuie longuement sur le bouton 'CHERCHER' de la bande orange du navigateur, le projet 'MORPHISME VIDE' qui a, au préalable, été enregistré.
Prenons, dans le magasin des accessoires de ce nouvel écran, un polygone curviligne qui va nous servir de point de départ. Appelons-le 'goutte'.
Ouvrons son visualiseur de commande et sélectionnons la catégorie 'Morphisme' qui nous présente une nouvelle série de commandes.
Nous allons enregistrer cette goutte à la quelle on n'a encore fait subir aucune modification comme première étape de notre métamorphose en appuyant, à l'intérieur même du visualiseur, sur le point d'exclamation de la commande ! ajoute-Une-Forme.
'ajoute-Une-Forme' permet d'enregistrer le polygone en l'état où il se trouve et de le comptabiliser en temps que 'dessin n° 1 (ou, plus tard, comme dessin n° x).
Le chiffre 1 apparaît alors en face de 'forme-Courante (la forme qui est à l'écran).
Le chiffre1 apparaît également dans la tuile en face de la ligne 'nombre-De-Formes qui n'est pas une commande, mais un compteur d'images ou totaliseur. Il les comptabilise au fur et à mesure qu'elles sont enregistrées par le point d'exclamation de 'ajoute-Une-Forme'.
Revenons maintenant au polygone 'goutte' et déplaçons vers l'intérieur, avec la souris, la poignée A et enregistrons cette première modification avec le point d'exclamation de 'ajoute-Une-Forme',. Le chiffre 2 apparaît à la fois à l'intérieur de l'indicateur 'forme-Courante' et du comptabilisateur 'nombre-De-Formes.
Nous pouvons nous en tenir là et extraire du visualiseur la commande 'forme-Suivante' (exécute l'image suivante) et la glisser avec la souris sur l'écran où elle va prendre l'apparence d'un script auquel on donneras le nom de 'VARIE' par exemple.
Activer le script avec l'horloge, met en route l'animation, et la goutte sur l'écran passe alternativement de la forme 1à la forme 2 et tourne en boucle.
Bien que ce ne soit pas très évident dans cet exemple, si nous avions sélectionné la commande 'forme-Précédante', l'animation serait partie en sens inverse (cela peut être utile dans d'autres cas de figure).
Mais on peut avoir envie de pousser plus loin la métamorphose et poursuivre les modifications en utilisant les poignées existantes ou en en faisant apparaître de nouvelles. Elles seront enregistrées de la même manière quel que soit leur nombre. Nous y reviendront plus loin. Nous allons d'abord étudier le morphisme qui a donné son nom à ce chapitre.
[edit] Le morphisme
Le morphisme est un procédé qui va nous donner les formes intermédiaires entre deux images.
Le procédé consiste à déplacer les poignées sur une droite reliant l'ancienne position à la nouvelle. On répartit régulièrement les position sur la droite pour chaque image.
Les poignées aux extrémités de l'aile se déplacent sur une droite. Il en est de même pour toute poignée.
Pour obtenir cette transformation, il faut utiliser la commande ajoute-Des-Formes: en indiquant le nombre de formes souhaitées, après avoir déformé le polygone. Le nombre de sommets ne doit pas avoir changé. Pour changer le nombre de sommets, ajouter des sommets sans les déplacer, utiliser ajoute-Une-Forme, déformer et ajoute-Des-Formes:.
Le projet, à télécharger et étudier :
[edit] Exemples
[edit] Parole
Ici, le polygone curviligne a été déformé à l'aide de ses poignées pour représenter vaguement un visage de profil. Puis on a continué à bouger les poignées dans le secteur des lèvres pour simuler les mouvements d'une bouche en train de parler et l'on a enregistré chaque modification avec ajoute-Une-Forme (14 en tout) pour donner l'impression d'un discours.
Des effets rythmiques peuvent être introduits en enregistrant plusieurs fois la même image ce qui créera une impression de ralentissement qui peut alterner avec des mouvements plus rapides.
La commande forme-Suivante du script 'PARLE' est suffisante pour lancer la mimique du discours. Dans le projet ci-dessous (laParole), on a disposé sur le fond plusieurs duplications de la tête, ce qui entraîne une duplication automatique du script.
Utiliser la réglette 'GO STEP STOP' fait parler l 'ensemble des têtes alors que la pendule du script n'en active qu'une seule. En appuyant plusieurs fois sur le point d'exclamation du script, on voit défiler une à une toutes les modifications du visage.
Mais on peut envisager aussi de donner la parole à tel ou tel personnage individuellement ou par petits groupes, en faisant apparaître sur l'écran le visualiseur de certains d'entr'eux (utiliser leur halo et sélectionner l'œil bleu) et en activant ou interrompant DANS LE VISUALISEUR tel ou tel script.
Un accompagnement sonore de paroles enregistrées avec la catégorie MULTIMEDIA et un micro serait souhaitable. Pour donner un exemple, quelques personnages on un script avec la commande joue Son qui joue un son de grenouille. les horloges sont réglées différement pour chaque personnage.
Les personnages étant mobiles on peut les regrouper selon sa fantaisie.
Le projet, à télécharger et étudier :
[edit] Volutes
L'exercice que l'on vient de voir fait se succéder une série de modifications d'un objet qui garde son identité d'un bout à l'autre de la séquence enregistrée. Les modifications ont donc été partielles et n'ont concerné qu'une zone réduite limitée à 2 ou 3 poignées situées dans le même secteur.
Mais l'animation morphique peut aussi se décliner en termes de métamorphose, le motif initial évoluant d'une figure à l'autre selon des critères laissés à l'appréciation de chacun.
Dans cette série que l'on retrouvera plus loin, dans un autre projet, l'évolution se fait sans finalité précise autre que la satisfaction du regard et la recherche d'une évocation de souplesse et de fluidité (32 modifications).
Si une modification apportée par les poignées n'est pas jugée acceptable, on peut revenir en arrière en cliquant sur le point d'exclamation de la commande 'supprime-Forme-Courante'. On se retrouve sur la forme précédente. En faisant apparaître les poignées on peut la modifier et enchaîner.
Le projet, à télécharger et étudier :
[edit] Métamorphose progressive
Ce projet n'est pas fondé sur la modification d'un seul polygone morphique, mais de plusieurs, différents les uns des autres et qui cohabitent selon. Deux types de transformations :
- la métamorphose progressive - une forme d'une certaine apparence devient petit à petit autre chose (la tache bleue foncée devient oiseau puis plante).
- l'évolution - il n'y a pas de changement d'identité seulement passage d'un état à un autre (la pétale se transforme en fleur, le soleil enfle et décroît.
Ces modifications peuvent se faire :
- en déplaçant un nombre restreint de poignées (1 seule poignée pour la feuille qui grandit et rétrécit) ;
- ou avec un nombre plus important en activant de nouvelles poignées à chaque étape de l'évolution (la plante – oiseau) ;
- ou aucun si, après avoir mis au point, au départ, la forme définitive on la fait augmenter ou diminuer avec le bouton jaune du halo qui joue le rôle de zoom (le soleil rouge).
Cette animation est commandée par un seul script 'IMAGE SUIVANTE' pour chaque catégorie d'objets. La réglette 'Go / Step/ Stop' déclenche l'activité de l'ensemble des scripts. Mais on peut aussi ouvrir les visualiseurs et animer tel ou tel détail en laissant les autres en repos.
Le projet, à télécharger et étudier :
[edit] Le derrick
...ou polygones rectilignes et animations partielles.
Comme nous l'avons vu dans le projet, 'la Parole', il est possible, avec n'importe quel type de polygone, d'animer une partie (ou plusieurs) d'une structure qui reste par ailleurs immobile.
Il suffit de prévoir des zones limitées de déplacements en fonction du genre de mécanisme que l'on veut créer. Dans l'exemple ci-dessus, il y a regroupement de plusieurs polygones et, pour chacun, seule une partie est mobile, et cette mobilité peut être obtenue, parfois, avec le déplacement d'une seule poignée .
L'antenne supérieure décrit un cercle complet,
le panneau de gauche oscille de haut en bas
le four s'ouvre et se ferme.
L'hélice tourne selon un principe différent qui est décrit dans un autre chapitre.
Il doit être possible de construire, de cette manière, toutes sortes de mécanismes animés de mouvements réels ou imaginaires.
Le projet, à télécharger et étudier :
[edit] Programmation conditionnelle et animation morphique
Les animations réalisés jusqu'à présent n'ont eu besoin que d'un nombre réduit de scripts contenant chacun une seule commande 'image suivante', pour des actions répétitives tournant en boucle. Mais on peut envisager de programmer des actions un peu plus sophistiquées au cours desquelles l'animation prendra une autre orientation ou sera arrêtée.
Dans d'autres chapitres, nous avons déjà rencontré cette forme de programmation qui permettait à des objets rencontrant soit un autre objet, soit un obstacle, de changer de comportement (programmation et créativité, construire un projet) ou bien de s'arrêter. Et nous avions utilisé des scripts conditionnels à une seule alternative présentant les conséquences d'une rencontre.
TEST - lorsque tel objet rencontre ceci. OUI - il se passe cela
Mais dans le cas de l'animation morphique qui nous occupe, nous avons affaire à une programmation qui comptabilise des séries de modifications qui se traduisent en chiffres (15 modifications du visage) .
On peut donc envisager des changements de comportements, qui seront conditionnés par le nombre des formes comptabilisées.
Nous utiliserons à ce moment-là des scripts conditionnels rédigés un peu différemment.
TEST - le nombre de répétitions de la forme est inférieur ou supérieur (> < ) à un chiffre donné. OUI - il se passe ceci NON - il se passe cela
Nous aurons des scripts conditionnels à 2 alternatives.
Mais l'action se passe sur une scène et c'est le bouton placé sur cette scène 'SCENE JOUE' qui va déclencher l'action en donnant des ordres à 2 autres scripts 'VOLUTE CROIT' et 'VOLUTE POUSSE' qui commandent la métamorphose du polygone . Et pour obtenir l'activation, par le bouton de la scène, de commandes placées dans d'autres scripts, nous allons avoir besoin de la catégorie CONTRÔLE DES SCRIPTS des visualiseurs.
Le mieux est de prendre un exemple concret.
[edit] Stopper une métamorphose
Le projet 'Les Volutes' regroupe en réalité, sur le même écran, 2 projets différents placés côte à côte :
- Le premier, 'ENVOLEE', à droite, met en mouvement de façon continue, la métamorphose en 32 étapes d'un polygone curviligne, qui illustre, en activant un script 'EVOLUE', le type d'animation expliqué en début de texte : envolee (joue) forme suivante
- Dans le second, 'VOLUTE', à gauche, la même volute se métamorphose à l'intérieur d'une SCENE et stoppe son jeu au terme d'une action programmée par 3 scripts se coordonnant les uns avec les autres.
Nous allons étudier le détail de cette triple programmation qui interrompt la métamorphose quand elle est arrivée à son terme.
[edit] Programmer l'arrêt d'une animation
Dans un premier script, nous allons décrire le comportement de la volute et donner les 2 conditions qui vont l'amener soit à poursuivre sa progression soit à l'interrompre. Le discours que l'on peut tenir pour construire ce script est donc le suivant :
TEST - si la forme actuelle de la volute présente sur l'écran (forme courante) à un n° d'ordre ou un chiffre inférieur (<) à celui de la totalité des formes comptabilisées par le compteur (volute - nombre de formes). OUI - la forme actuelle de la volute peut passer à la suivante (forme courante augmente de 1). NON - sous-entendu : si le chiffre ou n° d'ordre de la progression de la volute doit dépasser (>) celui du totaliseur, le script 'croit' de la volute recevra l'ordre de stopper.
Mais le visualiseur de commandes de la volute ne nous livre pas ce discours prêt à l'emploi, il va falloir le construire en amalgamant les éléments pertinents de plusieurs commandes.
[edit] Construction du script conditionnel 'Croit'
En examinant le libellé du script 'CROIT', nous voyons que les commandes émanent de 2 catégories du visualiseur.
La catégorie 'MORPHISME ' pour la majorité des commandes de la métamorphose.
La catégorie 'CONTRÔLE DES SCRIPTS' pour la ligne finale.
L'ordre de construction du script est le suivant :
- Un script vide extrait du visualiseur de commandes de la volute auquel on donne le nom de 'CROIT'.
- Installation de l'unité de test (rectangle beige en haut et à droite).
- En face du mot TEST, placer la tuile VOLUTE | FORME COUTANTE prise dans la catégorie 'MORPHISME', et qui n'est pas prise à partir de sa flèche. Elle se déploie avec des flèches vertes, le signe < et un numéro.
- Au-dessus du chiffre (5) déposer la tuile 'VOLUTE | NOMBRE-DE-FORMES' qui contient virtuellement le nombre complet des transformations possibles. Cela signifie, en fait, que l'on postule que le numéro de la forme en cours d'exécution est inférieur au total des formes possibles, ce qui va entraîner, par conséquent, l'exécution de la ligne OUI.
- Placer en face de OUI la tuile 'FORME COURANTE' prise cette fois-ci à partir de sa flèche, elle se déploie de la façon suivante :
En appuyant sur les flèches vertes situées AVANT le mot 'FORME COURANTE' on sélectionne la fonction augmenter de et le chiffre 1. Si le 1 n'est pas en place, le manipuler avec ses propres flèches pour l'obtenir.
Cela signifie, en clair, que dans le cas où la forme en cours est d'un numéro inférieur à 36, on peut progresser d'une unité dans la série des métamorphoses proposées.
- En face de NON, on doit indiquer ce qui va se passer si le nombre des modification a atteint sa limite. Choisir dans le visualiseur de script la catégorie CONTRÔLE DES SCRIPTS et prendre la tuile STOP SCRIPT| SCRIPT VIDE et la placer en face de NON.
En appuyant sur 'SCRIPT VIDE' on fait apparaître le nom de tous les scripts qui ont été créés pour ce projet. Choisir le nom du script en cours : CROIT.
Ce qui indique que si le nombre des répétitions du script CROIT devait devenir supérieur à 36, le script en cours doit s'arrêter.
[edit] Les scripts 'Pouse' et 'Joue'
L'action se situe dans le cadre d'une SCENE. On va organiser la programmation pour lancer l'opération à partir de là à l'aide d'un bouton de démarrage 'TERRAIN DE JEU JOUE' qui en appelle à 2 scripts, l'un issu du viasualieur de la volute et l'autre de celui de la scène.
[edit] Le script 'Pousse'
Issu du visualiseur de la volute, il va remettre le compteur sur la forme n° 1 et aura la capacité de déclencher l'action du script 'CROIT' .
- La première commande se trouve dans la catégorie 'MORPHISME'et est tirée à partir de la flèche.
- La seconde vient de la catégorie 'CONTRÔLE DES SCRIPTS' et, comme décrit précédemment, appelle le script 'CROIT'.
Activé séparément, ce script ne présente rien d'autre que la première forme de la série. Sa possibilité d'activer le script 'CROIT' reste virtuelle.
[edit] Le script 'Joue'
Il est issu du visualiseur de la SCENE sur laquelle on a placé la volute. Il ne contient qu'une seule commande issue de la catégorie 'CONTRÔLE DES SCRIPTS' : scene | dit à toute la fratrie | .. script vide
Cette commande qui donne accès, en appuyant sur sa deuxième partie (script vide, à tous les scripts du projet, permet de choisir celui qui aura la capacité de démarrer l'animation, à savoir le script 'POUSSE' qui contient la possibilité d'activer le script 'CROIT' et ses multiples conditions.
On terminera l'opération en produisant un bouton 'SCENE (ou terrain de jeu) JOUE' que l'on placera sur un coin de la scène pour lancer une animation qui s'arrêtera spontanément quand la volute aura déroulé la totalité de ses métamorphoses.
Nous avons construit, de la sorte, une programmation des métamorphoses de la volute qui est un chassé croisé entre plusieurs catégories d'un même script et entre des scripts appartenant à des objets différents.
Le projet, à télécharger et étudier :
[edit] Le projet 'Etang' revisité
L'animation morphique étudiée ici peut parfaitement s'intégrer à des projets de formule plus classique; exemple les ondes morphiques concentriques et mobiles ajoutées au projet ETANG du chapitre L'option 'Dessiner'#Le projet LETANG.
- Les cercles sont formés à partir d'un polygone courbe dont on a rendu la couleur transparente et augmenté la largeur de la bordure.
- Ce polygone a été rendu tout petit ave le halo jaune.
- La première forme est enregistrée avec ajoute-Une-Forme. Ce petit polygone a été agrandit avec le halo jaune.
- On a ajouté 180 formes avec ajoute-Des-Formes.
On obtient ainsi un cercle qui grandit. On a ensuite utilisé plusieurs copies de ce cercle, chacune a un stade plus grand que le précédent. Ce qui produit la succession d'ondes lorsque tous sont animés.
Le projet, à télécharger et étudier :
[edit] Conclusion
Dans ce chapitre, on a essayé de montrer que l'on pouvait fabriquer avec une grande facilité des animations originales et amusantes en se servant uniquement de polygones Morphiques et d'une programmation minimale, et que ce système pouvait être à la portée de débutants sans grande expérience.
En parallèle, on a essayé d'expliciter, de façon détaillée, une formule plus compliquée, celle du script conditionnel à 2 alternatives fréquemment utilisé en programmation Squeak Etoys.


