Étape 6: MEL Script
Maintenant, nous allons écrire une fonction récursive qui implémente l’algorithme de fractale susmentionné. Il y a plusieurs façons d’appliquer cela, mais je vais vous montrer les plus faciles à comprendre (j’espère) !
Tout d’abord, déclarez la fonction generateFractal, elle prend deux paramètres d’entrée, un vecteur, float et un int.
Nous avons à écrire une vérification pour voir quel niveau de récursivité nous courent. Ce niveau de récursivité réfère à quelle profondeur nous sommes dans le processus. Lorsque nous créons le premier cube nous sommes niveau 0, et puis lorsque le deuxième jeu de cubes (enfants) sont faites, alors nous sommes au niveau 1, etc.. Pour nos besoins que nous voulons spécifier une profondeur maximale de récursivité et decrement, ce nombre jusqu'à arriver à -1, alors seulement arrêtera la fonction.
La ligne suivante va créer un polyCube avec une hauteur, largeur et profondeur de $size, qui est l’un des paramètres d’entrée de la fonction generateFractal. Nous allons voir comment ceci est défini dans le code un peu.
Ensuite, nous entrons le cube dans la position. Vous pourriez penser, oh, attends, n’avons-nous pas tout d’abord sélectionner le cube ? Nope ! Par défaut, Maya sélectionné le dernier objet créé dans la scène. C’est pratique.
Maintenant, nous calculons que la prochaine cube(s) taille et dans quelle mesure compensée il sera dans le cube nous juste faites (aka son parent). Le cube suivant sera la moitié de sa société mère et sera compensée par un quart de taille de son parent et la moitié de sa propre taille. Si cela ne fait pas de sens, ne vous inquiétez pas. Une fois que nous avons commencer à exécuter cette fonction pour générer des fractales, vous pouvez jouer avec ces chiffres et voir comment ils affectent l’esthétique de la fractale.
Bon, il faut calculer les positions centrales, pour les nouveaux cubes, nous allons créer. Nous avons déjà calculé le décalage pour les nouveaux postes sont égales au centre précédent, avec un décalage dans la direction appropriée.
Enfin, nous appelons la fonction generateFractal en lui-même ! Woohoo récursivité:) Notez que nous transmettons à la fonction les nouvelles positions pour les centres, la taille et niveau de récursivité !
Tout en construisant et tester cette fonction, vous allez probablement finir par avec des tonnes de cubes dans votre scène. Puis Maya ralentit et finit par se bloquer. Donc avant que nous générons nos fractale, nous allons interroger Maya pour tous les objets avec le préfixe pCube et supprimez-les. Cela nous donnera une scène propre.
Nous allons maintenant configurer les paramètres initiaux que nous passerons à notre fonction generateFractal ! Nous allons centrer notre premier cube à (0,0,0) et commencer avec une taille de 100 unités, et nous irons 6 niveaux (en réalité 7 comptage zéro) profondément.
Puis nous allons l’appeler la fonction ! Maya va traîner pendant une seconde et processus de ce que vous avez dit juste qu’il fasse. Maya pourrait geler pendant une seconde ou dix. Ne vous inquiétez pas, c’est tout à fait normal. J’ai trouvé que 6 est le plus haut niveau, que je peux réaliser sur ma machine avant de confondre Maya et provoquer un accident ! L’appel de cette fonction est comme « prendre la pilule rouge »... J’espère que ce souffle de votre esprit :