sectionarea obiectelor 3d
DESCRIPTION
Sectionarea obiectelor 3D. Cernea Alina – 343 C4 Radulescu Lucian – 343 C4. Ideea implementarii :. Reprezentarea kiwiului ca un skydome dublu. Reprezentarea miezului ca un “triangle fan” (triunghiuri asezate ca feliile de pizza). Probleme si solutii:. 1. Textura 2. Cursivitatea texturii - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/1.jpg)
Sectionarea obiectelor 3D
Cernea Alina – 343 C4
Radulescu Lucian – 343 C4
![Page 2: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/2.jpg)
Ideea implementarii :
Reprezentarea kiwiului ca un skydome dublu.
Reprezentarea miezului ca un “triangle fan” (triunghiuri asezate ca feliile de pizza).
![Page 3: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/3.jpg)
Probleme si solutii:
1. Textura 2. Cursivitatea texturii 3. Legatura intre clase (corp fruct si miez) 4. Ajustarea taieturilor
![Page 4: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/4.jpg)
1. TexturaProbleme
Nu se potrivea textura pentru miez. Nu am gasit textura pentru coaja.
![Page 5: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/5.jpg)
1. Textura [1]
Solutii Pentru miez, doar am ajustat dimensiunile
imaginii texturate. Pentru coaja, am decupat din doua imagini
bucati de coaja. Aceste decupaje le-am suprapus cu un anumit grad de transparenta (40%).
Am scalat imaginea obtinuta si am facut un pattern pentru o imagine mai mare. ( I )
![Page 6: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/6.jpg)
1. Textura [2]
Solutii Am repetat pasul anterior de 2 ori. ( II & III ) Am editat in Gimp imaginea, am adaugat nuante
de culoare (verde / maro). ( IV ) Am aplicat textura pe model pentru a obtine
rezultatul final ( un kiwi ). ( V )
![Page 7: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/7.jpg)
I IIIII
IV
V
![Page 8: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/8.jpg)
2. Cursivitatea texturiiProblema
Textura nu era cursiva. Se puteau vedea liniile de taiere dintre
diferitele bucati ale fructului.
![Page 9: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/9.jpg)
2. Cursivitatea texturiiSolutia
O varianta a fost desenarea celei de-a doua jumatati a fructului in sens invers.
Am folosit functia glScalef(1,1,-1) pentru a
rasturna apoi cea de-a doua jumatate. Astfel linia de taietura a devenit invizibila.
![Page 10: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/10.jpg)
3. Legatura intre clase Problema Fructul este creat dintr-un obiect de tipul
HalfKiwiSkin si mai multe obiecte de tipul
Miez Aceste obiecte trebuiesc mentinute in
legatura permanenta, astfel incat orice modificare a corpului kiwiului sa lanseze modificarile corespunzatoare ale miezului.
![Page 11: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/11.jpg)
3. Legatura intre clase Solutia Clasa HalfKiwiSkin are o colectie de
obiecte de tipul Miez, pe care le initializeaza in constructor.
Astfel, in desenarea obiectului putem apela functiile de transformare proprii ale clasei Miez.
Desenarea obiectelor Miez se face insa in main, dupa desenarea corpului fructului.
![Page 12: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/12.jpg)
![Page 13: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/13.jpg)
4. Ajustarea taieturilor [1] Problema
![Page 14: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/14.jpg)
4. Ajustarea taieturilor [2] Problema Initial varfurile ce
conturau taietura nu reprezentau un cerc perfect.
Problemele se rasfrangeau si asupra pozitionarii miezului.
![Page 15: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/15.jpg)
4. Ajustarea taieturilor Solutia Recalcularea indicelui corespunzator
varfului care inchidea perfect o banda din dom.
![Page 16: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/16.jpg)
Cum se poate dezvolta proiectul ?
Fiecare felie sau bucata din kiwi poate sa
fie construita ca un obiect independent fata de celelalte.
Putem sectiona kiwi-ul si longitudinal (chiar in acelasi timp cu o sectiune transversala ); pentru aceasta implementare insa este bine sa folosim alta imagine de textura.
![Page 17: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/17.jpg)
5. Cateva detalii [1]de implementare
Am utilizat clasele HalfKiwiSkin si Miez.
Fiecare clasa implementeaza metodele de setare a pozitiei si de desenare.
![Page 18: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/18.jpg)
5. Cateva detalii [2]
de implementare
In constructorul clasei HalfKiwiSkin se calculeaza efectiv varfurile si sliceurile jumatatii de kiwi.
In constructorul clasei Miez se seteaza raza si numarul de varfuri iar constructia efectiva si texturarea sunt implementate in metoda de desenare a clasei.
![Page 19: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/19.jpg)
5. Cateva detalii [3]de implementare
In Main.cpp se afla toate functiile care uploadeaza texturile. Tot aici se initializeaza instantele clasei HalfKiwiSkin.
Ca punct de plecare pentru intregul proiect am utilizat scheletul laboratorului 4.
![Page 20: Sectionarea obiectelor 3D](https://reader036.vdocuments.pub/reader036/viewer/2022081418/56814b77550346895db865f1/html5/thumbnails/20.jpg)
SFARSIT