91
Eliminarea  suprafeţelor  ascunse (Ascunderea  suprafeţelor) determinarea suprafeţelor vizibile sau a liniilor vizibile sau eliminarea  suprafeţelor ascunse sau a liniilor ascunse

Ascunderea suprafetelor

Embed Size (px)

Citation preview

Page 1: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 1/91

Eliminarea 

suprafeţelor  ascunse

(Ascunderea 

suprafeţelor)

•determinarea suprafeţelor vizibile sau a liniilor vizibilesau

•eliminarea

 

suprafeţelor ascunse sau a liniilor ascunse

Page 2: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 2/91

Clasificarea 

algoritmilor •

 

metode

 

ale spaţ iului 

 

obiect 

complexitatea

 

O(n2)

 

(n obiecte)

• 

metode

 

ale spaţ iului 

 

imagine

complexitatea O(n.p) (n obiecte, p pixeli)

pentru fiecare pixel din imagine execută

−  determină obiectul cel mai apropiat de punctul de vizualizare, str ă bătut de proiector 

−  desenează pixelul

pentru fiecare obiect din spaţiul 3D execută

−  determină pentru fiecare obiect păr ţile care nu

  sunt obstrucţionate de alte păr ţi ale celorlalte obiecte;

−  desenează acele păr ţi în culoarea respectivă;

Page 3: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 3/91

Tehnici pentru creşterea eficienţei algoritmilor

de determinare a suprafeţelor vizibile

 

 Algoritmi

 

eficienţi de soratare

• 

Tehnici de coerenţă

 

Eliminarea

 

suprafeţelor 

 

“spate”

• 

Teste utilizând dreptunghiuri sauparalelipipede circumscrise

Page 4: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 4/91

 Algoritmi 

eficienţi de soratare

• 

Sortarea

 

este 

utilizată 

pentru 

a facilita 

comparaţiile 

de adâncime 

prin 

ordonarea liniilor, suprafeţelor 

 

şi

 

a obiectelor 

 

 în

 

funcţie 

de distanţa 

acestora 

faţă 

de planul de vizualizare.

Page 5: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 5/91

Tehnici de coerenţă

 

Coerenţa

 

presupune

 

a se ţine

 

cont în

 

scrierea 

algoritmilor  

de avantajele 

pe 

carele ofer ă

 

similitudinile 

diverselor  

păr ţi componente

 

ale obiectelor  

şi 

ale imaginilor  

de reprezentat.

Page 6: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 6/91

Tehnici de coerenţă

 

Coerenţ a

 

obiectelor 

• 

Coerenţ a feţ elor 

 

Coerenţ a

 

laturilor 

• 

Coerenţ a 

liniilor  

de scanare

 

Coerenţ a cadrelor 

Page 7: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 7/91

Eliminarea 

suprafeţelor  

“spate”

H

G

F E D

C

B

A

I

x

z

V(x ,y ,z )v v v

0<+++   DCz By Ax vvv

Page 8: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 8/91

Eliminarea 

suprafeţelor  

“spate” 

continuare

zv

yz

xv

direcţia devizualizare  punctul de

 vizualizare

 N(A, B, C)

Sistem dreapta

z v

yz

xv

direcţia de vizualizare  punctul de

vizualizare

 N(A, B, C)

Sistem stân a

C < 0 C > 0

Page 9: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 9/91

Teste

 

utilizând

 

dreptunghiuri

 

sau

 

paralelipipede

 

circumscrise

zv

yz

xv

y

x

y

x

Testul

 

“bounding box”

Page 10: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 10/91

Teste

 

utilizând

 

dreptunghiuri

 

sau

 

paralelipipede

 

circumscrise

Testul

 

“bounding volumes”

zmin1

zmax1

zmin2

zmax2

z

x0

1

2zmax2 < zmin1sau

zmax1 < zmin2

Page 11: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 11/91

Transformarea 

perspectivă

• 

fiind date două puncte P1 (x1, y1, z1) şiP2 (x2, y2, z2) se ascund unul pe cel ălalt? 

care este echivalentă cu următoarea întrebare:

• 

se afl ă punctele P1 şi P2 pe acelaşi proiector?

2

2

1

1

 z

 x

 z

 x=

2

2

1

1

 z

 y

 z

 y=şi

Proiectori

P3

P2(x2,y2,z2)

P1(x1,y1,z1)

Centrul proiecţiei

Page 12: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 12/91

Algoritmi 

pentru 

determinarea 

liniilor  

vizibile

• 

algoritmi 

ai 

spaţiului 

obiect•

 

algoritmi

 

pentru

 

determinarea

 

liniilor 

 

vizibile 

=> 

listă 

a segmentelor  

de linii vizibile

• 

algoritmii 

pentru 

determinarea 

suprafeţelor  vizibile

 

pot fi 

utilizaţi 

şi 

pentru determinarea

 

liniilor 

 

vizibile

 

=>nu

 

la o listă

 

de laturi 

vizibile 

ci 

la o matrice 

de pixeli vizibili

Page 13: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 13/91

Algoritmi 

pentru 

determinarea 

liniilor  

vizibile

• 

Algoritmul 

Roberts

 

Algoritmul

 

Appel

• 

Linii 

cu halo

Page 14: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 14/91

Algoritmul 

Roberts

• 

Se aplică muchiilor  

apar ţinând poliedrelorconvexe.1.

 

 Aplicarea unei tehnici de ştergerea

suprafeţelor “spate” 

care va elimina toatemuchiile care sunt comune la două poligoane “spate” ale unui poliedru.

2. 

Compararea fiecăreia dintre laturiler ămase cu fiecare dintre poliedrele care o

pot obstrucţiona.3.

 

Fiecare din por ţiunile r ămase din muchie 

vor fi comparate în continuare cuurmătorul poliedru.

Page 15: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 15/91

2. Compararea fiecăreia dintre laturile r ămase cu fiecaredintre poliedrele care o pot obstrucţiona -

 

optimizare

• 

Multe din poliedre pot fi excluse din comparaţiepe baza testelor utilizând extensiile: extensiileproiecţiilor lor pot să nu se suprapună pe axele xsau y sau extensia unui obiect poate fi maideparte, în z, decât a celuilalt.

