Sectionarea obiectelor 3D

20
Sectionarea obiectelor 3D Cernea Alina – 343 C4 Radulescu Lucian – 343 C4

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 Presentation

Transcript of Sectionarea obiectelor 3D

Page 1: Sectionarea  obiectelor 3D

Sectionarea obiectelor 3D

Cernea Alina – 343 C4

Radulescu Lucian – 343 C4

Page 2: Sectionarea  obiectelor 3D

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

Probleme si solutii:

1. Textura 2. Cursivitatea texturii 3. Legatura intre clase (corp fruct si miez) 4. Ajustarea taieturilor

Page 4: Sectionarea  obiectelor 3D

1. TexturaProbleme

Nu se potrivea textura pentru miez. Nu am gasit textura pentru coaja.

Page 5: Sectionarea  obiectelor 3D

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

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

I IIIII

IV

V

Page 8: Sectionarea  obiectelor 3D

2. Cursivitatea texturiiProblema

Textura nu era cursiva. Se puteau vedea liniile de taiere dintre

diferitele bucati ale fructului.

Page 9: Sectionarea  obiectelor 3D

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

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

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
Page 13: Sectionarea  obiectelor 3D

4. Ajustarea taieturilor [1] Problema

Page 14: Sectionarea  obiectelor 3D

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

4. Ajustarea taieturilor Solutia Recalcularea indicelui corespunzator

varfului care inchidea perfect o banda din dom.

Page 16: Sectionarea  obiectelor 3D

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

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

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

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

SFARSIT