Sectionarea obiectelor 3D Cernea Alina – 343 C4 Radulescu Lucian – 343 C4
Jan 16, 2016
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 3. Legatura intre clase (corp fruct si miez) 4. Ajustarea taieturilor
1. TexturaProbleme
Nu se potrivea textura pentru miez. Nu am gasit textura pentru coaja.
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 )
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 )
I IIIII
IV
V
2. Cursivitatea texturiiProblema
Textura nu era cursiva. Se puteau vedea liniile de taiere dintre
diferitele bucati ale fructului.
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.
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.
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.
4. Ajustarea taieturilor [1] Problema
4. Ajustarea taieturilor [2] Problema Initial varfurile ce
conturau taietura nu reprezentau un cerc perfect.
Problemele se rasfrangeau si asupra pozitionarii miezului.
4. Ajustarea taieturilor Solutia Recalcularea indicelui corespunzator
varfului care inchidea perfect o banda din dom.
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.
5. Cateva detalii [1]de implementare
Am utilizat clasele HalfKiwiSkin si Miez.
Fiecare clasa implementeaza metodele de setare a pozitiei si de desenare.
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.
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.
SFARSIT