• 

Deoarece algoritmul se restrânge la poliedreleconvexe există cel mult o mulţime continuă depuncte, apar ţinând unei linii, care poate fiobstrucţionată de un poligon. Deci fiecarepoliedru fie obstrucţionează total o linie fie lasă vizibile una sau două por ţiuni din linie.

Page 16: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 16/91

Algoritmul 

Appel•

 

determinarea

 

laturilor 

 

vizibile

 

apar ţ inând 

 

 poligoanelor •

 

vor  

fi 

luate 

 în 

considerare 

doar  

laturile 

care

apar ţin 

feţelor  

“faţă”

Mă i i ă “i i ibilit t

Page 17: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 17/91

Mărimea 

numită 

“invizibilitatea cantitativ ă”

 

a unui 

punct 

de pe 

o latur ă

 

numărul

 

poligoanelor 

 

“faţă”

 

care

 

obstrucţionează

 

punctul 

respectiv 

faţă de poziţia de vizualizare

IC=IC-1  IC=IC+1

Linie 

vizibilă 

=> IC=0

EXEMPLU

Page 18: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 18/91

EXEMPLU

J

Q

PO

 N

ML

F

E

D

C

B A

2

1 11 0 020

S

Li ii t

Page 19: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 19/91

Linii 

contur •

 

Pentru

 

poligoanele

care fac 

parte 

dintr-un 

poliedru 

 închis:

O “linie 

contur” 

este 

o linie 

care apar ţine 

unui 

poligon

 

“faţă”

 

şi

 

unui

 

poligon 

“spate”.•

 

Pentru 

poligoane 

carenu

 

fac

 

parte

 

dintr-unpoliedru

 

 închis:O “linie

 

contur”

 

este

 

o

 

linie

 

care apar ţine 

doar  

unui 

poligon “faţă”.

J

Q

PO

 N

ML

F

E

D

C

B A

2

1 11 0 020

S

“linii

 

contur”: AB, CD, DF, RS, KL

nu 

sunt 

“linii 

contur”: 

CE, EF,JK,QP

“li ii ” l l ă i i d i ă

Page 20: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 20/91

“linii 

contur” 

relevante 

pentru 

latura 

căreia 

i se determină

“invizibilitatea

 

cantitativ ă”

linia

 

de contur 

 

trebuie

 

 

str ăpungă

 

triunghiul

 

format dinpunctul

 

de vizualizare

 

şi

 

cele

 

două

 

extremităţi

 

ale laturii

 

pentru

 

care se determină

 

invizibilitatea

 

cantitativă

J

Q

POM

L

F

E

D

C

B A

2

1 11 0 020

S

RS

 

şi DF nu sunt liniide contur relevante

Page 21: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 21/91

“Regula

 

parităţii

 

impare”

Page 22: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 22/91

Determinarea 

punctelor  

de pe 

latur ă 

 în 

care are

loc modificarea 

invizibilităţii 

cantitative•

 

proiecţia

 

liniilor 

 

contur 

 

pe

 

latura căreia i se

determină invizibilitatea cantitativă

J

Q

PO

 N

ML

F

E

D

C

B A

2

1 11 0 020

S

D t i d l i d i ţi ( ăt d ăt ) l

Page 23: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 23/91

Determinarea

 

modului

 

de variaţie

 

(crescător, descrescător) al

invizibilităţii

 

cantitative

 

pentru

 

fiecare

 

punct

 

“interesant”

 

de pe

 

latur ă

• 

se atribuie 

 în 

mod consecvent 

o direcţie 

fiecăreilaturi

 

a fiecărui

 

poligon

• 

semnul produsului vectorial dintre latur ă şi liniacontur determină dacă se face o incrementaresau decrementare a invizibilităţii cantitative

• 

valoarea 

cu care se iniţializează 

invizibilitatea 

cantitativă

 

se determină

 

plecând

 

de la

“invizibilitatea cantitativă” 

a unui 

vârf sămânţă

numă

rul 

poligoanelor  

“faţă

” 

care se află

 

 între 

punctul 

de vizualizare 

şi 

vârful 

de pornire

Page 24: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 24/91

Linii 

cu halo

(Courtesy of Arthur Appel, IBM T.J. Watson Research Center)

a) reprezentare f ăr ă eliminarea liniilor ascunse

 b) reprezentareascunse

 cu haloua liniilor

c) reprezentare cueliminarea liniilor ascunse

Algoritmi de determinare a

Page 25: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 25/91

Algoritmi de determinare a

suprafeţelor vizibile

1.

 

Metoda

 

buffer-ului

 

de adâncime

2. 

Metoda 

scan-line

3.

 

Metoda

 

sortării

 

 în

 

adâncime

4. 

Metoda 

subdivizării 

ariilor 

5.

 

Algoritmul

 

Ray Tracing (Ray Casting)

6. 

Metodele 

OCTREE

7.

 

Algoritmi pentru suprafeţe curbe

Page 26: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 26/91

Metoda 

buffer-ului 

de adâncime

zv

z

xv

 punctul devizualizare

(x, y)S3

S2S1

Metoda buffer ului de adâncime continuare

Page 27: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 27/91

Se folosesc 

coordonate 

normalizate 

(0 ÷ 

1)

buffer-ul de adâncime buffer-ul de reîmprospătare

y

x

refresh(x, y)

x

ydepth

 

(x, y)

Metoda

 

buffer-ului

 

de adâncime

 

-

 

continuare

Metoda buffer ului de adâncime continuare

Page 28: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 28/91

pentru 

toate poziţiile coordonatelor (x, y): depth(x, y)=1

refresh(x, y)=backgroundpentru

 

fiecare suprafaţă

pentru 

fiecare poziţie (x, y) din suprafaţă se calculează valoarea z

  dacă  z < depth(x, y) atuncidepth(x, y) = z

refresh(x, y)=RGB

Metoda

 

buffer-ului

 

de adâncime

 

-

 

continuare

C l l l ii d t i t iţi ( )

Page 29: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 29/91

Calcularea 

valorii 

coordonatei 

z pentru 

o poziţie 

