UVOD U 3D PROCESSING - PRIMERI
Kreiranje 3d objekta (kocka) u processingu
Kroz sledeći primer je pokazano kako se kreira kocka u 3D okruženju, koristeći Processing biblioteku sa programskim jezikom JAVA. Na slici ispod se u okviru canvas elementa koji pripada ovoj html strani može izvršiti aplikacija kreirana u processing-u, a koja prikazuje kocku u prostoru, u 3D modu. Da bi se aplikacija izvršavala u 3D modu, u setup() metodi se definiše veličina prikaza, kao i 3D mod, pozivom size metode processing-a: tako da se položaj kamere menja:
size(500,500,P3D);
Za 3D prikaz su potrebna svetla , koja se u najopštijem slučaju uključuju pozivom processing-ove metode lights() i kamera pozivom metode camera().
U animaciji prikazanoj ispod, položaj kamere se menja pritiskom na tastaturi sledećih tastera(keyPressed() događaj) ili prevlačenjem prsta po ekranu u slučaju mobilnog uređaja ili tableta(touch događaji):
U animaciji prikazanoj ispod, položaj kamere se menja pritiskom na tastaturi sledećih tastera(keyPressed() događaj) ili prevlačenjem prsta po ekranu u slučaju mobilnog uređaja ili tableta(touch događaji):
- povećava x koordinatu ↑ ili prevlačenjem prsta po ekranu(mobilni i tablet)
- smanjuje x koordinatu ↓ ili prevlačenjem prsta po ekranu(mobilni i tablet)
- povećava z koordinatu ← ili prevlačenjem prsta po ekranu(mobilni i tablet)
- smanjuje z koordinatu → ili prevlačenjem prsta po ekranu(mobilni i tablet)
- povećava y koordinatu 'q' ili dvaput brzo dodirnuti ekran levo(mobilni i tablet)
- smanjuje y koordinatu 'w' ili dvaput brzo dodirnuti ekran desno(mobilni i tablet)
Animacija ne radi? Učitajte stranicu ponovo(refresh)
← scroll horizontal →
Kod je prikazan na slikama 1-2
Na početku scatch-a se definišu promenljive x, y, z, kojima je predstavljen položaj kamere u prostoru. Da bi se dobila 3D slika potrebno je definisati osvetljenje(lights) i kameru. U liniji 16, na slici 1, unutar draw() metode processing-aa definisana je kamera, pozivom processingove metode camera(), kojoj se kao parametri prosleđuju 9 parametra, od kojih se prva 3 odnose na koordinate kamere u 3D prostoru.
U nastavku se vidi kompletna keyPressed() metoda:
U nastavku se vidi kompletna keyPressed() metoda:
Kreiranje sopstvenih(custom)oblika u Processing-u. Primer: Piramida sa rotacijom oko svoje ose
3D geometrijski oblici se mogu dobiti koristeći naredbe vertex(x,y,z) koje povlače liniju od prethodne, do tačke određene koordinatama x, y i z koje se kao parametri prosleđuju vertex funkciji. Ovo se mora naći između poziva: beginShape() .... i ... endShape().
U sledećem primeru će biti na ovaj način konstruisana piramida, kojoj je dodata i rotacija oko ose koja prolazi kroz teme piramide i normalna je na njenu osnovu, što se može videti na animciji ispod.
U sledećem primeru će biti na ovaj način konstruisana piramida, kojoj je dodata i rotacija oko ose koja prolazi kroz teme piramide i normalna je na njenu osnovu, što se može videti na animciji ispod.
Prvo se unutar glavnog skeča definišu promenljive fi koja predstavlja ugao rotacije piramide, dok x, y i z predstavljaju koordinate položaja kamere. Unutar setup() medode se definišu veličina okvira, kao i upotreba P3D moda za renderovanje 3D objekata.
Piramida se kreira unutar draw() metode i to tako da je osnova piramide paralelna sa X0Y ravni, a vrh se nalazi na Z osi. Zatim se ona rotira oko X ose za PI/2, da bi vrh piramide bio odozgo. Ovom rotacijom će se i Z osa zarotirati za 90, tako da će njen novi položaj sada biti na vrhu prikaza, tamo gde je prethodno bila negativna strana Y ose.
Druga rotacija, oko Y ose će vršiti rotaciju piramide oko svoje ose za ugao od PI/6+fi radijana.
Na početku draw() metode podese se boja pozadine (background(200)) na svetlo sivu, uključi osvetljenje(lights()), doda tačkasto osvetljenje( pointLight(155,255,255,-140,160,244)), podesi kamera (camera(x,y,z,0,0,0,0,1,0)) i translira koordinatni sistem do sredine okvira(translate(width/2,height/2,0)). Ova translacija se vrši u X0Y ravni jer je z koordinata translacije jednaka nuli.
Položaj kamere se može menjati, kako se menjaju x, y, i z koordinata, pritiskom na neki od tastera za pomeranje ili tipkama 'q' i 'w' unutar definisane keyPressed() metode, što se može videti na slici 5.
Piramida se kreira unutar draw() metode i to tako da je osnova piramide paralelna sa X0Y ravni, a vrh se nalazi na Z osi. Zatim se ona rotira oko X ose za PI/2, da bi vrh piramide bio odozgo. Ovom rotacijom će se i Z osa zarotirati za 90, tako da će njen novi položaj sada biti na vrhu prikaza, tamo gde je prethodno bila negativna strana Y ose.
Druga rotacija, oko Y ose će vršiti rotaciju piramide oko svoje ose za ugao od PI/6+fi radijana.
Na početku draw() metode podese se boja pozadine (background(200)) na svetlo sivu, uključi osvetljenje(lights()), doda tačkasto osvetljenje( pointLight(155,255,255,-140,160,244)), podesi kamera (camera(x,y,z,0,0,0,0,1,0)) i translira koordinatni sistem do sredine okvira(translate(width/2,height/2,0)). Ova translacija se vrši u X0Y ravni jer je z koordinata translacije jednaka nuli.
Položaj kamere se može menjati, kako se menjaju x, y, i z koordinata, pritiskom na neki od tastera za pomeranje ili tipkama 'q' i 'w' unutar definisane keyPressed() metode, što se može videti na slici 5.
U nastavku draw() metode vidimo kako se upotrebom vertex() naredbe linije konture piramide iscrtavaju između tačaka, čije se koordinate šalju kao parametri vertex() metode. Ovo se nalazi između naredbi beginShape() i endShape(CLOSE). Unutar ovih naredbi se definiše i boja linije sa stroke() naredbom. "CLOSE" parametar indikuje da se kontura piramide zatvori na kraju, tj. da poligonalna linija ne bude otvorena nego da se završi spojena sa početnom tačkom obrazujući zatvorenu konturu.
Prethodno
|< Analiza klizanja tela niz strmu ravan primer |
Sledeće
Kretanje 3D objekata u processing-u >| |