Exemple 1

J’ai fait l’exercice du premier exemple qui consiste à insérer des points épars au hasard dans un espace 3D qui se déplaceront selon des directions causales.

La première étape consiste à créer la population des agents, qui dans ce cas seront nos points. J’insère une boîte avec la commande Center Box (Surface/Primitive) et je connecte ses dimensions x,y,z à un slider pour pouvoir les régler. J’insère ensuite le composant Populate 3D (Vector/Grid) pour insérer un certain nombre de points aléatoires et en position aléatoire à l’intérieur de la boîte. Je contrôle le nombre de points grâce à un curseur de nombres entiers. J’insère alors le composant Random vector (Boid/Legagy) pour insérer des vecteurs aléatoires qui déplacent les points. Je le relie au nombre de points défini par le curseur.

1

La deuxième étape consiste à créer un cycle de traitement pour déplacer les points. Pour ce faire, j’insère les deux composants d’Anemone appelés Loop Start et Loop End. Après les avoir connectés entre eux, j’insère un curseur connecté à l’entrée N du Loop Start pour en contrôler le nombre d’itérations. Je connecte les points et les vecteurs de déplacement aux entrées DO et D1 de la Loop Start. Je connecte enfin la sortie D1 de la Loop Start à l’entrée D1 de la Loop End. J’insère également un composant Move (Transform/Euclidean) auquel je connecte la sortie D0 et D1 du Loop Start (c’est-à-dire les points et les vecteurs) de sorte qu’en connectant la sortie G du composant move à l’entrée D0 du composant Loop End, je puisse obtenir que les points se déplacent selon les directions aléatoires ordonnées par les vecteurs.

2

Je dois ensuite créer les trajectoires qui parcourent les points. J’active la commande Record data avec le bouton droit de la souris sur la boucle d’extrémité et j’obtiens les points qui forment les trajectoires. Je dois maintenant obtenir la liste de tous ces points grâce à la commande Flip Matrix (Sets/Tree) et ensuite un composant qui trace les polylignes reliant les points Polyline (Curve/Spline).

3

Enfin, je peux faire varier un peu les directions grâce au composant Random Wander (Boid/Legacy). Je branche l’entrée V à la sortie D0 du Loop Start et l’entrée S à la sortie C du Loop Start. Je branche également sa sortie à l’entrée T du composant Move. Je partage son domaine grâce au composant Construction Domain (Maths/Domain). J’insère le composant Pi (Maths/Util) et un slider pour que son domaine puisse être compris entre la valeur du slider et pigreco.

4

Exercise 2

Dans ce cas, nous construirons un système multi-agents capable de simuler un phénomène d’attraction en mettant dans l’espace des appâts qui attirent les agents.
Commençons par la composition des composants que nous avions déjà insérés auparavant. Nous ajoutons un composant Populate 3D (Vector/Grid) qui permet de positionner les appâts dont le nombre est contrôlé par un curseur. Nous produisons donc un vecteur dans la direction de l’appât grâce au composant Adhere (Boid/Adhere). Pour contrôler la force du vecteur, nous utilisons le composant Amplitude (Vecteur/Vecteur). Nous ajoutons ce vecteur nouvellement créé à celui correspondant à la direction actuelle de l’agent grâce à un composant Addition (Math/Operator). Évidemment, en variant les paramètres d’amplitude du vecteur, nous obtenons différentes trajectoires des agents.

5

Exercise 3

Simulation des trajectoires de vol des oiseaux. L’objectif est de calculer le vecteur résultant des trois forces qui influencent le vol des oiseaux : alignement, dispersion et cohésion. Dans ce cas, les points aléatoires sont placés sur une surface créée grâce au composant Popula2D (Vector/Grid). Pour recréer les trois mouvements des oiseaux utilisent les 3 composants du pulg-in Boid : Aligne, Adhere et Repulse. Nous les connectons aux composants Loop Start et Loop End d’Anemone et au composant Move pour déplacer les agents. Chaque composant de Boid sera également connecté à un composant Amplitude pour ajuster la force des vecteurs qu’ils génèrent qui vont déplacer nos composants qui dans ce cas seront nos faux oiseaux. Les composants Adhere et Repulse ont aussi un slider qui contrôle le champ de vision des oiseaux. J’ai joué un peu en variant les valeurs des Amplitude.

7

9

10

J’ai également regardé le composant qu’elle a inséré et créé pour atteindre le même objectif, mais sans utiliser Anemone et Boid.

11

Pratique

L’exercice est basé sur l’objectif de créer des piliers en forme d’arbre naturel à partir de points sur une surface plane.
Je crée une surface plane dans Rhino et la branche à un composant Surface (Params/Geometry). J’insère le composant Populate Geometry (Vector/Grid) pour créer les points et je règle la quantité et la position à travers deux curseurs. Je connecte le Populate Geometry au réseau de composants qui avait été créé précédemment pour le calcul des oiseaux. Spécifie que les trajectoires des points doivent être vers le bas et ajouter l’outil Tube (Surface/Freeform) à la fin de la chaîne pour rendre les trajectoires en forme de tube. Sur l’image, j’ai pu créer trois piliers en forme d’arbre. J’ai également résolu le problème de l’espace vide au début des trajectoires de l’agent en démarrant les tubes à partir des points d’origine grâce au composant Insérer (Définir/Lister/Insérer des éléments).

12

13

J’ai essayé de jouer avec le fichier Boid et je l’ai trouvé très amusant et facile. Enfin, j’ai jeté un coup d’œil sur le site de Yuxing Chen et j’ai été étonnée des différentes applications d’un tel système, allant de la reproduction d’images réalistes essayant de reproduire le schéma de certains animaux comme les oiseaux ou les poissons, à la définition de détails technologiques. J’ai trouvé l’application urbanistique très intéressante et inattendue.