(x, y)

x

y

x+1

y+1

C  D By Ax z

  −−−=

C  D By x A z   −−+−= )1('

 z z   AC 

' = −

Page 30: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 30/91

 D y B Ax z

  −−−−=

)1("

 B z z   +="

 B

 A z   −+

z(x, y)

 B z − C 

 B

 A z   −−

 A z +

 A z −

 B

 A z   ++

 B z +

 B

 A z   +−

Metoda buffer-ului de adâncime - continuare

Page 31: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 31/91

 Avantaje:•

 

metodă

 

simplă şi uşor 

 

de implementat

• 

nu 

necesită 

sortarea 

suprafeţelor  

dintr-o scenă

Dezavantaje:•

 

necesitatea 

unei 

memorii 

suficient 

de mari 

pentru 

rulare

Soluţie: procesarea 

pe 

secţiuni

Metoda

 

buffer-ului

 

de adâncime

 

-

 

continuare

Metoda scan line

Page 32: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 32/91

Metoda 

scan-line•

 

metodă

 

a spaţiului

 

imagine

• 

extensie 

a algoritmului 

scan-line pentru 

umplerea 

suprafeţelor  

poligonale•

 

se aplică pentru modelarea poligonală

y

y+1

y+2

y

y+1

y+2

Informaţii necesare algoritmului

Page 33: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 33/91

Informaţii necesare algoritmului(incluse

 

 în modelarea poligonală)

 

Tabloul laturilor:

 – 

coordonatele punctelor extreme pentru fiecare latur ă –

 

inversul pantei pentru fiecare latur ă –

 

pointeri spre tabloul poligoanelor pentru identificareasuprafeţelor mărginite de fiecare linie

• 

Tabloul poligoanelor: –

 

conţine coeficienţi ai ecuaţiei planelor pentru fiecaresuprafaţă

 –

 

informaţii pentru intensitatea afişării pentru fiecaresuprafaţă

 –

 

eventual pointeri spre tabloul laturilor.

Determinarea suprafeţelor care

Page 34: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 34/91

Determinarea 

suprafeţelor  

care

intersectează

 

o anumită

 

linie

 

de scanare

 

se setează o listă a laturilor active

 

ale poligoanelor,utilizând informaţiile din tabloul laturilor. Lista activă va

conţine doar laturile care intersectează linia de scanarecurentă, sortată în ordinea crescătoare a valorii x.•

 

se defineşte un semafor 

 

pentru fiecare suprafaţă

• 

semaforul este activ sau inactiv pentru a indica dacă opoziţie de-a lungul liniei de scanare se află în interiorulsau în exteriorul suprafeţei.

 

liniile de scanare sunt procesate de la stânga spredreapta. Semaforul este activat la latura cea mai dinstânga a unei suprafeţe, şi pentru marginea cea mai dindreapta semaforul este dezactivat.

Page 35: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 35/91

Exemplu

linia de scanare 2

linia de scanare 3

linia de scanare 1

S 2S 1

H

G

F

E

D

C

B

A

Page 36: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 36/91

Observaţii:

• 

Valoarea 

intensităţii 

background-ului 

se încărcă

 

 în 

bufferul 

de reîmprospătare 

printr-o 

rutină

 

de iniţializare.•

 

Se pot folosi 

avantajele 

coerenţei 

liniilor  

descanare.

• 

Pot fi 

prelucrate 

un număr  

oricât 

de marede suprafeţe

 

poligonale 

care se suprapun.

• 

 În 

unele 

cazuri, este 

posibil 

ca suprafeţele 

să 

se acopere 

una 

pe 

cealaltă 

 în 

modalternativ.

Suprafeţele se acoperă una pe

Page 37: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 37/91

Suprafeţele 

se acoper ă 

una 

pe cealaltă

 

 în

 

mod alternativ.

H G

F E

D

D

C

C

B BA A

Metoda sortării în adâncime

Page 38: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 38/91

 

utilizează

 

atât

 

metode

 

ale spaţiului

 

imagine cât 

şi 

metode 

ale spaţiului 

obiect

Suprafeţele sunt sortate în ordineadescrescătoare a adâncimii (spaţiul obiect)

Suprafeţele sunt scanate în ordine, începând cusuprafaţa aflată la cea mai mare adâncime(spaţiul imagine)

Metoda 

sortării 

 în 

adâncime (“algoritmul

 

pictorului”)

M t d tă ii î dâ i ti

Page 39: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 39/91

suprafeţele sunt ordonate în funcţie de valoarea maximă alui z

suprafaţa cu adâncimea maximă (o notăm cu S) este apoi

comparată cu celelalte suprafeţe din listă pentru adetermina dacă există suprapuneri în adâncime dacă nu apar suprapuneri în adâncime se realizează 

“scan-converting” pentru suprafaţa S procesul este repetat pentru următoarele suprafeţe din

listă dacă se detectează o suprapunere în adâncime la oricare

suprafaţă din listă, este nevoie să se facă unele comparaţiisuplimentare pentru a se determina dacă suprafaţa trebuiereordonată

Metoda

 

sortării

 

 în

 

adâncime

 

-

 

continuare

Suprapunere în adâncime

Page 40: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 40/91

z'min z'min

z'max

z'maxzmin

zmin

zmax zmaxS S

S' S'

z z

x xO O

a) b)

Suprapunere 

 în adâncime

Exemplu de suprapunere în adâncime

Page 41: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 41/91

Exemplu de suprapunere în adâncime în care se impune reordonarea

z'min

z'max

zmin

zmax

SS'

z

xO

