Sectionarea obiectelor 3D

Post on 16-Jan-2016

67 views 2 download

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

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