Déplacements d'objets morphiques

From OFSET Wiki

Jump to: navigation, search

Contents

[edit] Déplacer un sommet de polygone

... avec des scripts emboîtés.

Dans un premier temps, nous avons utilisé les polygones morphiques pour créer un nouveau style d'animation. Cela impliquait une manœuvre manuelle, celle du déplacement préalable des poignées du polygone à l'aide de la souris, puis l'enregistrement de cette nouvelle configuration à l'intérieur de la catégorie 'morphisme' du visualiseur de commandes du polygone (avec la brique ! ajoute une forme).

Nous allons nous intéresser maintenant à un type d'animation programmé qui va consister à déplacer les poignées par voie de programmation.

Et, parallèlement, nous étudierons une nouvel aspect de la programmation, les scripts emboîtés.

[edit] Préparation

En plus de la nouvelle catégorie 'morphisme', nous avons la catégorie 'sommets'
En plus de la nouvelle catégorie 'morphisme', nous avons la catégorie 'sommets'

Nous commencerons par le cas le plus simple : déplacer un seul des sommets du polygone. Mais nous avons besoin pour ce faire d'un projet amélioré par rapport au précédent et qui aura une nouvelle catégorie 'Sommets' dans le visualiseur de commandes des polygones.

Voir et étudier le projet:

Ces commandes supplémentaires n'enregistrent pas les étapes successives de la métamorphose du polygone dans son ensemble comme précédemment, mais s'intéressent plutôt à la position d'un de ses sommets, distingué par un petit cercle rouge qui apparaît dès que l'on appelle les poignées (appuyer sur le polygone avec la souris en tenant enfoncée la touche des majuscules du clavier) .

Ce sommet, un peu différent des autres est considéré comme étant le sommet courant, celui dont on est en train de s'occuper.

Mais le point rouge qui le distingue ne lui est pas attaché de manière permanente. Dès que la souris se déplace sur une autre poignée (cercles jaunes) pour la faire bouger, il change de place avec la souris et le nouveau sommet devient le 'nouveau sommet courant'.

  • manuellement la souris rend actif un nouveau sommet en le pointant et en le déplaçant
  • lorsque l'on fait progresser le chiffre de la commande 'sommet courant' (en utilisant les flèches vertes à côté du chiffre), le point rouge passe progressivement de poignée en poignée du premier au dernier numéro et revient ensuite au n°1 (en tournant de gauche à droite).

Ce qui signifie qu'en tirant cette commande par sa flèche, sur le fond, on obtient un script qui pourra faire circuler le point rouge de poignée en poignée en adoptant la formule ' sommet courant augmente de 1' (l es flèches vertes avant les mots 'sommet courant')

Script pour 'passer' d'un sommet au suivant
Script pour 'passer' d'un sommet au suivant

Mais cette programmation n'incite en aucune façon les poignées à se déplacer pour modifier la forme du polygone.

Pour que le polygone voit sa forme changer, il va falloir déplacer les poignées par programme.

D'où l'utilité des 2 commandes suivantes :

  • Polygone sommet courant x
  • Polygone sommet courant y

Pour déplacer une poignée, nous allons utiliser une entité extérieure mobile rattachée à une des poignées et qui agit comme un MOTEUR DE DEPLACEMENT en remplacement de la souris. On va amarrer ensemble le sommet courant et ce moteur en positionnant la poignée sur ses coordonnées.

Il suffira ensuite de programmer le déplacement du moteur. Il entraînera dans sa suite le sommet du polygone.

[edit] Appel d'un script à l'intérieur d'un autre script

C'est donc du moteur et non du polygone que nous devons partir. Nous prendrons un objet dans le magasin des accessoires. Une ellipse par exemple, nommée 'MOTEUR' et dont la taille sera réduite pour se ramasser autour de son centre de rotation qui est aussi celui de sa localisation spatiale par les coordonnées x et y ; elle sera l'élément dynamique du couple polygone/moteur.

Nous lions les coordonnées d'un sommet à celles de notre moteur (ici l'ellipse bleue)
Nous lions les coordonnées d'un sommet à celles de notre moteur (ici l'ellipse bleue)