Comparaţii suplimentare (în caz de suprapunere în

Page 42: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 42/91

Comparaţii suplimentare (în caz de suprapunere înadâncime) pentru a se determina dacă suprafaţa S

trebuie reordonatăDacă oricare din aceste teste este adevărat nueste nevoie să se mai facă reordonări pentru acea

suprafaţă (Testele sunt listate în ordineacrescătoare a dificultăţii).1.

 

Marginile dreptunghiurilor suprafeţei S şi S’, în

planul xOy, nu se suprapun.2. 

Suprafaţa S se află în semiplanul exteriorsuprafeţei S’

 

faţă de care se face testul, relativ la

planul de vizualizare.3. 

Suprafaţa S’ 

este în interiorul suprafeţei S relativde planul de vizualizare.

4. 

Proiecţiile celor două suprafeţe pe planul devizualizare nu se suprapun.

Testul1: Marginile dreptunghiurilor suprafeţei

Page 43: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 43/91

Testul1: Marginile dreptunghiurilor suprafeţeiS şi S’, în planul xOy, nu se suprapun.

x'min x'maxxmin xmax

SS'

z

xO

Observaţie: Deşi există suprapunere înadâncime nu este nevoie de reordonare.

Testul2: Suprafaţa S se află în semiplanul exterior

Page 44: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 44/91

Testul2: Suprafaţa S se află în semiplanul exteriorsuprafeţei S’

 

relativ la planul de vizualizare.

Observaţii: Există suprapunere în adâncime

Nu trece testul 1.Trece Testul 2 deci nu este nevoie de reordonare

S

S'

z

x

O

0'''   >+++   D zC  y B x A

Pentru oricare vârf (x, y, z)al suprafeţei S

Testul3: Suprafaţa S’ este în interiorul

Page 45: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 45/91

Testul3: 

Suprafaţa S 

este în interiorulsuprafeţei S relativ de planul de vizualizare

S

S'

z

xO

Observaţii: Există suprapunere în adâncime

Nu trece testul 1.

Nu 

trece 

testul 

2Trece Testul 3 deci nu este nevoie de reordonare

0'''   <+++   DCz By Ax

Pentru oricare vârf (x’, y’, z’)al suprafeţei S’

Testul 4: Proiecţiile celor două suprafeţe pe

Page 46: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 46/91

Testul 

4: 

Proiecţiile celor două suprafeţe peplanul de vizualizare nu se suprapun.

y

x

y

x

Trece 

testul4 Nu trece 

testul 

4

Exemplu pentru două suprafeţe

Page 47: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 47/91

Exemplu 

pentru 

două 

suprafeţe care vor 

 

fi 

reordonate

• S şi S’ nu trec testele 1-4 => reordonarea în listă

SS'

z

xO

Exemplu dez

Page 48: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 48/91

Exemplu de

aplicare aalgoritmului

 

Ordinea iniţială

 

a acestor trei suprafeţe este: S, S’, S”.

După aplicarea testelor:

• 

Compararea lui S cu S’ 

 

şi S”:

 

suprapunere în adâncime între Sşi S’

 

dar trec testul 1, suprapunere în adâncime între S şi S”

 

şinu trec nici un test ⇒ S”, S’, S;

• 

Compararea lui S” 

 

cu S şi S’:

 

suprapunere în adâncime între S”şi S’ şi nu trec nici un test ⇒ S’, S”, S este ordinea finală.

S

S" S'

xO

Dacă se încearcă a doua oară bascularea între două

Page 49: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 49/91

Dacă

 

se încearcă

 

a doua 

oar ă

 

bascularea 

 între 

douăsuprafeţe

 

care au fost

 

reordonate, se va

 

 împăr ţi

 

suprafaţa

semnalizată 

(la prima basculare) în 

două 

după 

linia 

deintersecţie

 

dintre 

cele 

două

 

plane care se compar ă.

H G

F E

D

D

C

C

B BA A

Metoda subdivizării ariilor

Page 50: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 50/91

• 

este în principal o metodă a spaţiului imagine

• 

se folosesc 

şi operaţii ale spaţiului obiect pentrurealizarea ordonării în adâncime a suprafeţelor 

 

utilizează avantajele coerenţei suprafeţelor într-

 

o scenă prin localizarea acelor arii de vizualizatcare reprezintă păr ţi ale unei singure suprafeţe.

Metoda 

subdivizării 

ariilor 

Al it l

Page 51: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 51/91

Algoritmul

• 

divizarea succesivă a ariei totale de vizualizare îndreptunghiuri din ce în ce mai mici până cândfiecare mic

ă arie este proiec

ţia unei p

ăr ţi a unei

singure suprafeţe vizibile sau a nici uneisuprafeţe.

Page 52: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 52/91

Cât se continuă subdivizarea?

 

testele

 

care pot identifica

 

 în

 

mod rapid

aria ca parte 

a unei 

singure 

suprafeţe sau ne

 

pot spune 

că 

aria este 

prea 

complexă pentru

 

a fi

 

uşor 

 

analizată.

• 

O arie de vizualizare având rezoluţia de1024x1024 poate fi subdivizată de 10 ori

 în acest fel înainte ca subdiviziunea să sereducă la un pixel.

Există patru posibile relaţii pe care le poate avea o

Page 53: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 53/91

 

ţ

 

p   

suprafaţă

 

cu laturile 

unei 

arii

 

specificate:

a) 

O suprafaţă  înconjur ătoare 

este una care cuprindecomplet aria.b)

 

O suprafaţă suprapusă este cea care se află 

par ţial în interiorul ariei şi par ţial în exteriorul ariei.c) 

O suprafaţă interioar ă este una aflată complet îninteriorul ariei.

d) 

O suprafaţă 

exterioar ă 

este 

una 

aflată 

complet 

 în 

exteriorul 

ariei.

a  b c d

Teste

Page 54: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 54/91

Teste

Nu sunt necesare subdivizări suplimentareale ariei specificate dacă este adevărată una din următoarele condiţii (teste):

1.

 

Toate suprafeţele sunt în exteriorul ariei.

2. 

 În arie este doar o suprafaţă interioar ă,sau de suprapunere sau înconjur ătoare.

3. 

O suprafaţă înconjur ătoare obturează toate celelalte suprafeţe din interiorul

limitelor ariei.

1 T t f ţ l t î

Page 55: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 55/91

1. Toate suprafeţele sunt în

exteriorul ariei.•

 

verificarea 

laturilor  

dreptunghiurilor  

care

circumscriu 

suprafeţele 

faţă 

de laturile 

ariei.

2. În arie este doar o (unică) suprafaţă

Page 56: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 56/91

2. În arie este doar o 

(unică) suprafaţă interioar ă, sau de suprapunere sau

 înconjur ătoare.•

 

