Drugi nacin resavanja problema može da se izvede pomoću „while“ operacije. Početak skripte sa globalnim promenljivama se isto definiše kao kod „if“ postupka. U „for“ petlju se dodaje nova lokalna promenljiva „k“ , kojoj se dodeljuje vrednost 0 (k=0). Zatim se pomoću „while“ i promenljive „k“ definiše visina segmenta Mesha, odnosno „pozicija.z“: while (pozicija.z > miniMesha + k * visinaMesha/6) do… i zada se materijal iz Material editor-a: (k=k+1 materijal = meditMaterials [k]) Na kraju je ponovo definisan rezultat pomoću „box-a“. Ova skripta je takodje uokvirena sa „rollout-om“
Zaključak: Ovaj način ima nedostatak u tome što delovi Mesh-a koji su potpuno ravni nemaju definisanu boju iz Material Editor-a.
Problem može da se reši ukoliko se definiše K=-1 (umesto k=0), ako se prilikom odredjivanja materijala koristi „meditMaterials [k+1]“ , a zbog toga mora i visinaMesh-a da se deli sa brojem manjim za 1 od broja korišćenih materijala, da se ne bi koristio i materijal u sledećem polju Material Editora. Deo skripte izgleda ovako: k=-1 while (pozicija.z > miniMesha + k * visinaMesha/5) do (k=k+1 materijal = meditMaterials [k+1])
U svakom slučaju, ni jedan teren u prirodi nije idealno ravan tako da su obe varijante izbora „k“ prihvatljive. Za razliku od „if“ postupka rešavanja, ovaj način je fleksibilniji u smislu što može jednostavnije da se promeni broj boja koji želimo da koristimo. To se postiže jednostavnom promenom delioca „visinaMesha/ {…4, 5, 6, 7, 8…}. U „if“ postupku bi morali da dodajemo ili brišemo „if“ petlje, što je komplikovanije.