Les 2 scripts qui vont piloter les opérations seront donc issus du visualiseur de commande du moteur. Quelques explications :

Le premier script, 'moteur positionne', va chercher dans le visualiseur de commandes du polygone et dans la catégorie 'Sommets' le numéro du sommet courant (le cercle rouge) qui devra être mis en relation avec le moteur :

Polygone | sommet courant <- 1. 

Il indique ensuite que les coordonnées du sommet courant doivent s'aligner sur les coordonnées du moteur.

La commande du polygone 'sommet courant X' est prise par sa flèche dans le visualiseur du POLYGONE, la commande 'moteur X est prise par sa brique dans le visualiseur du MOTEUR et placée sur la partie chiffrée de la commande X du polygone :

Polygone | sommet courant X <- moteur X

Idem pour la position Y.

Lorsque le script 'POSITIONNE' est activé, le sommet courant du polygone rejoint le moteur quelle que soit sa position sur l'écran. Il suffit de déplacer plusieurs fois le moteur et d'activer le script pour s'en assurer.

Mais ce script est insuffisant pour programmer une action dynamique, il va donc falloir lui adjoindre un 2eme script qui va faire tourner le moteur (Moteur tourne). Cependant, déplacer le moteur (moteur avance de 5 , tourne de 5) n'entraîne pas le déplacement du sommet courant du polygone. Il va donc falloir trouver un système qui enchaîne à la fois le mouvement du moteur et sa liaison avec le sommet courant du polygone. Nous allons avoir besoin, à l'intérieur de ce script d'une commande qui provoque la mise en service du script précédent (MOTEUR POSITIONNE).

Pour cela, il faudra ouvrir le visualiseur du moteur et choisir, dans la catégorie scripts, la ligne correspondant au script positionne et l'introduire dans le script tourneelle prend l'aspect, non pas d'un script, mais d'une commande qui exécute ce script. Voir la figure ci-dessous.

Dans la catégorie scripts du moteur nous attrapons le script positionne pour le placer dans le script tourne du moteur
Dans la catégorie scripts du moteur nous attrapons le script positionne pour le placer dans le script tourne du moteur

Activé, le script moteur tourne 'exécute automatiquement la liaison moteur/polygone assurée par le script positionne et déplace le moteur, ce qui fait tourner les 2 éléments associés.

Nous avons là le principe d'un appel de script, l'activation du script moteur tourne met en service le script moteur positionne déclenchant ainsi un système d'activation de scripts emboîtés les uns à l'intérieur des autres.

Ce procédé est fréquemment utilisé en programmation Squeak et se retrouvera en de nombreuses circonstances.

[edit] Autres situations

Mais on peut élargir le problème tout en restant dans la même optique.


Le point moteur anime un seul sommet appartenant à 2 ou plusieurs polygones.
Le point moteur anime un seul sommet appartenant à 2 ou plusieurs polygones.

Polygone curviligne à 6 poignées et 3 points moteurs (moteur, moteur2, moteur3). La construction des scripts est la même. Chaque point moteur est raccroché à une poignée différente et les circuits sont programmés avec des chiffres eux aussi différents ( avance de... tourne de...)


Plusieurs points moteurs déplacent plusieurs sommets d'un même polygone.
Plusieurs points moteurs déplacent plusieurs sommets d'un même polygone.

On peut aussi imaginer qu'un seul point moteur peut déplacer successivement les poignées d'un même polygone en changeant de sommet courant. Dans ce cas le polygone épouse la forme du tracé. On peut chercher toutes sortes de combinaisons croisées faisant jouer ensemble Points Moteurs et Sommet fixes et mobiles de plusieurs polygones. Il est à remarquer que les poignées qui ne sont pas associées à un point moteur restent fixes si le point moteur ne change pas de poignée.

[edit] Exemples

Nous allons donner quelques exemples de combinaisons possibles.

[edit] La machine à suivre une tracé (semi-automatique)

Deux polygones et un point moteur
Deux polygones et un point moteur