Testul

 

2 poate

 

folosi

 

de asemenea

 

laturile

 

dreptunghiurilor 

 

din planul

 

xy

 

pentru

 

a identifica

 

o suprafaţă

 

interioar ă. Pentru

 

celelalte

 

tipuri

 

desuprafeţe

 

(de suprapunere sau înconjur ătoare), laturile

 

dreptunghiurilor  

pot fi 

utilizate 

ca o verificare 

iniţială. Dacă

 

o singur ă

 

latur ă

 

a dreptunghiului

 

intersectează

 

suprafaţa

 

 într-un fel, sunt

 

utilizate

 

verificări

 

suplimentare

 

pentru

 

a determina

 

dacă

 

suprafaţa este

 

 înconjur ătoare, suprapusă, sau

 

exterioar ă. Odată

 

ce

 

a fost

 

identificată

 

o unică

 

suprafaţă

 

interioar ă, suprapusă

 

sau

 

 înconjur ătoare

 

intensitatea 

pixelilor  

săi 

este 

transferată

 

 în 

aria corespunzătoare 

dinmemoria

 

de ecran.

3. O suprafaţă înconjurătoare obturează toate

Page 57: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 57/91

3. O suprafaţă înconjur ătoare obturează toatecelelalte suprafeţe din interiorul limitelor ariei.

 

Metoda 1:Se ordonează suprafeţele în

funcţie de adâncimea lor

minimă. Pentru fiecaresuprafaţă înconjur ătoare, secalculează valoarea maximă alui z din interiorul arieiconsiderate. Dacă valoareamaximă a uneia din acestesuprafeţe înconjur ătoare estemai mică decât valoareaminimă z a tuturor celorlalte

suprafeţe din arie atunci testul3 este trecut.

zmax<z’min, zmax<z”min

S“

S'

S

zv

xvOAria

suprafaţaînconjur ătoare

zmax

z'min

z"min

Metoda 2: Se utilizează ecuaţiile planelor pentru calculareal il î l t â f i l i i t t t f ţ l

Page 58: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 58/91

valorilor z în cele patru vârfuri ale ariei pentru toate suprafeţele înconjur ătoare, suprapuse şi interioare. Dacă valorile z

calculate pentru suprafeţele înconjur ătoare sunt mai mici decâtvalorile z calculate pentru toate celelalte suprafeţe, testul 3 esteadevărat. Apoi aria poate fi umplută cu valorile intensităţilorsuprafeţei înconjur ătoare.

S“S'

S

zv

xvOAria

suprafaţaînconjur ătoare

zmax

z'min

z"min

Observaţii:

Page 59: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 59/91

Observaţii:•

 

Pentru unele situaţii ambele metode de implementare a testului

3 vor da erori la identificarea în mod corect a suprafeţei înconjur ătoare care obstrucţionează toate celelalte suprafeţe. Alte teste vor putea fi realizate pentru identificarea uneisuprafeţe unice care acoper ă aria, dar este mai rapid asubdivide aria decât a continua cu teste din ce în ce maicomplexe.

 

Odată ce au fost identificate suprafeţele exterioare şi înconjur ătoare pentru o arie, ele vor r ămâne suprafeţe

exterioare şi înconjur ătoare pentru toate subdiviziunile unei arii.•

 

 În continuare, este de aşteptat ca unele suprafeţe interioare şisuprapuse să fie eliminate dacă procesul subdiviziunii continuă,astfel încât ariile devin mai uşor de analizat.

• 

 În situaţiile limită când o subdiviziune are dimensiunea unuipixel, se calculează simplu adâncimea fiecărei suprafeţerelevante a acelui punct şi se transfer ă în memoria de ecranintensitatea suprafeţei celei mai apropiate.

Variaţie a procesului subdiviziunii de bază

Page 60: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 60/91

Variaţie 

a procesului 

subdiviziunii 

de bază

zv

yz

xv

 punctul devizualizare

S1 A1A2

Aria A

Dacă

 

suprafeţele

 

au fost

 

sortate

 

 în

 

funcţie

 

de adâncimea

 

minimă, se poate

 

utiliza 

suprafaţa 

cu cel 

mai 

mic 

z pentru 

a subdivide o arie 

dată.Exemplu:

Proiecţia

 

laturilor 

 

suprafeţei

 

S este

 

utilizată

 

pentru

 

partiţionarea

 

ariei

 

originale însuprafeţele

 

 A1 şi

 

 A2. Suprafaţa

 

S este

 

apoi

 

suprafaţă

 

 înconjur ătoare

 

pentru

 

 A1

şi 

testele 

de vizibilitate 

2 şi 

3 pot fi 

aplicate 

pentru 

a determina 

dacă

 

este 

necesar ă

 

o subdivizare

 

suplimentar ă.

Ascunderea în cazul modelării

Page 61: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 61/91

 Ascunderea 

 în cazul modelării 

octree•

 

proiectarea nodurilor “octree” 

pe suprafaţa devizualizare într-o ordine fa

ţă-spate.

7

65

4

32

1

0 23

10

Parcurgerea arborelui octree pentru

Page 62: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 62/91

Parcurgerea arborelui 

octree 

pentru

eliminarea suprafeţelor spate•

 

Ordinea de procesare:

 

0, 1, 2, 3, 4, 5, 6, 7.

• 

Parcurgerea octanţilor continuă în această ordinepentru fiecare subdiviziune a unui octant.

7

654

32

1

0direcţia devizualizare

Procesarea octanţilor parcurşi

Page 63: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 63/91

Procesarea 

octanţilor  

parcur şi

• 

 Atunci când se întâlneşte o valoare corespunzătoareunei culori într-un nod al unui octant, zona pixelului dinmemoria de ecran corespunzătoare acestui nod estememorat

ă cu aceast

ă culoare doar dac

ă nici o alt

ă 

valoare nu a fost memorată anterior în această zonă. În felul acesta doar culorile corespunzătoaresuprafeţelor din faţă  sunt încărcate în memoria ecran.

• 

Dacă un octant nu conţine nimic 

