Stap 6: MEL Script
We schrijven nu een recursieve functie die de bovengenoemde fractal-algoritme implementeert. Er zijn vele manieren van uitvoering van dit, maar ik ga tonen het makkelijkst te begrijpen (hoop ik)!
Eerst, verklaren de functie generateFractal, duurt het een paar invoerparameters, een vector, float en een int.
We hebben om te schrijven een controle om te zien welk recursie niveau hebben. Dit niveau van recursie verwijst hoe diep wij worden binnen het proces. Wanneer we de eerste kubus maken wij zijn niveau 0 en vervolgens de tweede set van kubussen (kinderen) worden gedaan, dan zijn wij op niveau 1, enz. Voor onze doeleinden die wij willen geven een maximale recursie diepte en decrement dat nummer totdat we -1 bereiken, zal alleen dan de functie stoppen.
De volgende regel wordt een polyCube gemaakt met een breedte, hoogte en diepte van $size, dat is een van de invoerparameters van de generateFractal-functie. We zullen zien hoe dit is ingesteld in de programmacode in een beetje.
Vervolgens hebben we de kubus in positie weten te bewegen. Je zou kunnen denken, oh wacht, we hoeft niet eerst te selecteren de kubus? Nope! Standaard geselecteerd Maya het laatste object gemaakt in de scène. Dit is handig.
Nu berekenen we dat de volgende cube(s) grootte en hoe ver het gecompenseerd zal worden uit de kubus we zojuist (aka de bovenliggende). De volgende kubus zal de helft van de bovenliggende tabel, en zal worden gecompenseerd door een kwart van de bovenliggende grootte en de helft van zijn eigen grootte. Als dat niet steek houdt, me maak niet ongerust. Zodra we beginnen met het uitvoeren van deze functie voor het genereren van fractals kunt u spelen met deze nummers en zien hoe ze van de fractal esthetische beïnvloeden.
Oke, hebben we voor het berekenen van de posities van de center voor de nieuwe kubussen we gaan maken. Wij berekend al de offset zodat de nieuwe posities zijn gelijk aan de vorige centrum, plus een verschuiving in de juiste richting.
We noemen tot slot de generateFractal functie binnen zelf! Woohoo recursie :) Merk op dat we de functie de nieuwe posities voor de centra, de grootte en recursie niveau passeren!
Tijdens het bouwen en testen van deze functie, zult u waarschijnlijk eindigen met tonnen kubussen in je scène. Maya zal dan vertragen en uiteindelijk crash. Dus voordat we onze fractal genereert, we Maya opvragen voor alle objecten met het voorvoegsel pCube en verwijdert u deze. Dit geeft ons een schone scène.
Nu gaan we Setup de initiële parameters die we aan onze generateFractal-functie passeren! We onze eerste kubus op (0,0,0) centreren en beginnen met een grootte van 100 eenheden, en gaan we diep 6 niveaus (eigenlijk 7 tellen nul).
Dan noemen we de functie! Maya zal hangen voor een tweede en verwerken wat u zojuist verteld om te doen. Maya kunnen bevriezen voor een seconde of tien. Maak je geen zorgen, dat is volkomen normaal. Ik heb ontdekt dat 6 het hoogste niveau dat ik bereiken op mijn machine is kan voordat ik Maya verwarren en om te verpletteren veroorzaken! Het aanroepen van deze functie is als "het nemen van de rode pil"... Ik hoop dat het je geest waait: