Razumijevanje funkcioniranja geometrijskog cjevovoda (engl. geometry pipeline) važno je za izradu plug-inova koji na bilo koji način mijenjaju geometriju objekata scene. Geometrijski objekti koji se standardno isporučuju s 3DS maxom (sfera, kvadar, torus itd.) su parametarski objekti, što znači da su definirani ograničenim skupom parametara, umjesto memorijski i procesorski zahtjevnim geometrijskim i topološkim skupovima. Primjerice, za opis jedne sfere postavljene na scenu potrebni su samo podaci poput koordinate središta, radijusa te broja poligona koji tvore plašt kugle (dakle nivo definiranosti, odnosno "nazubljenosti" površine). Jedna od prednosti takvog pristupa je manja veličina .max datoteke, budući da zapisujemo većinom samo nekoliko parametara. Ukoliko želimo takve objekte iscrtati, potrebna nam je njihova reprezentacija u vidu mreže poligona (engl. polygon mesh), budući da programski dio 3DS maxa zadužen za iscrtavanje (engl. renderer) barata samo sa mrežom trokutastih poligona [8]. Pojednostavljeno rečeno, cjevovod je sustav kojeg upotrebljava 3DS max da bi omogućio promjenu čvorova uzastopnom primjenom modifikatora objekata. Na ulazu u cjeovovod je objekt klase BaseObject (npr. proceduralni objekt, definiran skupom parametara), a na izlazu je objekt u globalnim koordinatama (engl. world space state of object). Izlaz geometrijskog cjevovoda je ono što korisnik vidi u prozorima 3DS maxa (engl. viewport), odnosno ono što se dobiva iscrtavanjem. Da bi 3DS max mogao dobiti objekt u globalnim koordinatama, on mora ulaznom objektu aplicirati modifikatore objekata, jedan po jedan, kako su zadani na stogu modifikatora (engl. modifier stack). Naravno, pritom se podrazumijeva da su tom konkretnom objektu uopće primjenjeni neki modifikatori te tada prednosti koncepta geometrijskog cjevovoda dolaze do punog izražaja. Da bi se ubrzao izračun objekta u globalnim koordinatama, sustav održava priručnu memoriju globalnog prostora (engl. world space cache) za svaki čvor scene. Ta je memorija upravo rezultat izlaza geometrijskog cjevovoda s tim čvorom na ulazu, odnosno reflektira stanje objekta nakon primjenjenih svih modifikatora i koordinata transformiranih iz lokalnih u globalne. Paralelno sa priručnom memorijom globalnog prostora, sustav održava i interval valjanosti (engl. validity interval), koji predstavlja period vremena tijekom kojega memorija ispravno prikazuje objekt u globalnim koordinatama. Kada god sustav treba reprezentaciju objekta u nekom određenom trenutku animacije, primjerice za prikaz u prozorima, provjerava interval valjanosti tog čvora. Ukoliko je rezultat upita potvrdan, za reprezentaciju objekta koristi se priručna memorija globalnog prostora, čime se cijeli postupak ubrzava. Ukoliko je odgovor na upit negativan, odnosno priručna memorija globalnog prostora ne sadrži pravo stanje objekta u globalnim koordinatama za taj trenutak vremena, 3DS max prolazi kroz postupak evaluacije geometrijskog cjevovoda, a interval valjanosti se postavlja za taj trenutak. Kao dodatni mehanizam ubrzavanja evaluacije, odnosno procesiranja cjevovoda, on je podijeljen u kanale (engl. channel). Bit kanala je da dopušta modifikatorima objekata promjenu samo određenog dijela objekta, primjerice samo geometriju. Stog modifikatora sadrži svojevrsnu povijest objekta, uključujući parametre kojima je kreiran te modifikatore objekata koji su aplicirani na taj objekt. Stogu se može pristupiti programski iz plug-ina, kao i iz sučelja 3DS maxa. |