(nici 

o intensitate),zona corespunzătoare din memorie va fi lăsată liber ă (deci va putea fi eventual ocupată cu intensităţile

octanţilor aflaţi în spate).• 

Orice nod găsit a fi complet obturat (există dejamemorat ceva pentru proiecţia lui)

 

este eliminat şipentru procesările ulterioare astfel încât subarborii săinu vor fi accesaţi deloc.

Altă t dă

Page 64: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 64/91

 Altă metodă

 

se mapează arborele de octanţi

 

 într-un

arbore de quadranţi 

prin traversareanodurilor arborelui de octanţi din faţă spre

spate utilizând o procedur ă recursivă.•

 

se încarcă memoria de ecran pe bazaarborelui de quadran

ţi

OCTREE QUADTREE

Procedura de conversie a arborelui

Page 65: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 65/91

Procedura 

de conversie 

a arborelui de octanti

 

in arbore

 

de quadranti

typedef struct oct{int omogen;int color;

struct tabo* child;} OCT;

typedef struct tabo{OCT t[8]; } TABO;

typedef tabo * POINO;

typedef struct quad{int omogen;int color;

struct tabq* child;} QUAD;

typedef struct tabq{QUAD t[4]; } TABQ;

typedef tabq * POINQ;

POINQ newquadtree;int backcolor;

voi d conver t _oct _t o_quad ( TABO oct r ee, POI NQ quadt r ee){i nt i , n;

Page 66: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 66/91

n = si zeof ( TABQ) ;f or ( i =0; i <=3; i ++)

{quadt r ee- >t [ i ] . omogen = 1;i f ( oct r ee. t [ i ] . omogen == 1) / / daca est e omogen oct ant ul f at a

i f ( oct r ee. t [ i ] . col or > - 1) / / si daca ar e cul oar equadt r ee- >t [ i ] . col or = oct r ee. t [ i ] . col or ;

el se / / nu ar e cul oar e

i f ( oct r ee. t [ i +4] . omogen == 1) / / dar est e omogen oct ant ul spati f ( oct r ee. t [ i +4] . col or > - 1) / / si ar e cul oar e

quadt r ee- >t [ i ] . col or = oct r ee. t [ i +4] . col or ;el se / / si nu ar e cul oar e

quadt r ee- >t [ i ] . col or = backcol or ;

el se / / nu est e omogen oct ant ul di n spat e{quadt r ee- >t [ i ] . omogen = 0;newquadt r ee = ( POI NQ) mal l oc( n) ;quadt r ee- >t [ i ] . chi l d = newquadt r ee;conver t _oct _t o_quad( *( oct r ee. t [ i +4] . chi l d) , newquadt r ee) ;

el se / / nu est e omogen oct ant ul di n f at a{quadt r ee- >t [ i ] . omogen = 0;newquadt r ee = ( POI NQ) mal l oc( n) ;quadt r ee- >t [ i ] . chi l d = newquadt r ee;

conver t _oct _t o_quad( *( oct r ee. t [ i +4] . chi l d) , newquadt r ee) ;conver t _oct _t o_quad( *( oct r ee. t [ i ] . chi l d) , newquadt r ee) ; }

}/ / f or

 Algoritmi pentru suprafeţe curbe

Page 67: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 67/91

go t 

pe t u 

sup a eţe 

cu be

• 

reprezentarea “octree” 

nu sunt necesareconsideraţii speciale pentru suprafeţele curbe;•

 

aproximarea

 

ca un set de suprafeţe

poligonale plane (suprafeţele parametrice ->reprezentări poligonale);

• 

algoritmi 

care lucrează cu reprezentărilecvadrice;•

 

algoritmi specifici

 

pentru determinarea

suprafeţelor vizibile în cazul suprafeţelorparametrice bicubice: algoritmul Catmull şialgoritmul Lane-Carpenter;

 Algoritmul Catmull

Page 68: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 68/91

g

• 

 Algoritmul Catmull va diviza, în mod recursiv, 

un“petec”

 

de suprafaţă până când proiecţiaacestuia pe planul de vizualizare este doar unpixel.

• 

Un algoritm z-buffer  va determina dacă pentrupixelul respectiv, peticul este suprafaţa cea maiapropiată de planul de vizualizare.

• 

 În cazul în care peticul este vizibil se vadetermina intensitatea de afişare care va fiutilizată pentru memorarea pixelului respectiv înmemoria de ecran.

Page 69: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 69/91

  pentru fiecare petic execută 

 push stiva ← petic

atâta timp cât stiva nu este goală execută 

 pop stivă → petic

dacă petic ≤ 1 pixel

atunci dacă pentru pixel peticul este cel mai apropiat

atunci 

determină intensitatea luminoasă şi memorează 

 pixelul

altfel 

- împarte petic în 4 petice

- push stiva ← 4 petice

Page 70: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 70/91

Observaţie

• 

Deoarece determinarea dimensiunii

fiecărui petic este o operaţieconsumatoare de timp este mai uşor să seaproximeze un petic prin patrulaterul

format de vârfurile peticelor.

 Algoritmul Lane-Carpenter 

Page 71: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 71/91

p•

 

Se bazeazăpe metoda de reprezentare a suprafeţelor bicubiceprin divizarea acestora, în mod recursiv, în suprafeţe mai mici,până când acestea pot fi aproximate, în limitele unor toleranţeadmise, prin patrulatere

 

având vârfurile în vârfurile suprafeţelorcurbe.

• 

Toleranţa admisă este în funcţie de rezoluţia afişării dar şi deorientarea suprafeţei faţă de planul de proiecţie.

 

Nu este necesar a se face de fiecare dată divizarea după două 

direcţii. În situaţia în care după o direcţie, peticul este apropiatde plan se va face divizarea doar după cealaltă direcţie.•

 

După ce s-a realizat o divizare suficientă, un petic de suprafaţă va putea fi tratat ca un patrulater. Micile suprafeţe poligonale

vor putea fi procesate de un algoritm scan-line.•

 

 Algoritmul Lane-Carpenter realizează subdivizarea doar atâtcât este necesar pentru linia de scanare curentă. Peticele carerezultă în urma subdivizării şi care nu sunt intersectate de linia

de scanare curentă vor fi memorate pentru o subdivizareulterioar ă.

Procedur ă recursivă (echivalentul algoritmului de înjumătăţireaintervalelor )

Page 72: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 72/91

     

intervalelor 

 

)

procedura Deseneaza_Suprafaţa ( suprafata, e)

dacă test (suprafata, e) atunci

  desenează _patrulater (suprafata)

altfel  divide_suprafata_in_patru_suprafeţe (suprafata, supf_st_st,

supf_st_dr, supf_dr_st, supf_dr_dr,)

  Deseneaza_Suprafaţa (supf_st_st, e)

  Deseneaza_Suprafaţa (supf_st_dr, e)  Deseneaza_Suprafaţa (supf_dr_st, e)

  Deseneaza_Suprafaţa (supf_dr_dr, e)

Test (suprafata, e) <=> este suprafata aproximativ plană şimarginile ei aproximativ drepte?

Stabilirea suprafeţelor de reprezentat în varianta recursivă

Page 73: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 73/91

st_dr 

dr_dr 

st_st

dr_st

s

uu=0,5

s = 0,5

(1, 0)

(1, 1)(0, 1)

(s, u)=(0, 0)

ţ

Observaţii

Page 74: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 74/91

 

 Algoritmul consider ă că un petic poate fi

aproximat printr-un poligon dacă este suficient deplan şi laturile sale sunt suficient de drepte. Seconstată că în cazul în care un petic satisface

testul de planeitate dar peticul vecin nu satisfaceacest test se poate ajunge în situaţia apariţieiunor spărturi în reprezentare.

Spărtur ă

a) b)