La programmation comporte les 2 scripts nécessaires à la manipulation des 2 polygones par un point moteur (moteur place et moteur joue). Mais il a fallu l'étoffer par quelques scripts supplémentaires pour mettre la machine à tracer en position SEMI-AUTOMATIQUE et lui donner les moyens de lancer ou arrêter à volonté les opérations, de produire des tracés variés, droits ou curvilignes et dont on peut changer, l'épaisseur du trait, sa couleur, la direction de son déplacement etc...

La machine semble déplacer le crayon, en réalité ce sont les scripts du point moteur qui déterminent le tracé. Dans les chapitres Objets articules et Objets articulés 2, nous construisons des machines dont le tracé provient des déplacements des divers organes de la machine.

On retrouve les figures produites par la géométrie tortue du langage logo. Les tracés sont produits par les scripts qui animent le point moteur, certains seront placés sur l'écran ce qui permettra de les mettre en position de marche/arrêt selon les nécessités, et dont on pourra manipuler les paramètres à volonté (ne pas oublier d'activer le point d'exclamation du script 'CRAYON' chaque fois que l'on a changé les paramètres, sinon le changement n'est pas pris en compte).

Mais quelques autres seront représentés sur l'écran par un bouton afin d'éviter les encombrements : 'changer de cap', 'effacer', etc

Observer la manœuvre à faire pour obtenir le menu permettant de choisir l'option : bouton pour lancer ce script.

Procédure pour obtenir un bouton afin de lancer un script
Procédure pour obtenir un bouton afin de lancer un script

Le projet avec sa marche à suivre :

[edit] Personnaliser le point moteur

Le point Moteur est remplacé par une figure réalisée sur l'espace Dessin. Cela lui donne accès à la rubrique 'DESSINER' et aux options 'FIXER LE GENRE DE ROTATION dont on a choisi ' NE PAS TOURNER' pour le va-et-vient du masque.

Le masque se rattache à la silhouette à l'aide du bouton 'bob tenir'.

On peut changer de place tous les éléments.

Voir et étudier le projet :

[edit] Plusieurs points moteurs pour un même polygone curviligne

Changer les points moteurs de place pour changer les configurations du polygone curviligne.

Voir et étudier le projet :

[edit] Combinaisons diverses de points moteurs - la couveuse artificielle

Cinq polygones articulés diversement autour de 2 points Moteurs.

Voir et étudier le projet :

[edit] Le point moteur déplace plusieurs sommets

[edit] Transformer un polygone irrégulier en son équivalent régulier

  • A partir du nombre de sommets, on calcule l'angle dont on doit tourner pour tracer le polygone régulier :
  • On fait tracer ce polygone régulier par le point moteur :
  • Le point moteur déplace un sommet après le tracé d'un côté :

Image:MoteurScriptEditorDeplaceSommet.png Image:MoteurScript EditorBouge2.png

  • On passe au sommet suivant :
  • Un test arrête le script lorque l'on est revenu sur le sommet 1 :
  • Si de plus l'on enregistre la forme du premier sommet et qu'on déforme par morphisme le passage au polygone régulier, on obtient un animation de la transformation. Dans ce cas en plus d'arrêter le script, on crée les formes et on lance l'animation :
  • Le script polygoneRegulier initialise et lance le tout :

Voir et étudier le projet :

[edit] En résumé

Les possibilité offertes par ces points mobiles qui se déplacent dans des ensembles qui restent fixes, fait immanquablement penser à nombres de phénomènes que l'on peut observer ou imaginer comme le fonctionnement de machines mécaniques, industrielles ou étant du ressort de GEO TROUVETOUT, ou comme le développement de configurations insolites ou fantastiques.

Il y a là tout un univers susceptible d'exciter l'imagination tout en suivant avec rigueur la logique de la programmation.

Dans les objets articulés nous verrons la démarche inverse, des structures articulées animées de leur mouvement mouvement propres et portant un crayon tracent des courbes diverses alors qu'avec le principe du point moteur le parcours de point ce point qui entraîne la déformation des objets.

[edit] Chapitre suivant

Personal tools