Visebojno parametarsko poplocanje-“while” postupak

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“

Rešenje 2

Zaključak: Ovaj način ima nedostatak u tome što delovi Mesh-a koji su potpuno ravni nemaju definisanu boju iz Material Editor-a.

Greska pri idealno ravnoj površini

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])

Konačno rešenje

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.

Published
Categorized as 00 Radovi

Višebojno parametarsko popločanje-skripta pomoću „if“ petlje

Strategija pri rešavanju problema bila je da se za bilo koji nacrtan mesh terena, prepozna određena visina kojoj će se dodeliti željena boja. Kao reakcija na prepoznatu visinu jednog segmenta mesha, Max treba da napravi „box“, odnosno pločicu određene boje.

Proizvoljan mesh za teren

Na početku skripte potrebno je definisati sve globalne promenljive (koje će se koristiti kroz celu skriptu) kao što su dužina, širina i visina Mesha i njegov maksimum i minimum. Takođe se definiše širina i dužina jednog segmenta Mesha.

duzinaMesha = $.max.x – $.min.x,

sirinaMesha = $.max.y – $.min.y,

visinaMesha = $.max.z – $.min.z,

maksMesha = $.max.z,

miniMesha = $.min.z,

pozicijaMeshaX = $.pos.x,

pozicijaMeshaY = $.pos.y,

objekat = $,

 sirina = sirinaMesha / JK.value,

duzina = duzinaMesha / JR.value,

Formiranjem „for“ petlje je omogućen prolazak kroz svaki segment u koloni, a zatim i u redovima dodavanjem promenljive „duzina“ posle svakog prolaska kroz celu kolonu (da bi se prešlo u novu kolonu)

Da bi se svaki segment registrovao korišćen je zrak „ray“ koji je definisan u suprotnom smeru od z-ose kako bi presekao dati Mesh.

zrak = ray [Xobj, Yobj, 1000] [0, 0, -1]

                                             pozicijaZrak = (intersectRay objekat zrak)

Sledeće naredbe se izvršavaju samo na mestima na kojima dolazi do presecanja zraka i Mesha.

if pozicijaZrak != undefined do

                                                     (……..

U Materijal Editor-u formiramo 6 boja u prvih šest polja (u primeru su korišćene nijanse od bele do tamno zelene).Zatim pomoću „if“ petlje definišemo „poziciju z“, odnosno visinu Mesha na mestu presecanja sa zrakom, i u zavisnosti od te visine dodelimo određenu boju iz Material Editor-a. Ova operacija se ponavlja 6 puta za šest različitih visina, odnosno boja. (Ukupna visina Mesha je podeljenja na šest šestina)

if pozicija.z < (miniMesha + visinaMesha/6) then

                                       ( materijal = meditMaterials[1] )

else…ponavlja se samo se visinaMesha množi sa {2, 3, 4, 5 i6}

Na kraju je definisan „box“ , tj pločica određene visine, dužine, debljine i materijala.

box length: sirina width: duzina height: visina.value pos:pozicijaObj lengthsegs:1 widthsegs:1 wirecolor:black material:materijal

            Cela ova skripta je upakovana u „rollout“, dijalog kojim se jednostavnije mogu menjati parametri (broj pločica u koloni/redu i njena debljina). Klikom na dugme „Popločaj“ izvršava se funkcija date skripte. Ako Mesh nije selektovan izadje poruka za podsećanje.

 

rollout Poplocanje “Plocice”

(           spinner JK “Br. u koloni: ” type:#integer range:[1,1000,30]

spinner JR “Br. u redu: ” type:#integer range:[1,1000,30]

spinner visina “Debljina plocice: ” type:#integer range:[1,1000,2]

button napravi “Poplocaj”

on napravi pressed do

if $ != undefined then

(……)

else

(messageBox “A da selektujes nesto mozda?”)

— rollouta

createDialog Poplocanje width:200  — otvara dijalog

 

Popločavanje        Izgled finalnog rezultata

 

Published
Categorized as 00 Radovi

Višebojno parametarsko popločanje (Max Script)

softlab-ny-1

Opis: Na projektu popločanja baviću se projektovanjem pomoću Max Script-a. Plan je da pomoću njega ostvarim ideju za popločanje koja će proizaći iz samog premeravanja i nivelacije terena.

Ideja se zasniva na korišćenju boja koje će se u zavisnosti od konfiguracije terena menjati, tako što će na jednakim visinama biti zastupljena jedna boja u određenoj koncentraciji, a pri promenama nivelacije ta boja ce da se menja postepenim primesama drugih boja. Time će se ostvariti obojeni prikaz prelaza po visinama koji će istaći prirodu površine. Tako će najviše tačke biti istaknute koncentracijom jedne boje, najniže koncentracijom druge boje, a između će se dogoditi postepeni prelaz.

Plan je da se koriste četiri boje (crvena, žuta, narandžasta i zelena).

Dodatna ideja je zasnovana na istom principu. Ona stupa na snagu ukoliko se odluči da se teren izravna. Moj predlog bi ostao isti, samo što bi sada sve ove boje bile na istom nivou i predstavljale bi sećanje na originalan reljef terena.

Published
Categorized as 00 Radovi