Soluţii

Page 75: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 75/91

• 

O soluţie 

este de a se continua

descompunerea chiar în situaţia în care unpetic satisface testul de planeitate.

• 

O altă soluţie 

este algoritmul Clark 

care sedeosebeşte de algoritmul Lane-Carpenterprin testul de planeitate

şi prin faptul c

ă 

realizează un pas de preprocesare pentrudivizarea în subpetice.

 Algoritmul Ray Tracing (Ray Casting)

Page 76: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 76/91

y g ( y g)

• 

 Acest 

algoritm 

face parte 

din categoria 

metodelor 

 

spaţiului

 

imagine.

• 

 Algoritmul 

consider ă 

fereastra 

de proiecţie 

divizată 

de o reţea 

dreptunghiular ă 

ale cărei 

elemente

 

corespund

 

unui

 

pixel.•

 

Se transmit raze imaginare 

din centrul 

deproiecţie

 

spre 

fiecare 

pixel.

• 

Se va 

memora 

pentru 

fiecare 

pixel intensitatea 

primului 

punct 

din scenă

 

(cel 

mai 

apropiat)intersectat

 

de rază.

Page 77: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 77/91

centrul

proiecţiei

y

z

x

fereastra de proiecţie

raza

 selectează centrul de proiecţie şi fereastra din planul de proiecţie

Page 78: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 78/91

selectează centrul de proiecţie şi fereastra din planul de proiecţie

pentru fiecare linie de scanare din imagine execută 

pentru fiecare pixel din lina de scanare execută 

determină raza de la centrul de proiecţie caretrece prin pixelul curent

pentru fiecare obiect din scenă  execută 

dacă obiectul este intersectat de rază şi este

mai apropiat decât obiectele intersectate anterioratunci 

înregistrează intersecţia şi numele obiectului

setează culoarea pixelului la cea a celui mai apropiatobiect intersectat de rază 

Determinarea intersecţiilor

Page 79: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 79/91

Determinarea

 

intersecţiilor 

• 

Centrul 

oricărui 

algoritm 

ray tracing este 

determinarea 

intersecţiei 

razei 

cu unobiect. Pentru 

fiecare 

tip de obiect intersectat

 

mai

 

trebuie

 

adăugată

 

o

procedur ă 

de determinarea 

intersecţiei.

Intersec ţ ia razei cu o sfer ă

Page 80: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 80/91

 

P0

(x0 , y0 , z0)

P1(x1 , y1 , z1)

C(a, b, c)

)()( 010   PPuPuP   −+=

)()()()(

)()(

010

010

010

 z zu zu z y yu yu y

 x xu xu x

−+=

−+=

−+=

sau explicit:

01

01

01

 z z z

 y y y

 x x x

−=Δ

−=Δ

−=Δ

2222 )()()(   r c zb ya x   =−+−+−

2222222 222 rcczzbbyyaaxx =+++++

Page 81: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 81/91

222   r ccz zbby yaax x   =+−++−++−

220

20

20

20

20

20

)(2)()(2

)()(2)(

r c zu zc zu zb yu yb

 yu ya xu xa xu x

=+Δ+−Δ+++Δ+−

−Δ+++Δ+−Δ+

0)()()(

)]()()([2)(

220

20

20

0002222

=−−+−+−+

+−Δ+−Δ+−Δ+Δ+Δ+Δ

r c zb ya x

c z zb y ya x xuu z y x

•ecuaţia

 

nu

 

are soluţii

 

reale:

 

raza

 

şi

 

sfera

 

nu

 

se intersectează

•ecuaţia

 

are o singur ă

 

soluţie:

 

raza

 

trece

 

tangent la sfer ă

•ecuaţia

 

are două

 

soluţii

 

reale:

 

există

 

intersecţie

 

 între

 

rază şi

 

sfer ă şi va fi luată

 

 în

 

considerare

 

soluţia

 

cu u de valoarea

 

ce

 

mai 

mică

 

(cea 

mai 

aproape 

de punctul 

de vizualizare).

Determinarea intersec ţ iei 

Page 82: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 82/91

   unei 

 

raze cu un poligon

• 

se va 

determina 

mai 

 întâi 

intersecţia 

razei 

cu planul din care face parte poligonul

• 

iar  

apoi 

se va 

determina 

poziţia 

punctului de intersecţie

 

faţă

 

de poligon

 

(interior sau

 

exterior).

Ax By Cz D+ + + = 0Determinareaintersecţiei

Page 83: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 83/91

)()(

)()()()(

010

010

010

 z zu zu z

 y yu yu y x xu xu x

−+=

−+=

−+=

 Ax By Cz D+ + + = 0

01

01

01

 z z z

 y y y

 x x x

−=Δ

−=Δ

−=Δ

0)()()(000

  =+Δ++Δ++Δ+   D zu zC  yu y B xu x A

0)()( 000   =++++Δ+Δ+Δ   DCz By Ax zC  y B x Au

)()( 000

 zC  y B x A DCz By Axu

Δ+Δ+Δ

+++−=

Dacă 

numitorul 

din ecuaţia 

este 

0, planul 

şi 

raza 

sunt 

paraleledeci nu există punct de intersecţie.

intersecţiei

Punctul de intersecţie este interior

Page 84: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 84/91

Punctul de intersecţie este interior

sau exterior poligonului?•

 

O modalitate uşoar ă de a se afla dacă punctul deintersecţie se află în interiorul poligonului este de a se

realiza proiecţia ortogonală a poligonului şi a punctuluide intersecţie pe unul din planele xOy, yOz, zOx şi apoia se utiliza “regula parităţii impare”.

 

Dintre cele trei plane pe care se poate face proiecţiaortogonală se va alege cel pentru care proiecţiapoligonului are dimensiunea cea mai mare.

 

 Acest plan corespunde celui perpendicular pe axa pentru

care ecuaţia planului (din care face parte poligonul) arecoeficientul cel mai mare.•

 

Proiecţia ortografică se obţine prin eliminareacoordonatelor corespunz

ătoare axei respective din

vârfurile poligonului şi ale punctului deintersecţie.

 Alegerea planului pe care se face proiecţia poligonului sit l i d i t ţi

Page 85: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 85/91

a punctului de intersecţie

z

y

x

 punctul devizualizare

Operaţii booleene utilizândl it l R T i

Page 86: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 86/91

algoritmul Ray Tracing

• 

Utilizarea 

metodei 

ray tracing permite 

o abordare 

maisimplă

 

a problemei

 

operaţiilor booleene, în

 

dimensiunea 

1D.•

 

Intersecţia 

fiecărei 

raze cu un obiect 

este, în 

final, unset de valori

 

ale parametrului

 

u. Pentru

 

fiecare

 

dintre

aceste 

valori 

u, raza 

intr ă 

sau 

iese 

dintr-un obiect.Valorile 

calculate pentru 

parametrul 

u, în 

punctele 

deintersecţie, nu

 

sunt

 

decât

 

puncte

 

care segmentează

 

raza 

 în 

por ţiuni 

aflate 

 în 

interiorul 

sau 

 în 

exteriorul 

corpului 

3D.•

 

 În

 

situaţia

 

 în

 

care raza

 

trece

 

doar 

 

tangentă

 

la obiect

 

(într-un punct) nu 

se poate 

spune 

că 

are un segmentinterior obiectului.

Al it l t ţii b l

Page 87: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 87/91

 Algoritmul pentru operaţii booleene

• 

se vor  

calcula, pentru 

fiecare 

rază,punctele 

de intersecţie 

cu cele 

două obiecte.

• 

operaţiile 

booleene 

3D se descompun 

 într- un set

 

(egal

 

cu numărul

 

razelor) de

operaţii 

booleene 

(1D) cu segmentele 

unei raze pentru

 

cele 

două 

corpuri.

Exemplu

Page 88: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 88/91

Exemplu

 b)

a)obiectul din nodul stâng obiectul din nodul drept

intersecţii_st intersecţii_dr  ⎯ 

intersecţii_st intersecţii_dr ∩

intersecţii_st intersecţii_dr ∪

intersecţii_dr 

intersecţii_st

Procedura recursivă CSG intersec ţ ie

Page 89: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 89/91

   

_ ţ

tipul LISTA_INTERSECTII care este o listă cu înregistr ăride puncte de intersecţie

tipul

 

P_RAZA care este pointer spre înregistrarea cu informaţiiledespre o rază (punctele P1, P2 sau coeficienţii ecuaţiei parametrice)

tipul

 

P_NOD care este

 

pointer spre

 

nodul

 

arborelui

 

CSG care conţineoperaţia

 

booleeană

 

(op) şi

 

pointerii

 

(nod_st, nod_dr) spre

 

nodurile

 

cuinformaţii

 

despre

 

cele

 

două

 

obiecte

 

(ecuaţia

 

cvadricei, tablouripoligonale, suprafeţe parametrice depinde de forma utilizată pentrureprezentarea corpurilor)

LISTA_INTERSECŢII CSG_intersecţii (P_RAZA raza, P_NOD CSG_nod)

LISTA INTERSECŢII i ii d i ii

Page 90: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 90/91

LISTA_INTERSECŢII intersecţii_dr, intersecţii_st, rez;

dacă nod_compus

  atunci  // are operaţie booleeană

  atribuie intersecţii_st ← CSG_intersecţii (raza, CSG_nod -> nod_st)

  dacã ( (intersecţii_st = NUL) şi (CSG_nod -> op != reuniune) )

  atunci

atribuie rez ← NUL;return rez;

  altfel

atribuie

intersecţii_dr ← CSG_intersecţii (raza, CSG_nod -> nod_dr);atribuierez ← CSG_combină (CSG_nod.op, intersecţii_st, intersecţii_dr );

return rez;

  altfel // nod f ăr ă operaţie booleeană între două noduri descendente

atribuie rez ← intersecţiile obiectului cu raza;

return rez;

Procedura CSG intersec ţ ie  apelează  procedura

Page 91: Ascunderea suprafetelor

8/19/2019 Ascunderea suprafetelor

http://slidepdf.com/reader/full/ascunderea-suprafetelor 91/91

Clasificarea punctelor pentru obiectele combinate pe

baza setului de opera ţ ii booleene

Stânga Dreapta  ∪

interior interior interior interior exterior  

interior exterior interior exterior interior  

exterior interior interior exterior exterior  

exterior exterior exterior exterior exterior  

_ ţ p pCSG_combină care, pe baza celor două liste de înregistr ări şi

a tabloului următor, determină  lista de înregistr ări careconţine punctele de intersecţie ale razei cu obiectul combinat.