napredni algoritmi u vizualizaciji 3d objekata zasnovani na bsp stablima

69
UNIVERZITET U SARAJEVU PRIRODNO-MATEMATIČKI FAKULTET ODSJEK ZA MATEMATIKU II CIKLUS STUDIJA – SMJER TEORIJSKA KOMPJUTERSKA NAUKA NAPREDNI ALGORITMI U VIZUALIZACIJI 3D OBJEKATA ZASNOVANI NA BSP STABLIMA ZAVRŠNI - MAGISTARSKI RAD Mentor: Kandidat: Prof. dr. Željko Jurić Enis Alađuz Sarajevo, septembar 2013.

Upload: enis-bosnevi

Post on 29-Dec-2015

82 views

Category:

Documents


0 download

DESCRIPTION

Magistarski rad

TRANSCRIPT

Page 1: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

UNIVERZITET U SARAJEVU

PRIRODNO-MATEMATIČKI FAKULTET

ODSJEK ZA MATEMATIKU

II CIKLUS STUDIJA – SMJER TEORIJSKA KOMPJUTERSKA NAUKA

NAPREDNI ALGORITMI U VIZUALIZACIJI 3D OBJEKATA ZASNOVANI NA BSP

STABLIMA

ZAVRŠNI - MAGISTARSKI RAD

Mentor: Kandidat:

Prof. dr. Željko Jurić Enis Alađuz

Sarajevo, septembar 2013.

Page 2: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

Mojoj majci u znak sjećanja i zahvalnosti

Page 3: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

1

Sadržaj

Rječnik .......................................................................................................................... 3

Sažetak .......................................................................................................................... 4

Abstract ......................................................................................................................... 5

1. Uvod .......................................................................................................................... 6

1.1 Pozadina problema ........................................................................................ 6

1.2 Postavka problema ........................................................................................ 6

2. Osnove binarnog stabla ............................................................................................. 7

3. Jednodimenzionalna BSP stabla ............................................................................... 9

3.1 Kreiranje BSP stabla ..................................................................................... 9

4. Dvodimenzionalna BSP stabla ................................................................................ 11

4.1 Primjer gradnje BSP stabla .......................................................................... 12

4.2 Primjer obilaska BSP stabla ........................................................................ 16

5. BSP u 3D ................................................................................................................ 20

5.1 Definicija BSP stabala ................................................................................. 22

5.2 BSP stabla i Slikarev algoritam ................................................................... 24

5.3 Konstruisanje BSP stabla ............................................................................ 25

5.4 Veličina BSP stabla u 3D prostoru .............................................................. 30

5.5 BSP stabla za slabo zbijene scene ............................................................... 34

5.6 Neka dodatna zapažanja i komentari ........................................................... 42

6. Uklanjanje skrivenih površina ................................................................................ 45

6.1 Pozadina problema ...................................................................................... 45

7. Portal renderovanje ................................................................................................. 46

7.1 Postavljanje portala ..................................................................................... 49

7.2 Predloženo rješenje ...................................................................................... 54

7.3 Izračunavanje PVS-a ................................................................................... 55

Page 4: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

2

8. Radiozitet ................................................................................................................ 61

8.1 Pozadina problema ...................................................................................... 61

8.2 Radiozitet u BSP stablima ........................................................................... 62

9. Pravci za dalji rad ................................................................................................... 64

Zaključak .................................................................................................................... 65

Literatura ..................................................................................................................... 67

Page 5: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

3

Rječnik

BSP. Binary Space Partitioning. Binarna podjela prostora.

FPS. First Person Shooter. Pucačina u prvom licu. Igra u kojoj se gleda iz perspektive prvog lica i gdje je cilj eliminisati protivnike.

Pretprocesiranje.Izračunavanja koja se urade prije pokretanja igre (programa) da bi se uštedilo vrijedno procesorsko vrijeme koje može biti korišteno za druge stvari.

Čvor. Dio stabla. Svaki čvor se sastoji od lijevog i desnog podstabla.

Radiozitet. Model osvjetljavanja često korišten u igraćim mašinama. Glavna osobina je takozvano "krvarenje boje", gdje zidovi "krvare" svoju boju na susjedne zidove.

Granični okvir. Bounding box.Generalno se ovo definiše kao najmanji okvir koji enkapsulira neki skup objekata, na primjer tačke, poligone, druge granične okvire itd.

PVS.Potentionaly Visible Set. Potencijalno vidljivi skup. Ovo je skup poligona, objekata, čvorova koji su potencijalno vidiljivi iz neke date lokacije.

LOD (Level of Detail).Nivo detalja. Kada se ova tehnika koristi, objekti se crtaju sa različitom količinom detalja ovisno od udaljenosti od gledatelja. Razlog što se koristi je da reduciramo broj poligona u sceni. Što je objekat bliže gledatelju to će biti više detalja.

Mapa. Objekat koji sadrži geometriju svijeta.

Z-vrijednost. Ovo je mjera korištena za klasifikovanje koliko je blizu poligon poziciji gledatelja.

Frekvencija okvira. Frame rate. Broj koliko je puta ekran ažuriran po sekundi. Ovo nema ništa sa frekvencijom osvježenja monitora. Ovo je broj koliko se puta svijet iscrta u tokujedne sekunde. Obično bi ovo trebalo biti iznad 30 puta po sekundi da se dobije osjećaj kontinuiteta.

Poligon. Poligon je mnogostrana planarna figura sastavljena od čvorova i ivica. Trouglovi, kvadrati, heksagoni i pentagoni su primjeri poligona koji imaju ime, ali bilo koji zatvoren niz duži formira poligon.

Portal. Rupa kroz koju su dva čvora povezana ili ogledalo na koje scena može biti renderovana.

Pogled krnje piramide. Viewing frustum. Oblast (polje) pogleda kamere, često oblika kao (krnja) piramida sa kamerom u vrhu.

Page 6: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

4

Sažetak

Kada je formulisan originalan dizajn algoritma za binarnu podjelu prostora (Binary Space Partitioning – BSP), ideja je bila koristiti ga za sortiranje poligona u svijetu. Razlog za ovo je bio što hardverski akcelerator Z-spremnika nije postojao i što je softver Z-spremnika bio prespor. Danas je ta oblast korištenja zastarjela jer hardverski akceleratori Z-spremnika danas postoje. Umjesto toga, koriste se u optimizovanju širokog izbora područja kao što su izračunavanja radioziteta, iscrtavanje svijeta, detekcija sudara i umrežavanje.

Zadatak ovog rada je ispitati područje vizualizacije 3D objekata u kojima se može izvući prednost BSP stabala i proučiti proces generisanja.

Kao zaključak, BSP stablo je veoma korisna struktura u većini igraćih mašina iako imaju mana kao što je statičnost i veoma skupo modifikovanje tokom izvršavanja. Nadajmo se da neke ideje mogu biti uzete iz BSP stablo algoritma za razvijanje dinamičnijih struktura koje imaju iste prednosti kao i BSP stabla.

Page 7: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

5

Abstract

When the original design of the algorithm for Binary Space Partitioning(BSP) trees was formulated, the idea was to use it to sort the polygons in theworld. The reason for this was there did not exist hardware accelerated Z-buffers,and software Z-buffering was too slow. Today that area of usage isobsolete, since hardware accelerated Z-buffers no exist. Instead, the usage is tooptimise a wide variety of areas, such as radiosity calculations, drawing of theworld, collision detection and networking. The goal of this work is to examine visaulisation of 3D objects where we can draw advantages of theBSP trees and study the generating process. As conclusion, a BSP-tree is a very useful structure in most game engines.Although there are some drawbacks with it, such as that it is static and it isvery expensive to modify during run-time. We hope some ideas can be takenfrom the BSP-tree algorithm to develop a more dynamic structure that hasthe same advantages as the BSP-tree.

Page 8: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

6

1. Uvod 1.1 Pozadina problema Stabla binarne podjele prostora (Binary Space Partitionig – BSP) su prvi put opisana 1969. od strane Shumacker-aidr.1. Bilo je teško zamisliti će to biti algoritam korišten u proizvodima za zabavu, ali od ranih 90-ih BSP stabla su upotrebi u industriji igara radi poboljšanja performansi i omogućavanja korištenja više detalja u mapama. Prva igra koja je koristila ovu tehnologiju je Doom, kreirana od strane dvije legende u industriji igara, Johna Carmackai Johna Romero-a. Od tada skoro sve pucačine u prvom licu (First Person Shooting – FPS) koriste ovu tehnologiju.

1.2 Postavka problema Zbog teškog takmičenja u industriji igara, mnogo posla je urađeno da se unaprijedi originalni dizajn algoritma, ali vjeruje se da se mogu napraviti poboljšanja. Naš glavni fokus je bio na kretanju od skupog izračunavanja u vremenu izvršavanja do pretprocesoriranja čime na kraju gradimo strukturu koja čuva mnogo informacija koje mogu biti korištene tokom izvršavanja. Druga stvar koju želimo uraditi jeste naći način da unaprijedimo i optimizujemo okruženje u igraćoj mašini koristeći snagu BSP stabala. Kao sporedni efekat ovaj rad se može razmatrati kao tutorijal kako razviti igraću mašinu.

Pokazat ćemo:

Šta je BSP stablo; Kako kreirati BSP stablo; Prednosti i nedostaci BSP stabala; Slične tehnike koje mogu biti korištene; Upotrebljivost BSP stabala; Poređenje naših metoda sa postojećim metodama

1 [Shumacker, R., Brand, R., Gilliland, M., Sharp, W. Study for Applying Computer-Generated Images to Visual Simulation]

Page 9: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

7

2. Osnove binarnog stabla

BSP stablo je binarno stablo, tako da ćemo se prvo podsjetiti osnovnog koncepta i terminologije binarnog stabla.

Binarno stablo je struktura podataka koja sadrži čvorove u hijerarhijskoj strukturi. Binarna stabla imaju sljedeće osobine:

Svaki čvor ima najviše dva djeteta koji se najčešće zovu lijevo dijete i desno dijete;

Čvorovi imaju podatke koji su im pridruženi; Čvor bez djece se naziva list; Čvor bez roditelja se naziva korijen; Sortirano binarno stablo, često imenovano kao binarno stablo pretrage, sadrži

čvorove sortirane prema njihovim podacima.

Pogledajmo primjer sortiranog binarnog stabla na slici. Ovo je sortirano binarno stablo koje sadrži listu brojeva 1, 3, 5, 6, 8 i 9. Sada pogledajmo objašnjenje šta znači da je binarno stablo sortirano. Za svaki čvor, sve vrijednosti koje su manje od vrijednosti tog čvora su na njegovoj lijevoj strani, dok su sve vrijednosti veće od vrijednosti tog čvora na njegovoj desnoj strani. Na primjer, zato što korjeni čvor ima vrijednost 5, svaki broj koji je manji od 5 je na lijevoj strani stabla, a svaki broj koji je veći od 5 je na desnoj strani stabla.

Slika 2.1 Ovaj primjer stabla ima tri lista i dubinu dva

5

1 8

3 6 9

Dubina 0

Dubina 1

Dubina 2

List List List

Page 10: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

8

Na slici se vidi da ovo stablo ima dubinu 2. Dubina, ponekad nazvana i visinom, je broj generacija korijenove djece. Primjer je također dobro balansiran, što znači da za svaki čvor dubina lijeve strane se razlikuje najviše za jedan od dubine desne strane. Dobro balansirano sortirano binarno stablo može biti brzo pretraživano, bez da gledamo u sve podatke.

Jednostavna implementacija binarnog stabla (čvora) u C++-u mogla bi biti ovakva:

struct Cvor 

Cvor *lijevi; 

Cvor *desni; 

int vrijednost; 

Cvor(int_vrijednost) { vrijednost = _vrijednost; } 

void Ispis() { cout << vrijednost; } 

}; 

 

Klasa Cvor ima cjelobrojnu vrijednost i pokazivače na lijevo i desno dijete (koji su incijalno null pa stoga nema dijete). Podsjetimo, čvor može biti korijen, list ili unutrašnji čvor. Kreiranje novog čvora je vrlo jednostavno.

Cvor *korijen = new Cvor(5); 

Ako želimo da ispišemo stablo u sortiranom poretku koristićemo rekurzivnu funkciju inOrder.

void inOrder(Cvor *cvor) 

if(cvor != 0) 

inOrder(cvor‐>lijevi); 

cvor‐>Ispis(); 

inOrder(cvor‐>desni); 

}

Page 11: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

3 3.

Rbi

Bu prhisapr

Dhi

ZaPrbr

Sasvpr

Gu na

Rdakoko

Gje

. Jednod

.1 Kreiran

azumijevaninarne podje

SP stablo jen-dimenzio

redstavlja kiperravan kadrži i pokarostoru. U ti

akle, BSP ijerarhijska

amislimo drimijetimo rojeve kao u

ada pretposvaka kuća drostor (sve š

Gradnja stablprethodnom

a slici 2.1.

ecimo da saljih ka blorištenje uboje su dalje

Gledajući sliednostavna p

dimenzio

nje BSP s

nje BPS stabele prostora

e standardnoonalnom proonveksni di

koja dijeli pazivače na tim slučajev

stablo je podjela n-d

da igrač stoda su kuće

u primjeru i

Slik

stavimo da jdijeli svijet nšto je desno

la slijedi istm poglavlju

sada želimoižim od lo

brzanja Z-spigraču prije

iku 3.1 popravila:

onalna B

stabla

bala u 2D ia prvo objas

o binarno stostoru. Stabio tog prostprostor kojita dva novaima hiperra

prostorna dimenzional

oji u jednose sortirane z prethodno

ka 3.1 Igrač

je svaka kuna dva pros

o od kuće).

ti proces kou. Rezultuju

o ove kuće okacije kampremnika. Te iscrtavanja

redak iscrt

9

BSP stab

i 3D prostosniti u jedno

tablo koje sblo kao cjeltora. Svaki či predstavlja čvora. BSavni su zapr

struktura lnog prostor

stavnom svpo njihovi

og poglavlja

č stoji na p

uća čvor postora: lijevi

oji smo koriuće binarno

iscrtati u mere, da bTako da, u a onih bližih

tavanja kuć

la

ru može bitoj dimenziji

se koristi koina predstavčvor (osim ka na dvije SP stablo seravo prave i

podataka kra u konvek

ijetu sa redim brojevima.

oziciji 7 u r

odjele. U jeprostor (sv

istili u gradstablo bi m

3D svijetu.bismo elimiovom primh.

ća od daljih

ti veoma te.

od pretrage ivlja cijeli pkrajnjih čvopolovine. S

e najčešće ravni.

kojom se pksne segmen

dom kuća, ma. Takođe

redu kuća

ednodimenzve što je lije

nji sortiranomoglo izgled

Želimo dainisali prec

mjeru, želim

h ka bližim

eško, pa ćem

i sortiranja prostor, a svorova – listoSvaki čvor koristi u 2D

postiže reknte.

kao na slicer, kuće im

zionalnom pevo od kuće

og binarnogdati kao u p

a iscrtamo crtavanja i

mo da iscrtam

m se dijeli

mo ideju

objekata vaki čvor ova) ima

također D ili 3D

kurzivna,

ci ispod. maju iste

primjeru, e) i desni

g stabala primjeru

kuće od izbjegli

mo kuće

na dva

Page 12: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

10

Crtaj kuće lijevo od kamere u poretku (1, 3, 5, 6). Crtaj kuće desno od kamere u obrnutom poretku (9, 8).

Iz 3D perspektive, kuće na lijevoj strani nikada neće preklopiti kuće na desnoj strani. Stoga, nema veze da li je poredak u kojem ćemo iscrtati kuće npr. prvo iscrtati lijevu stranu pa onda desnu (1, 3, 5, 6, 9, 8) ili su obje strane izmiješane (1, 9, 3, 8, 5, 6). Bitno je samo da je svaka strana nacrtana u svom poretku. Tako da, ova tehnika radi bez obzira u kojem smjeru je igrač okrenut.

Page 13: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

4 Kpo

Uta

Prznne2D"l

UkaPr

. Dvodim

Krenimo sa poda na slici

Slik

U jednodimeačke. U 2D p

rava dijeli 2nati šta je "eprecizni u D linije moijevo" i "de

Umjesto togaao i poligonrednja stran

Slika 4.

menziona

primjerom g4.1.

ka 4.1. 2D p

enzionalnompodjele su l

2D prostor "lijevo" od ovom slučaogu biti oriesno", ali ho

a, mi ćemo ni, sa norm

na je vidljiva

.2. Linije k

alna BSP

gradnje i ob

plan poda p

m primjeru,inije (prave

u dvije polinije, a št

aju. Ovi termijentisane n

orizontalna l

koristiti temalom koja a strana. Ov

oje predsta

11

P stabla

ilaska 2D B

pokazuje je

svaka kuće), a u 3D po

oluravni, alita "desno". mini rade lijna bilo kojilinija dijeli

ermine "isprpokazuje u

vo znači da

avljaju zido

BSP stabla. P

ednostavnu

ća je bila poodjele su ra

i da bismo Ustvari, te

jepo u jednoi način. Vesvijet na "sj

red" i "iza"u smjeru przidove mož

ove imaju p

Pogledajmo

u sobu sa če

odjela tako vni.

napravili Bermini lijevodimenzionertikalna linjever" i "jug

. Linije imarednje stranžemo koristi

prednju i za

o primjer 2D

etiri zida.

da su podj

BSP stablo vo i desno nalnom svijenija dijeli sg".

aju ispred ine, kao na siti kao podj

adnju stran

D plana

djele bile

moramo su malo etu, ali u svijet na

i iza isto slici 4.2. ele.

nu.

Page 14: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

Zbka

Sase

4.

KPodopr

Oplmo prlis

bog toga štoažemo gdje

a ovim znane shvati kak

.1. Primje

Kao primjer,oredak dododana u starikazana isp

vdje su listlafonski pol

mogu kreiratvisini podo

redstavlja cstove 1 i 2.

o podjele imje kamera u

njem prođimko prave pod

er gradnj

, gradit ćemavanja zido

ablo. Primijeprekidanom

Slika 4.3. G

ovi BSP staligoni. Ako i stvari kao ova o plafocijeli prazan

maju prednju odnosu na

mo kroz pridjele dijele p

e BSP sta

mo plan podova može betimo da jelinijom.

Gradnja B

abla prazni je potrebnošto su platf

ona u ovim n prostor. P

12

ju i zadnju a svaku linij

imjer gradnjprostor.

abla

da sa slike iti proizvolj

e podjela fo

SP stabla,

prostori. Pro da podovi forme i steplistovima.

Prva podjel

stranu, uvijju: Kamera

je BSP stab

4.2. dodavljan. Na slicormirana zid

prvi dio. P

razni prostoi plafoni im

penice) ondaNa slici 4.3la, zid A,

jek ćemo bije ili ispred

bla. Ovaj pr

anjem jednci 4.3., prvadom A prod

rvi zid je d

ori su istog omaju različita je potrebn3. počinjemdijeli list n

iti u mogućd ili iza svak

rimjer će po

nog po jedna podjela, zdužena iza

dodan.

oblika kao te visine (tano čuvti info

mo sa listomna dvoje, k

ćnosti da ke linije.

omoći da

nog zida. zid A, je zida A i

i podni i ako da se ormacije

m 1, koji kreirajući

Page 15: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

Pruvko

Slispčv

Prfo

Bzilo

razni prostovijek dati donveksni.

ljedeće, na pred A. Ovvor iza B i d

Slik

rimijetimo ormiranom z

SP gradnja id D siječe okacije u sta

ori će uvijekdva nova ko

slici 4.4., zivo dijeli listdijeli list 3 u

ka 4.4. Gra

da, kada szidom A.

se nastavljpodjelu fo

ablu pa se st

k biti konveonveksna ob

idovi B i C t 1 na dva liu dva lista (

adnja BSP

smo dodali

a na slici 4ormiranu zitoga zid D d

13

eksni, zato blika. Tako

su dodani ista (1 i 3).3 i 4).

stabla, dru

i zid B, li

4.5.. Postoji idom B. Zidijeli na dva

što će podjođer, podov

u stablo. Zi Zid C je is

ugi dio. Zid

st 3 je og

još samo jeidovi se moa zida: D1 i

ela konveksvni i plafon

id B je isprespred A, a i

ovi B i C su

raničen zid

edan zid zaogu nalazitD2.

snog oblikanski poligon

ed A pa je kiza B pa je

u dodani.

dom B i p

a dodati: zidti na dvije

a linijom ni će biti

kao čvor dodan u

podjelom

d D. Ali, različite

Page 16: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

O

IdziBprK

Slika 4.5.

vim je post

dući kroz pridovi dodav, C, A, dobresječen pa

Kako god, do

Gradnja B

tupak gotov

roces gradnvani u drugailo bi se sta

a samim timobijeno stab

BSP stabla,

, tako da sa

nje stabla, mačijem poreablo kao na m imamo mblo nije dobr

14

treći dio. Lformira lin

ada imamo i

može se prietku. Na pri

slici 4.6.. Omanje čvororo balansira

Linija D je nija B.

izgrađeno st

imijetiti da imjer, da suOvo stablo nova. Takođano, jer su s

podijeljena

tablo.

bi stablo bu zidovi dodne zahtijevađer, stablo ivi zidovi isp

a podjelom

bilo drugačidavani u poa da ijedan zima manju pred prvog

m koju

ije da su oretku D, zid bude dubinu. čvora.

Page 17: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

Kpo

Auv

1.

2.ob

PokrTr

Prkabi

DOsvstr

Ilirepo

Ozim

Sli

Kada postojioredak u koj

Algoritam kovidu:

Minimizir

Držati stabilazak stab

onekad ovi reirati više raženje prav

rvo, moglo ada se izabeiste birati zi

rugo, moglovdje bi se

vakoj strani rane bile po

i, mogle bielativno balodjela.

vdje se nećidova, jedno

mape sa mno

ika 4.6. Ov

i mnogo poojem dodajem

oji će odluč

ranje podje

ablo što je mbla u odnosu

ciljevi mogpodjela, a

vog algoritm

bi se minimere podjela, id B prije zi

o bi se držauvijek birapodjele. Na

o dvije podj

i se kombinansiranim (

će detaljno uostavno ćemogo poligona

o alternativ

oligona, kramo zidove u

čiti kojim p

ela. Manje p

moguće višeu na nebalan

gu biti međa minimizima može bit

mizirati brobirase ona

ida D zato š

ati stablo štola podjela ka primjer, mele (iako ov

novati ove (sa određen

ulaziti u algmo birati prva, ali će za n

15

vno stablo

aće, balansiu stablo je v

poretkom b

podjela znač

e balansiransirana stab

đusobno iskliranje podjti kompliko

oj podjela, ikoja daje n

što zid B dij

o je mogućekoja čuva i

mogao bi sevo dijeli zid

dvije idejenim stepeno

goritam biravi zid kao pnaše primje

je kraće i i

rano stablovažan.

birati podje

či manje po

ano. Kraća, bla.

ljučivi: čuvela može

ovano. Nave

ignorišući bnajmanji broeli zid D.

e više balanisti broj zidbirati zid B

d D).

e. Sa skupoom) bira se

anja podjelaodjelu. Ovo

ere raditi veo

ma manje

o će dati br

le trebao b

ligona i ma

balansirana

vanje stabla kreirati neb

est ćemo nek

balans stabloj podjela. N

nsirano, ignodova (plus iB za prvu po

om podjela podjela sa

a. Umjesto to nije idealnoma dobro.

čvorova.

rže pretrage

bi imati dvij

anji obilazak

a stabla zna

balansiraniebalansiranokoliko ideja

la. Ovdje, sNa primjer,

orišući broj ili minus jeodjelu jer bi

koje čuvaja najmanjim

toga, za svano rješenje z

e. Dakle,

je stvari

k stabla.

če manji

im može o stablo. a.

svaki put ne treba

podjela. edan) na i na obje

u stablo m brojem

aku listu za velike

Page 18: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

4.

OD

Bzv1,

Nim

st

do

Ta

};

St

.2. Primje

bilazak BSPva pravila s

Crtaj čvor)

Crtaj predn

acimo poglvijezdom. O, D1, 5, A, 2

Navest ćemomplementac

truct Tack

ouble x, y

acka(doubl

truktura Tac

er obilask

P stabla je sse primijenj

poligone i.

poligone inji čvor).

led na primjOvaj algorita2. Poligoni

Slik

o i objasnitiija data je u

ka 

y; 

le x = 0, 

cka jednost

ka BSP sta

sličan načinuju:

ispred kame

iza kamere

mjer na slici am obilaskasu obiđeni

a 4.7. Obila

i ovdje samu prilogu na

double y 

avno sadrži

16

abla

nu na koji se

ere u poret

u obrnuto

4.7.. Zamia obilazi čvstraga napr

azak stabla

mo najvažnia CD-u.

 = 0) : x

i x i y koord

e obilazi jed

tku (prednj

om poretku

slimo da jevorove u ovrijed što je u

a sa pozicij

ije dijelove

x (x), y (

dinate koje s

dnodimenzio

i čvor, tren

(stražnji č

kamera navom poretkuupravo ono š

e zvijezde.

koda za 2D

y) {} 

su realnog t

onalno BSP

nutni čvor,

čvor, trenut

a lokaciji ozu: 4, D2, 6, što želimo.

D BSP. Ko

tipa i konstr

P stablo.

stražnji

tni čvor,

značenoj C, 3, B,

ompletna

ruktor.

Page 19: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

17

struct Linija 

Tacka a, b;           //pocetna i krajnja tacka 

Linija(Tacka a, Tacka b) : a (a), b (b) {} 

Linija(); 

void Ispis(); 

}; 

Struktura Linija sadrži početnu i krajnju tačku, konstruktor i funkciju za ispis.

struct Stablo  

Linija *linija;    // linija 

Stablo *lijevo;   // Pokazivac na lijevo podstablo. 

Stablo *desno;  // Pokazivac na desno podstablo. 

Stablo(const Linija l)  

linija = new Linija(l); 

  lijevo = NULL; 

  desno = NULL; 

void Ispis() { linija‐>Ispis(); } 

}; 

Strukturu Stablo nema potrebe detaljnije objašnjavati.

Funkcija NTP (Nadji tacku presjeka) prima dvije linije, a kao rezultat vraća tačku presjeka.

Tacka NTP(Linija m, Linija o); 

Funcija IIS (ispred, iza, siječe) kao parametre prima liniju podjele p, tekuću liniju i reference na tačku ispred i iza. Kao odgovor vraća da li je linija ispred ili iza linije podjele, a ako je siječe onda u tačku ispred smješta onu tačku linije l koja je ispred podjele, a u tačku iza onu koja je iza.

int IIS(Linija p, Linija l, Tacka &ispred, Tacka &iza); 

Sljedeću funkciju NapraviBSPStablokoja konstruiše BSP stablo treba malo bolje objasniti.Ona kao parametre prima pokazivač na stablo i listu linija. Ako je lista linija prazna, vraćamo se iz funkcije. Ako nije, idemo dalje. Kreiramo dvije liste Ispred i Iza u koje ćemo staviti liniju po pravilu:

U Ispred, ako se data linija nalazi ispred linije podjele;

U Iza, ako se data linija nalazi iza linije podjele;

Ako linija biva presječena linijom podjele onda je dijelimo na dva dijela i prednji stavljamo u Ispred, a zadnji u Iza.

Page 20: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

18

Uzimamo liniju podjele. U while petlji radimo sljedeće: uzimamo linije sve dok lista nije prazna. Funkcija IIS nam daje odgovor kao što je objašnjeno iznad. Ako je linija ispred, stavljamo je u listu Ispred, ako je iza, stavljamo je u Iza. Ako linija siječe liniju podjele pomoću funkcije NTP(nađi tačku presjeka) nalazimo tačku presjeka i prednji dio linije stavljamo u listu Ispred, a zadnji u listu Iza.

Na kraju, ako lista Ispred nije prazna, rekurzivno pozivamo opet funkciju NapraviBSPStablo u koju šaljemo pokazivač na lijevo podstablo i listu Ispred. Analgono uradimo i za listu Iza gdje šaljemo pokazivač na desno podstablo i listu Iza.

void NapraviBSPStablo(Stablo* &stablo, list<Linija> lista) 

if(lista.empty()) return; 

list<Linija> Ispred, Iza; 

Linija podjela = lista.front(); 

lista.pop_front(); 

stablo = new Stablo(podjela); // uzimamo liniju podjele(pravu) 

Ispred.clear(); //isprazni liste ispred i iza 

Iza.clear(); 

int odg; // –1 ispred, 1 iza, 0 sijece 

Tacka ispred, iza; 

while(!lista.empty()) 

Linija uzmi = lista.front(); //uzmi tekucu liniju 

  lista.pop_front(); 

  odg = IIS(podjela, uzmi, ispred, iza);  

//nadji odgovorispred, iza, sijece 

  if(odg == _iza) Iza.push_back(uzmi); 

  else if(odg == _ispred) Ispred.push_back(uzmi); 

  else 

  { 

Tacka t = NTP(podjela, uzmi); // ako sijece nadji presjek 

Ispred.push_back(Linija(ispred, t)); 

Iza.push_back(Linija(iza, t)); 

  } 

if(!Ispred.empty()) 

NapraviBSPStablo(stablo‐>lijevo, Ispred); 

if(!Iza.empty()) 

NapraviBSPStablo(stablo‐>desno, Iza); 

return; 

Page 21: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

19

Još bi bilo zanimljivo objasniti funkciju backToFrontRender koja prima pokazivač na stablo i tačku gledišta. Ova funkcija renederuje scenu u odnosu na gledište tj. ona je zaslužna za ispravan obilazak stabla.

void backToFrontRender(Stablo *stablo, Tacka glediste) 

if(stablo != NULL) 

int strana; 

strana = GdjeJeTacka(*stablo‐>linija, glediste); 

if(strana == _iza) 

if(stablo‐>desno != NULL)  

backToFrontRender(stablo‐>desno, glediste); 

poredane.push_back(*stablo‐>linija); 

if(stablo‐>lijevo != NULL)  

backToFrontRender(stablo‐>lijevo, glediste);  

elseif(strana == _ispred || strana == _na) 

if(stablo‐>lijevo != NULL)  

backToFrontRender(stablo‐>lijevo, glediste); 

poredane.push_back(*stablo‐>linija); 

if(stablo‐>desno != NULL)  

backToFrontRender(stablo‐>desno, glediste);  

FunkcijaGdjeJeTacka nam vraća odgovor da li je tačka gledišta ispred ili iza linije. Ako je tačka iza linije, prvo obilazimo desno podstablo, ispisujemo liniju, a onda obilazimo lijevo podstablo. Ako je tačka ispred ili se gledište nalazi na liniji, prvo obilazimo lijevo podstablo, ispisujemo liniju, a onda obilazimo desno podstablo. U našoj funkciji umjesto ispisa, liniju stavljamo u vektor poredane, radi potreba prezentacije.  

Page 22: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

20

5. BSP u 3D

U današnje vrijeme, piloti više ne moraju imati iskustvo prvog leta u vazduhu, već to mogu obaviti na simulatoru letenja. Ovo je jeftinije za kompanije, sigurnije za pilote i bolje za okolinu. Tek nakon mnogo sati provedenih na simulatoru pilotima se dozvoljava da se uhvate palice pravog aviona. Simulatori letenja moraju ispuniti razne zadatke kako bi pilot zaboravio da se ustvari nalazi u simulatoru. Važna stvar je vizualizacija. Piloti moraju biti u mogućnosti vidjeti krajolik iznad kojeg lete ili pistu na koju slijeću. Ovo uključuje oboje, oblikovanje krajolika i iscrtavanje oblika. Za iscrtavanje scene moramo odrediti za svaki piksel na ekranu objekat koji je vidljiv na tom pikselu. Ovo se zove uklanjanje skrivenih površina (hidden surface removal). Također, moramo primijeniti izračunavanje sjenčenja, tj. moramo izračunati jačinu (intenzitet) svjetla koje vidljivi objekat emituje u smjeru tačke gledišta. Kasnije, zadatak postaje mnogo vremenski zahtjevan ako želimo realistične (uvjerljive) slike: moramo izračunati koliko svjetla stiže do objekta, bilo direktno od izvora svjetla, ili indirektno odbijanjem od ostalih objekata, uzimajući u obzir interakciju svjetla sa površinom objekta da bismo vidjeli koliko je svjetla odbijeno u smjeru tačke gledišta. Ako iscrtavanje simulatora letenja mora biti izvedeno u realnom vremenu onda nema vremena za precizna izračunavanja sjenčenja. Zbog toga se primjenjuje brza i jednostavna tehnika sjenčenja, a uklanjanje skrivenih površina postaje važan faktor u vremenu iscrtavanja.

Z-spremnik (Z-buffer) algoritam je veoma jednostavna metoda za uklanjanje skrivenih površina. Ova metoda radi na sljedeći način. Prvo, scena se transformiše tako da je smjer gledanja pozitivan smjer z-ose. Potom se objekti nasumice konvertiraju skeniranjem. Konvertiranje objekta skeniranjem označava određivanje koje piksele pokriva u projekciji; ovo su pikseli gdje je objekat potencijalno vidljiv. Algoritam zadržava informaciju o već procesiranim objektima u dva spremnika: okvirnom spremniku i z-spremniku. Okvirni spremnik čuva za svaki piksel intenzitet i trenutno vidljiv objekat, tj. objekat koji je vidljiv među već procesiranim objektima. Z-spremnik čuva za svaki piksel z-koordinatu trenutno vidljivog objekta. (Preciznije, on čuva z-koordinatu tačke na objektu koja je vidljiva na piskelu.) Sada pretpostavimo da selektujemo piksel dok konvertujemo objekat. Ako je z-koordinata objekta na pikselu manja od z-koordinate sačuvane u z-spremniku, onda novi objekat leži ispred trenutno vidljivog objekta. Stoga, upisujemo intenzitet novog objekta u okvirni spremnik, a njegovu z-koordinatu u z-spremnik. Ako je z-koordinata objekta na pikselu veća od z-koordinate sačuvane u z-spremniku, onda novi objekat nije vidljiv, a okvirni i z-spremnik ostaju nepromijenjeni. Z-spremnik algoritam se jednostavno implementira u hardveru i prilično je brz u praksi. Zbog toga je ovo najpopularnija metoda uklanjanja skrivenih površina. Ipak, algoritam ima nekih negativnosti: Potrebna je velika količina dodatnog prostora za pohranu za z-spremnik i potrebna je dodatna provjera na z-koordinatu za svaki piksel pokriven nekim objektom. Slikarev algoritam (Painter's algorithm) izbjegava ovedodatne troškove tako što prvo sortira objekte po udaljenosti

Page 23: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

odnaprinjeN

biOpiresl

DN

kozam

d tačke gledajudaljenijerimjenjivatintenzitet u ednostavno p

Na lijevoj str

ili učitani. Svaj pristup iksel, zadnjiezultujući isojeve boje j

a bismo priNažalost ovo

oje objekte avisi od po

moramo izrač

dišta. Objekg objekta bilo kakavokvirni sp

prepišu. Slirani, objekti

Slike nakonje tačan jer

i upisani obspravnom izjedan preko

imijenili ovo nije tako l

sjeći, gdje szicije tačkečunati pored

kti su scan-kod tačke

v test na njepremnik. Uka 5.1 prikai su prikaza

Slika 5.1 S

n što su prvr se objekti

bjekat u ulazzgledu scen

o drugog, iz

vu metodu mako. Što jej

sjeći i sortire gledišta, sdak.

21

konvertovagledišta.

egovu z-kooUlazi koji s

azuje algoriani sa broje

Slikarev alg

vi, drugi i tri učitavaju u

azu okvirnogne. Proces pčega i dola

moramo bitijoš gore, po

odnoscikluspojavispravmorajednoporedrezulttrougjednoda ćeza no

ranje dijelovsvaki put k

ani u tzv. poKada je

ordinatu, nesu bili prijitam na scenvima koji o

goritam u a

reći trougaou poretku og spremnikapodjeća na

azi naziv ovo

i u mogućnoredak po dus među se. Kad se

vi, nijedanvnim izglemo preki

og ili višedak po dubtat podjele

gla, na primog od njih ne ispravno ovi skup odva objekata

kad se tačk

oredak po dobjekat uč

ego uvijek pe u okvirn

ni koja se saodgovaraju p

akciji

o učitani suod nazad kaa će biti najnačin na k

og algoritm

osti da brzoubini ne moobjektima e takvo cin poredak edom scenenuti ciklu

objekata ini postoji . Kada po

mjer, uvijek na trougao prikazivanj

d četiri objea je skup proa gledišta p

dubini, počičitan, ne prepisujemonom spremastoji od tri poretku u k

u također pra naprijed: Zjbliži tački

koji slikari ma.

o sortiramo ora uvijek p

može saiklično pon

k neće ree. U tom use presij

i nadajućiza dijelove

ostoji ciklusmožemo p

i četverougje poretka pekta. Izračuoces. Pošto pomjeri mi

injući od moramo o njegov

mniku se objekta.

kojem su

rikazane. Za svaki gledišta, stavljaju

objekte. postojati: adržavati navljanje ezultirati

slučaju ecanjem i se da e koji su s od tri podijeliti gao, tako postojati unavanje poredak ponovo

Page 24: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

5.

Dbizaprlinprnamkočvjeto

Zaot

i

Stpr

.1 Definic

a bismo doinarnu podjajedno sa strostora je dnijom , oresijecanja astavlja sve

modeliran, nonačne podjvor odgovaednodimenzom slučaju o

Sli

a hiperravtvoren polup

tablo binarnrostoru je de

Ako jsačuvsačuv

cija BSP s

obili osjećajjelu prostortablom kojeobijena rekonda podijne samo de dok u svnaravno, kadjele; dio obara linije pionalni obje

odgovarajuć

ika 5.2 Bin

an :prostor ogra≔ {( ,≔ {( ,

ne podjele pefinisano ka

je ( )van kao ovajvan u listu o

stabala

j šta je BSra (BSP –e odgovara kurzivnom pelimo gorna sijeku ravvakom regiao binarno bjekta koji lpodjele; ovaekti (duži),ći unutrašnji

narna podje+ +aničen sa , … , ):, … , ):

prostora, ili ao binarno s≤ 1 onda j list. Ako jznačen sa

22

P stablo, pbinary spa

toj podjeli. podjelom ranji dio ravnvan, već siionu ne os

stablo. Svleži na straa linije je onda objeki čvor čuva

ela prostora⋯+i neka b: +: + BSP stablostablo sa

je list; dije list označ( ).

ogledajmo ace partitio

Kao što seavni linijomni sa , aijeku i objetane po savaki list o

anici je sačusačuvana

kti mogu bove objekte

a (BSP) i o+ = 0bude negativ+⋯+

+⋯+o, za skup sljedećim o

io objekta učen sa , on

sliku 5.2. On) za skup

e može vidjm: prvo podia donji dioekte na dijeamo jedan vog stabla

uvan kao liskao čvor. iti sadržanie u listi.

dgovarajuć0, neka van otvoren+

+ objekata u

sobinama:

u (ako ponda je (vjero

Ova slika pp objekata eti, binarnaijelimo cijeo sa itdelove. Dijeldio. Taj p

a odgovara st. Svaki unKada su n

i u linije po

će stablo

bude pn poluprosto> 0}

< 0}. u -dimezio

ostoji) je ekovatno praz

pokazuje u ravni,

a podjela elu ravan d. Linije ljenje se roces je stranici

nutrašnji na sceni odjele; u

pozitivan or:

onalnom

splicitno an) skup

Page 25: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

VstnaprPrčustst

Limje⋄5.

Ako skupostablastabla

Veličina BSPabla. Drugiastanu nakorazan potprrecizno govuvanje, jer nabla kako abala za dat

istovi u BSmožemo idene presjek po= + ako je 3 prikazuje

je ( )om ( ) obja za skua za skup

P stabla je im riječima

on podjele. rostor, ondvoreći, veline kaže ništsmo definiti skup obje

Sl

SP stablu prntifikovati kluprostora

desno podse ovo: sivi čv

) > 1 ondajekata koji cup ≔ {p ≔ {

ukupna vea, veličina Ako BSP na je broj čičina stablata o količinisali je dob

ekata.

lika 5.3 Od

redstavljaju konveksnu r⋄ gdje je

stablo. Regivor odgova

DijeproizpriklUobželimskupulaz

23

a korijen cijeli sadrža∩ : ∈∩ : ∈eličina skupBSP stabla

ne sadrži bčvorova sta

a ne govorii memorije

bra mjera u

nos između

stranice poregiju sa svapredak od

ija koja odgara sivoj reg

eljenje hipzvoljno. Zaladno ogran

bičajeno ogmo konstruip kandidataznih dijelova

od čuvani u . Lij}, a desn}. pova ( )a je ukupaeskorisne liabla linearai ništa o kpotrebne za

u poređenju

u čvorova i

odjela koje akim čvorom

i ⋄= −ak

govara korijgiji ∩ ∩erravni ko

a svrhe izračničiti skup dgraničenje jisati BSP zaa za pravea. BSP koja

va hiperravjevo dijete o

no dijete od

između svan broj dijeinije podjelan u odnos

količini mema jedan dio.

u sa kvalite

regiona

BSP inducim u BSP ko je lijev

enu od je ∩ .

orišteno u čunavanja, kdozvoljenih e sljedeće.a skup dužipodjela je

a koristi tak

van , zajod je korid je korij

vih čvorovaelova objekle, linije kosu na BSPmorije potr. Ipak, veličetom različi

ira. Generastablu : ov

vo podstablo

e čitav prost

BSP mokako god, m

h podjela hip Pretpostav

i u ravni. Oe skup prodkve linije po

edno sa ijen BSP jen BSP

a BSP kata koji oje dijele P stablo. rebne za čina BSP itih BSP

lnije, mi va regija o od , a

or. Slika

ože biti može biti perravni. vimo da čigledan dužetaka odjela se

Page 26: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

zoBogm

5.

Pr

koda

izdammdionna

A1 2a3 4 5 6 7 8 9 1011121314

Prštnj

ove samopoSP koja sagraničenje s

minimalne ve

.2 BSP sta

retpostavimobjekata u

oristiti daa prikažem

bude taznad ravni pa onda nije

može zaklonmožemo sig

ijelove objenih u . Pa isti način.

Algoritam SNeka je k

ako je listondaUu sup

0 1 2 3 4

rimijetimo do su poligojih.

odjela (autoamo koristi samopodjeleličine, vidj

abla i Slik

mo da smo izu 3D pros

a dobijemo pmo skup

ačka gledištpodjele sačuedan od obniti nijedan gurno prikaekata) u po

Poredak za dOvo je sum

LIKAREVAL

korijen od t Učitaj dijelo

protnom ak on u

da mi ne crni 2D objek

o-partition).ravni kroz

le strogo. Aet ćemo da

karev algo

zgradili BSstoru. Pitanjporedak po slikarevim ta i pretpos

uvane u korbjekata ispo

od objekatazati sve odstablu dijelove obj

mirano u slje

LGORITAM(.

ove objektako ∈ndaSLIKARE

UčitajSLIKA

suprotnom

rtamo poligkti i zbog to

24

. Za skup pz ulazne poAli, mada sće dati razu

oritam

P stablo nje je kako

dubini akoalgoritmom

stavimo da rijenu od .od ravni poata iznad. Sobjekte (p prije prik

jekata u dvedećem algo

( , )

a u ( ).

EVALGORIT

j dijelove obAREVALGOR

m akoondaSLIK

Uč SL

u suprotn SL

SL

gone u ( )oga nisu vid

planarnih poligone kaosamopodjeleumno mala.

na skupu omožemo moramo m. Neka

leži Jasno je

odjele ne Stoga, mi preciznije, kazivanja a podstablaoritmu.

TAM( ,bjekta u (RITAM( ,∈

KAREVALGO

čitajdijeloveLIKAREVAL

nom (*LIKAREVAL

LIKAREVAL) kada dljivi sa tačk

oligona u 3o ravni pode neće uvij

a i d

) ). )

ORITAM(e objekta u

LGORITAM(∈ *) LGORITAM(LGORITAM(

leži na ravke koja leži

Ilu

3D, samopodjele. Čini ek dati BS

dobije se rek

, ) ( ). , ) , ) , )

vni podjelei u ravni koj

ustracija

odjela je se da je

SP stabla

kurzivno

e zato ja sadrži

Page 27: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

EfkoBtaPrdaobstsklebijeprtrisk

5.

Kneslj

AUIz1.2. 3.4.5.

fikasnost ovoji koristi BSP stabla.

akav način rije nego mati mala BSbjekata dozabla zato

krivenih poetenja. Poštismo tipoednostavnimredstavljati iangulisanekup trouglov

.3 Konstr

Kada god želeki uvid razjedećem od

Algoritam 2D

Ulaz. Skup dzlaz. BSP sta ako ( onda

u sup

vog algoritBSP stablaZbog togada podjela

možemo razvSP stabla, mzvoljavamo.

što trebaovršina, recto je brzinaove objek

m: ne bismkao polie

. Tako mi zva u 3D pro

ruisanje B

limo da rijezmatranjem

dlomku.

DBSP( ) duži = {ablo za . ) ≤ 1

Napravi ssačuvan evrati

protnom (*K

tma, ili biloa, zavisi uva moramo a objekata viti strategijmoramo od

Zainteresoamo brz cimo za poa naša glavkata na mo trebali edarske oblzapravo želiostoru.

BSP stabla

ešimo neki 3m planarne v

Neka je Sćemo naškoje sadrlinije podkonstrukcduž .

, , … , }stablo koje seksplicitno.

Koristi (← { ∩ (25

o kojeg algveliko od v

izabrati rabude minije podjele k

dlučiti koje ovani smo značin uklaotrebe simuvna briga,

sceni zkoristiti k

like. Pretpimo da kons

a

3D problemverzije prob

S skup od šu pažnju nrže jedan oddjele. Namciju BSP. N

}. se sastoji od

)kao liniju ( ) : ∈

goritma veličine vni na imalna. koja će tipove

za BSP anjanja ulatora trebali

zadržati krive površostavićemo

struišemo B

m, obično nijblema. To j

nepresijecna samopodd dijelova u

meće se sljeNeka je sa (

d jednog čvo

podjele.*)}; ←2

šine, već o da su sv

SP stablo m

je loša idejae ono što ć

cajućih duždjele tako du S razmatraedeći rekur( ) označen

ora lista, gd

2DBSP( )

bismo sveve strane

male veličin

a da prvo stćemo da ur

ži u ravni. Oda ćemo samati kao kandrzivni algorna prava koj

dje je skup

)

e trebali poliedra

ne za dati

teknemo radimo u

Ograničit mo linije didate za ritam za ja sadrži

Page 28: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

6.7. (8.

Jastumdapoduraćere

Dko

A1.2.3.

Prpropprinodkostrskdupombiunu davaodpo

( )}.

asno je da ablo? Moždmjesto slijea uzmemo ohlepno: použije trošeandomizacijemo nasumiezultuje pril

a bismo imonstrukcije:

Algoritam 2D

Generiši n ←2DBS

vrati

rije nego rimijećujemptimizacija.rvih nekolnduciraju dgovaraju onstruišemoranicu . M

kroz. Odabiuži za presiodjelu drug

može biti iski nerazumnnaprijeđenasuprotnom.

a kažemo darijable sa sd već dodanodjela.

Kr

vr

ovaj algorida bismo mpog uziman∈ takvoostoje postanje vremei: ako je tešice uzeti duično malim

mplementir

DRANDOMBasumičnu pP( ′) analiziramo

mo da je mo Pretposta

liko pravihpotpodjelučvorovima

o. Razmoogu postojaranjem jednijecanje ngih duži unključena iz no ne isk strategija j. Da bismo

da li je dio svakim dijelnih linija po

← { ∩ (reiraj BSP s

, de

rati

tam konstrumogli malo v

nja prvog seo da ( ) savke duži kna. Šta oško odreditiuž da bismo

BSP stablim

ali ovo, st

BSP(S) permutaciju

o nasumičnoguća jedna

avimo da h podjele. u ravni a u BSP otrimo jeati duži kojene od ovih pneće uzrokonutar , dodaljeg razm

koristiti pre da uzmemimplementislobodna plom koje goodjela. Kad

26

( ) : ∈stablo sa čvesnim podst

uiše BSP sviše truda uegmenta iječe što mkod kojih o

onda još mi pravi izbo

o napravili pma.

tavljamo du

= ,…ni algoritaa jednostavsmo izabr

Ove pračijestrani

stablu koednu take presijecajpresijecajućovati nikakok sama dmatranja. Brednosti tamo slobodneirali ovu op

podjela. Da ovore da li da ove varij

}; ←2vorom korijetablom , i

stablo za skuložiti na bir

. Jedan prilmanje drugihovaj pristupmožemo urr, mi ćemo

podjelu. Kao

uži u nasu

, skupa

am, vna rali ave ice oje

kvu u ćih

kvu duž ilo

akvih sloboe podjele kaptimizaciju, bismo zavrlijeva i desnable postan

2DBSP( )enom , lijei sa ( ) =kup . Ali, ranju pravolaz koji namh dijelova. p ne radi. Draditi? Odto uraditi no što ćemo

umični pore

.

odnih podjad je god mo

mi moramoršili ovo, drna krajnja t

nu tačne, on

) evim podsta= { ∈ ∶ da li je on

og dijela za m pada na uAli, ovo jeDalje, traže

dgovor se nasumice. D

vidjeti kasn

edak prije

djela. Daklmoguće, a na

o biti u moržimo dvijetačka leže nnda je dio s

ablom ⊂no malo podjelu, um jeste

e previše enje ove krije u

Dakle, mi nije, ovo

početka

le, naša asumične gućnosti

e logičke na jednoj slobodna

Page 29: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

Sajene

Pogene

prilupoveve

L

Disj

ud

ada analiziednostavnime prave razl

očinjemo anenerisani. Neke premut

rimjer, razmustrovano uoredak, naseličina BSPeličinu BSP

ema 5.1 ( log ). Dokaz: Neka

ječene kada

daljenosti du

dist

iramo prefm, analizirat

iku asimpto

nalizirajući Naravno, ovtacije mogu

Sl

motrimo kolu dijelu (a)suprot, dajeP stabala varP stabla, koj

Očekivan

a je fiksana je ( ) do

uži sa pošto

= bro

formanse aćemo verzi

otski.)

veličinu Baj broj uskou dati mala

lika 5.4. Raz

ekciju od 3) ove slikee samo tri drira sa koriše je,prosječ

broj dijel

n dio u . Modana algori

N

pmk

k

oo

ovanjem fikojdužikoji27

algoritma 2iju bez slob

BSP stabla io zavisi od pa BSP stab

zličiti porec

duži na sli, onda je rdjelića, kaoštenim permčna veličina

lova gener

Mi ćemo anaitmom kao s

Na slici 5.4

presječen kamože biti prkoje su tako

i . Slje

korištena pr

ono šta se dod . Ovksne duži :sijeku ( )+∞

2DRANDOM

bodnih podj

ili, drugim posebne pe

bla, dok dr

ci daju razli

ci 5.4. Ako rezultat da o što je pri

mutacijama, a među svih

risanih alg

alizirati očesljedeća lini

4 možemo

ada je ( )resječena skođer presječedeće, kad

rije ( ), o

događa na slva razmatra: )između

MBSP. Da bela. (Ustvar

riječima, brrmutacije gruge daju v

čita BSP

su dijelovi imamo pet

ikazano u dmi ćemo an! permutac

goritmom 2

ekivan broj ija podjele.

vidjeti da l)dodana, uzkroz sa (čene sa ( )a je prava

onda ona šti

lici 5.4.(b): anja vode

i ako

bismo ga ri, slobodne

roj dijelovagenerisane uveoma veli

obrađeni kt djelića. Ddijelu (b). Znalizirati očcija.

2DRANDOM

ostalih duži

li je ili nij

zimajući u ), ovisno o)i koje su "a kroz tak

iti od

dio zaštinas do d

( )siječeinače

zadržali e podjele

a koji su u liniji 1: ka. Kao

kao što je Drugačiji Zato što čekivanu

MBSP je

i koje su

e dio

obzir da o dužima između"

kvu duž

. Ovo je

itio je definicije

Page 30: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

28

Za bilo koju konačnu udaljenost, postoje najviše dva dijela na toj udaljenosti, jedan sa svake strane .

Neka je ∶= dist , i , , … , duži između i . Postavlja se pitanje koja je

vjerovatnoća da ( ) siječe kada je dodana kao linija podjele. Da bi se ovo desilo,

mora doći prije u nasumičnom redanju i, još više, mora doći prije bilo koje duži

između i , koje štite od . Drugim riječima, od skupa { , , , . . . , } indeksa,

mora biti najmanji. Zbog toga što je poredak dijelova slučajan, ovo implicira da je

Pr ( )siječe ≤ 1dist + 2. Primijetimo da mogu postojati duži koje nisu presječene sa ( ), ali čije produžetke štiti

. Ovo objašnjava zašto izraz iznad nije jednakost.

Sada možemo ograničiti očekivani ukupni broj presjeka generisanih sa :

E broj presjekagenerisanih sa ≤ 1dist + 2

≤ 2 1+ 2

≤ 2 ln

Zbog linearnosti očekivanja možemozaključiti da očekivani ukupni broj presjeka generisanih svim dijelovima iznosi najviše 2 ln . Kako smo počeli sa duži, ukupni očekivani broj dijelova je ograničen sa + 2 ln .

Ovim smo pokazali da očekivana veličina BSP stabla koje je generisano sa 2DRANDOMBSPiznosi + 2 ln . Kao posljedicu, dokazali smo da BSP veličine + 2 ln postoji za bilo koji skup od duži. Dalje, najmanje polovina od svih permutacija vodi do BSP-a veličine + 4 ln . Možemo koristiti ovo da bismo našli BSP te veličine: Nakon pokretanja 2DRANDOMBSPmi testiramo veličinu stabla i ako ona prelazi granicu, jednostavno pokrenemo algoritam ponovo sa novom slučajnom permutacijom. Očekivani broj pokušaja je dva.

Ovdje smo analizirali veličinu BSP-a koje je napravljeno sa 2DRANDOMBSP. Postavlja se pitanje šta je sa vremenom izvršavanja. Opet, ovo zavisi od slučajne permutacije koja je korištena, tako da moramo gledati očekivano vrijeme izvršavanja. Izračunavanje slučajne permutacije zahtijeva linearno vrijeme. Ako zanemarimo vrijeme za rekurzivne pozive, onda je vrijeme potrebeno za izvršavanje algoritma 2DBSP linearno u odnosu na broj dijelova u . Ovaj broj nije nikad veći od , ustvari, on postaje manji sa svakim rekurzivnim pozivom. Konačno, broj rekurzivnih poziva je očito ograničen ukupnim

Page 31: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

br

T

Iadoovkonerara

sa

Prpo

skPrpr

AratroodOtj.sako

AUIz1.2. 3.4.5.6.

rojem gener( log ), eorem 5.2 ( log ).

ako je očekobra, vrijemvo nije takonstruisanjaevjerovatnoazočaravajućadu nećemo( log ) uamopodjelu,

rirodno pitaoboljšana. D( ) za bilokupovi dužrimijetimo rostora za jo

Algoritam koavni možeodimenziond neprespet ćemo se. koristit ćemadrže trougloja ga sadrž

Algoritam 3D

Ulaz. Skup zlaz. BSP sta ako card(S onda

u sup

risanih dijeltako da dob

BSP velič

kivana veličme izvršavanko važno za je kvadrao da se desi uće. Koristeć

o razmatratiu ( log ), kako god,

anje je da li Da li bi na o koji skup ži za kojeda algoritamoš malo pob

oji smo ope biti genali prostor.ijecajućih te ograničiti mo samo ralove iz . Zži označavam

DBSP(S) = { , , …ablo za S. S) ≤ 1

Kreiraj st savrati T

protnom (* ← { ∩← { ∩

lova, koji jebijamo sljed

čine ( ločina BSP-anja algoritmzato što seatno samo u praksi. Ipći se prilazo, ovo može) vremenu si u praksi d

veličina BSprimjer bilod radvo

e bilo kojim koji smoboljšanja.

isali za sluneralizovan. Neka je trouglova una samopod

avni podjelea trougao rmo sa ( ).… , } troug

ablo T kojeačuvan eksp

Koristi (∩ ( ) :∩ ( ) :29

e ( logdeći rezultatog ) može

a koje je kma je pomalo

e konstrukkad je BS

pak, s teoretsom zasnovane biti poboljsa determin

daje BSP ko

SP-a generilo moguće ojenih dijeloi BSP mo

o predstavili

učaj u n na

skup u ℝ . djele, e koje ravan .

glova u ℝ .

e se sastoji opilicitno. ) kao rava∈ }; ∈ };

). Stoga, ukt:

biti izraču

konstruisanoo razočaravcija izvodi

SP veoma nske tačke glnim na segmljšano: možnističkim algoje je neznat

isanog sa 2D

smisliti algova linija u ora imati i ne dostiže

od jednog čv

an podjele. *T+ ←3T– ←3

kupno vrijem

unato u oč

o sa 2DRA

vajuće. U mn off-line. nebalansiranledišta vrijementnim stae se konstrugoritmom. tno veće.

DRADNOMBgoritam koji

ravni. Odgveličinu (

e ovu grani

vora lista, g

*) 3DBSP(S+) 3DBSP(S–)

me konstru

čekivanom v

ANDOMBSP nogim aplikUostalom,

ano, što je eme konstruablima, kojiruisati BSP Ovaj prilaz

BSP može bi daje BSP govor je ne:( log / loicu, dakle m

gdje je skup

uisanja je

vremenu

prilično kacijama

vrijeme prilično

uisanja je i u ovom veličine

z ne daje

biti bitno veličine

: postoje g log ). mora biti

S

Page 32: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

7. 8.

Vdiočdoalal

5.

jeprPoskstr

ilupokakopriz

Veličina rezuijelova od očekivanu veobar rezultlgoritma teolgoritma, pr

.4 Veličin

e koristimo resječene sostoji jedankroz beskorrani, onda j

Slika ustracije, pooslije obradao da je genoristi ( ) rava podjelzmeđu ( )

Kreiraj B stavrati T

ultirajućeg ostalih. Kaeličinu prvoat u praksoretski. Zatremda je alg

na BSP sta

u svim ćea . (Jedno

n izuzetak odrisna za ćelie ne dijelim

5.5 pokazotpodjela k

de dijelova nerisana pro

kao pravu e u potpro i ( ) zato

SP stablo Tablo T+, i sa

BSP-a opeto u planarno stavljanjei. Kako goo ćemo u s

goritam opis

abala u 3D

elijama preostavna rekd pravila, a iju zato što

mo.

zuje ovo noja je prika

, i (uomijenjenim

podjele u storu desnoo što je to o

30

T sa čvoroma ( ) = {t zavisi od nom slučajuem trouglovod, nije posljedećem psan iznad vj

D prostor

Slučajni 3D propoglavljuopisan slučajnogod je msada kanepovezkoristim

esječenim tkurzivna imto je da mi

o svi trouglo

na dvodimeazana je genu ovom por

m algoritmopotprostoru

o od ( ). ovdje beskor

m korijenom ∈ : ⊂poretka tro

u, možemova u slučajoznato kakpoglavlju anjerovatno su

ru

algoritam ostoru koji u je skoro iznad: uzm poretku moguće. Sl

ad trougao ane ćelije. o neku ravatom ravni, mplementacdijelimo sv

ovi u toj će

enzionalnomnerisana algetku). U dijm. Primijetu ispod (

Prava ( )risno.

v, lijevo po( )}. ouglova; neo pokušati djni poredak

ko analiziranalizirati jeuperioran u

za konstrukćemo an

isti kao pzima u o

i pravi slolobodna po

iz dijeJedina raz

an ( ) kaone samo u

cija stoga nve ćelije sa eliji leže po

m primjeru.goritmom pelu (b) potp

timo da prom), i da je ) nije koriš

odstablo T–,

eki poreci dda dobijem

k. Ovo običati ponašanednu varijan

praksi.

kciju BSP nalizirati upoboljšani aobzir trougobodne podjodjela se poeli ćeliju nzlika je ta o ravan podu ćelijama nije više m( ): kad je

otpuno na je

. U dijelu prethodog ppodjela je pmijenjeni a( ) korištštena u pot

, desno

daju više mo dobro čno daje nje ovog ntu ovog

stabla u u ovom agoritam glove u djele kad ojavljuje na dvije da kada

djele, mi koje su

moguća.) e podjela ednoj od

(a) ove poglavlja rikazana lgoritam tena kao tprostoru

Page 33: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

Pr

AUIz1.2.3.4.

Sl

Lizm

Dtro

linbuslkojekorajepruzna– navabr

romijenjeni

Algoritam 3D

Ulaz.Skup zlaz. BSP sta Gener zai ← radi K

ljedeća lem

ema 5.3 Očmeđu n!mog

Dokaz. Dokaougao ∈≔ { ,… ,nija sijeku ude skup sobodnih pooje je ednostavno ojeI inducirazumjeli, rae tretiresijeca ; zrokuje nijea inducir

takvu straapravljena kanjskimstranroj podjela

Slik

algoritam m

DRANDOMB= { , , …ablo za S. riši slučajnu← 1don

Koristi (Napravi s

a analizira b

čekivani brogućih perm

azat ćemo presječen} je sku, a neke n

svih presjeodjela broj

isječen obroj stranicra na . Dazmotrimo tiran, uzimas druge str

ednu podjeluranog sa ∖anicufzovemkroz ovaj dnicama, tj. na uzro

ka 5.5 Orig

može biti su

BSP2(S) … , } trougl

u permutacij)da podijelisve moguće

broj fragme

oj fragmenautacija je

granicu nan. Za trougaup od najvišne. Za linijueka . Zbofragmenata

općenito nica u uređen

Da bismo ovtrenutak kaajući da rane u na . Seg∖ { }. Ako,

mo unutrašndio od . Dstranicama

okovanih sa

31

ginalni i mo

umiran na sl

lova u ℝ .

iju , , … ,iš svaku ćel slobodne p

enata generi

ata objekta g( ). a očekivanoao sa <še − 1 linu koja preog

a u nije nju vo

ada

ne gment , takvastrannjom stran

Drugačije rekoje su inc

a ( )je

odificirani a

ljedeći nači

, skupa

liju gdje je ppodjele.

isanih algori

generisanih

om broju f< definisaćnija koje ležesijeca d

može presjnicaf nije incnicom – onečeno, (cidentne sa ednak je br

algoritam

n:

.

podjela kori

itmom.

h algoritmom

fragmenata ćemo ≔že u ravni efinišemo

jeći nekolikcidentna sa nda je slob) samo ujednom odoju ivica k

isna.

m 3DRANDO

u kojem j( ) ∩ (( ). Neke≔ ∩

ko stranica ujednom od

bodna podjuzrokuje prd tri ivice koje d

OMBSP2

e fiksan ). Skup od ovih . Neka I

uređenja ivica

jela već resjeke u

. Stoga, doprinosi

Page 34: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

vavatrePopi

Zol. e1

prsk

AondupeočstsadasakofrU

Kod

Dčese

Lko

anjskim straažno da je etirani. Ovoostavlja se itanje moram

onapravel uPokazuje s

1, e2 i e3 ivresjekli unukupom L na

Ako je ukupnda je prouži (1). ermutacija, čekivan brooga očekiva

a ( )izaje očekivaa svakom ronstantan. Oagmenata u

Ukupan broj

Kvadratna gdmah dokaz

ostignuta gemu se nadae ne možem

ema 5.4 Pooja samopod

anicama urekolekcija

o nije slučajpitanje koj

mo prvo ogr

u uređenju pse da za urevice od iutra morajua ravni ( )pan broj iviosječan bro

Zato što onda je

oj ivica na dan broj frag

znosi (1). an broj fragravni podjeOvo implicunutar kojefragmenata

granica na zuje da BSP

granica je jamo kada im

mo nadati iče

ostoje skupodjela ima ve

eđenja na vanjskih st sa algoritmji je očekivraničiti uku

pravih u raveđenje od mi neka ( )u biti zona ). Stoga, uk

ica vanjskihoj ivica ko

je , … ,to i , … ,

duži je gmenata na Isti argume

gmentacijanele ( ) kira da je og je pres

a je stoga

očekivanojP stablo kva

jako obeshrmamo skup emu boljem

ovi na n neeličinu Ω(

32

inducirantranica nez

mom u prethvani broj taupan broj ivi

vni definišem linija kom) bude linij

od ili (kupan broj i

h lica (oje leže n

slučajn. Dakl

konstantanuzrokova

ent pokazujna generisakroz (očekivan brosječen (

= veličini p

adratne velič

rabrujuća. Kod 10 000

m ako se ogra

epresijecaju).

nog sa I. (Uzavisna od hodnoj sekcakvih ivica.ica vanjskih

e se kao skumpleksnost z

ja kroz z), ( ) ilivica vanjsk),

na na e,

n i an je an ) oj ). = ( ). podjele genčine postoji

Kvadratna trouglova. aničimo sam

ućih trouglo

U analizi kojporetka u iji, koji je uDa bismo

h stranica.

up lica uređezone iznosiOza i = 1, 2,i ( )u ure

kih lica izno

nerisanom s.

veličina BSSljedeći teo

mo na samo

ova u 3D pr

oja slijedi, vkojem su

uzrok modif odgovorili

đenja presječO(m). Neka, 3. Ivice keđenju indu

osi ( ).

sa 3DRAND

SP stabla norem nam gopodjele.

rostoru za

veoma je , … , fikacije.) i na ovo

čenog sa a su sada koje smo uciranog

DOMBSP

nije ono govori da

koji bilo

Page 35: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

Dčečeskyz(Ptrovi

movtv1)po

općeko(p

Pr5.nu

odpoko

Dokaz. etverouglovetverouglovkupa čz-ravni kaoPrimjer takouglova, aizualizirati.)∶= (

minimalna vakvu konvrdimo da je) − 1. Doko + . T(1, 0) i pćenitosti, pe podijeliti oja moraju bpostavka). A

retpostavim4 ograničen

užno ima k

dvojimo skuodjele nisu onfiguracija

Posmatrajmva koji se sava paralelničetverouglovo što je ilukođer radiali četvero) Neka je ), i nveličina

nfiguraciju e ( , )kaz se iz

Tvrdnja je o(0,1) pa spretpostavimsve četverobiti tretiran

Ako m označ(mo da se nisnje na samokvadratnu v

Slika

up od skuu stanju da

a se dobij

mo koastoje od skuih sa xy-rva paralelnstrovano nai i sa skuglove je ∶= (

neka je (samopodjel(postavku= ( + 1)

vodi indukočigledno tasada razmomo da samoouglove u e rekurzivnčava broj če, ) = 1= 1= (smo ograničopodjele je deličinu, čak

a 5.6 Gener

upa sa ra daju malia na sljed

33

lekciju upa ravni i nih sa a slici. kupom

lakše ( ), a , ) le za

u). Mi )( +kcijom

ačna za otrimo slučopodjela bira

. Štaviše,no imaju tačetverouglov1 + ( ,1 + ( + 1)( + 1)(čili na samodefinitivno k i kad mož

ralna konst

ravni paralei BSP za kdeći način

čaj gdje je a četveroug, konfiguracčno istu formva u koji l) + ( −)( + 1) −+ 1) − 1

opodjele. Uloša ideja: žemo lako

trukcija do

elnom sa xzonfiguraciju. Počinjem

+ >gao r iz skupcije (postavmu kao i poleže iznad r− 1, ) 1 + ( −donjoj gra

pokazali smdobiti linea

nje granice

z-ravni. Ali u (postavku

mo uzimaju

> 1. Bez gpa . Ravavke) dvije početna konfir, onda imam

− )( + 1anici u dokamo da takvaaran BSP a

e

čak i neogu) na slici 5ući rešetku

gubljenja an kroz r podscene iguracija mo

1) − 1

azu leme a podjela ako prvo

raničene 5.6. Ova uu ravni

Page 36: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

34

napravaljenu od /2 linija paralelnih sa x-osom i /2 linija paralelnih sa y-osom. (Umjesto linija mogli smo uzeti veoma duge i tanke trouglove.) Iskrivimo malo ove linije da bismo dobili konfiguraciju na slici 5.6; linije sada leže na tzv. hiperboličkom paraboloidu. Konačno, pomjerimo linije paralelno ka y-osi malo gore tako da se linije više ne sijeku. Ono šta smo dobili je skup linija = , = ∶ 1 ≤ ≤ 2 ∪ = , = + ∶ 1 ≤ ≤ 2

gdje je ε mala pozitivna konstanta. Ako je ε dovoljno malo, onda BSP mora presjeći najmanje jednu od četiri linije koje omeđuju ćeliju rešetke u neposrednom susjedstvu te ćelije. Formalni dokaz ove činjenice je elementaran, ali naporan i ne osobito poučan. Ideja je pokazati da su linije iskrivljene na takav način da se nijedna ravan ne uklapa istovremeno kroz četiri "otvora" na svojim ćoškovima. Pošto je broj ćelija rešetke ovdje kvadratni broj, ovo će rezultirati sa ( ) fragmenata.

Teorem 5.5 Za bilo koji skup od n nepresijecajućih trouglova u ℝ postoji BSP stablo veličine ( ). Štaviše, postoje konfiguracije (postavke) za koje je veličina bilo kojeg BSP ( ).

5.5 BSP stabla za slabo zbijene scene

U prethodnoj sekciji smo opisali algoritam koji konstruiše BSP stablo za skup od razdvojenih trouglova u ℝ . On uvijek daje stablo veličine ( ). Također smo dali primjer skupa od n trouglova za koji bilo koji BSP ima veličinu ( ). Stoga, ( ) gornja granica je čvrsta u najgorem slučaju i sa teoretske tačke gledišta izgleda da je problem riješen. Čvrsta kvadratna granica nam može dati utisak da su BSP stabla beskorisna u praksi. Na sreću ovo nije slučaj: u mnogim praktičnim situacijama BSP stabla se primijenjuju veoma uspješno. Evidentno, teoretska analiza pada kod predviđanja performansi BSP stabala.

Ovo je uznemirujuće, jer ako sebaziramo samo na teoretsku analizu, moglo bi se dogoditi da odbacimo strukturu koja je prilično korisna u praksi. Problem je da određeni ulazi, npr. poput rešetke iz primjera iznad, forsiraju BSP da siječe mnoge objekte, dok oni koji se inače pojavljuju u praksi daju BSP koji siječe tek nekoliko objekata. Željeli bismo da naša analiza daje različite granice za različite tipove ulaza. Ovo znači da više ne možemo raditi analize samo u odnosu na veličinu ulaza . Moramo uvesti novi parametar koji razdvaja lagane ulaze od teških. Sad se postavlja pitanje šta su lagani ulazi. Intuitivno, lagani ulazi su ulazi gdje su objekti relativno dobro razdvojeni, dok teški ulazi imaju objekte koji su pakovani blizu jedan drugog. Primijetimo da da li su objekti blizu jedni drugih ili ne nije stvar apsolutne udaljenosti između njih, već udaljenosti relativne u odnosu na njihovu veličinu. S druge strane, skaliranje cijele

Page 37: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

scpa

Ndenadelo

Lataredi

udlo

S

PoscakdrJealmBdapo

Ntro

cene bi nasarametar ko

Neka diam(efinisana kaajviše obefiniciju. Propta proizvo

ako je konsakav. Kada ešetke figurijelovi duži,jediničnih

daljenosti imopti ima zbij

Slika 5.7 Sknj

ogledajmo šcene u sljedko je zbijenrugima.Daljedna mogulgoritam iz

mala. NažaloSP čija je oaiskoristi potreban nov

Neka je skouglove itd

s odvelo doji ćemo zva) označavao najmanjbjekata irimijetimo doljnog polup

struisati skusu objekti

re 5.6, na p, a ne pune lopti takvih

ma zbijenosjenost (1)

kup od osamih imaju pr

šta sad imadećem smislnost velika je, želimo pćnost bi mprethodne

ost, ovo nijeočekivana vprednosti u vi algoritam

kup objekatd. i neka je λ

o različitihati zbijenost

va dijametai broj taz tako dda definicijaprečnika čiji

up od obograničeni

primjer, imaprave. S druh da su bil

st 1. Ustvari, čak i ako i

m duži sa zrečnik man

mo. Imamolu: ako je zb

onda postpokazati da,mogla biti

sekcije i pe slučaj: čaveličina kva

situacijam.

ta u ℝ – λ zbijenost

35

h rezultata, t scene, kak

ar objekta ako da vrijeda je diama govori o bi centar mo

bjekata čijai, zbijenosta zbijenost uge strane, lo koje dviji, može se dimaju jako r

zbijenošću 3nji od prečn

o definisan bijenost matoje regioni ako je zbijda pažljivi

pokažemo dak i za ulazadratna. Dru

ma kad je u

koji može od . (Algo

što je nepko slijedi.

. Zbijenosedi sljedećem( ) ≥ diambilo kojoj lože biti bilo

a je zbijenot također m( ) čak izbijenost taje lopte raz

dokazati da brazličite vel

3. Disk B pnika B pa s

parametar, ala onda su i sa mnogoenost mala,ije analizir

da daje male male zbijugim riječimulazna scen

sadržavati oritam prika

poželjno. S

st skupa e: bilo kojam( ). Slikaopti: nije ogdje u prost

st : bilo kmože biti v

ako su objakođer možezmaknute zabilo koji skuličine.

presijeca pese one ne ra

zbijenost, kobjekti raz

o objekata k moguće je

ramo randolu BSP akoenosti taj a

ma, ovaj algna lagana.

segmente (azan ispod t

Stoga, defin

objekata ua lopta pa 5.7 ilustrobjekat u toru.

koji skup pvelika. Konbjekti u kone biti mala: a više od j

kup od dis

et duži,ali dačunaju.

koji hvata szumno razdvkoji su bli

e pronaći maomizirani (o je zbijenoalgoritam mgoritam ne Slijedi da

(dijelove), također rad

nisaćemo

u ℝ je presijeca ruje ovu , nego je

pravih je strukcija

nstrukciji skup od edinične

sjunktnih

dvije od

složenost vojeni, a zu jedni alu BSP. slučajni)

ost ulaza može dati

uspijeva nam je

diskove, di i u ℝ ,

Page 38: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

usℝskobpr

N(bosČujejezasepoječu

,leobsadeod

Lun

Dpojena

A′na

prpona

stvari, čak iℝ .) Ideja kokup tačaka bjekata i orecizirati ov

Neka ( )bounding bosno-poravnauvari koje

ednostavno e ( ) multia objekte u e čvorovi odudarati. Kednom za svuvari u (, broj objek

ema ovo prbjekata kojiadrži mnogefinicija zbidnosu na kv

ema 5.6 Bnutrašnjosti

Dokaz.Neka ostoji najviše ′ skup ostajviše . Mo

Ako objekat ′, kvadrat ( ) na x-oa y-osi sadrž

rečnik od okrijmo sajmanje jed

i u većim dioja stoji iza(zvaćemo ihnda dopust

vu ideju. ) označavox) od , tjat četveroue smo dečetiri čvorskup od 4

. ( ( ) jegranični

Kada se ovovaki objekat) su predstkata koji prerecizira. Prii presijecajuge čuvare ijenosti (u 2vadrate.

Bilo koji osi presijeca n

je osno-pše objekatalih objekaoramo poka

iz ′ pres ne sadrži

osu sadrži prži projekciju

najmanje sa četiri disan od ovih d

dia

imenzijamaa ovog algoh čuvari) tatiti konstru

va graničnj. ( ) je

ugao koji sefinisali zara od ( čuvara def

e multiskup h okvira

o desi, želimt za koji su tavnici raspesijecaju imijetimo du kvadrat, abez presije2D) koristi

sno-paralelanajviše +aralelan kv

ata koji imajata iz , tj. azati da najv

sijeca , ončvor od

rojekciju odu od na y

dužina stranka (kruga) diskova .

am( ) ≥ di36

a. Radi jednoritma je daakvih da je

ukciji BSP-a

ni okvir namanji

sadrži . a su ). Neka finisanih zato što

mogu mo da ovi ččvor granič

odjele od nije mnogo

da sljedeća ali ne i donecanja jedndiskove, o

an kvadrat 4 objekat

vadrat sa aju čuvara (t

onih bez čviše 4 obje

nda ( )oč( ) u svod na x-osiy-osi (ili obo

nice od , , . . . , p Dopunimo

am( )√2 > d

ostavnosti,a za svaki o

raspodjelaa da bude

čuvari budu čnog okvira u sljedeće

o veći od blema daje

nju granicu:nog objektsobina čuva

koji sadržta iz .

čuvara u svtj. čvor grančuvara unutaekata iz ′ mčigledno takojoj unutraši ili projekcioje) – vidjet

tako da jedprečinka di

o do . Im

diam( )2 =

ubuduće ćeobjekat izčuvara prevođena ču

stavljeni u a.) Kada im smislu: zroja čuvarasamo gornsasvim je

a. Primijetara datih u

ži k čuvara

vojoj unutraničnog okvar . Jasno

može presjeć

kođer presijnjosti. Ali ija od ( )ti sliku 5.8. diam( ) ≥am( )/2. Omamo

diam( )

emo se ograz definišeedstavnik rauvarima. Sa

u ( ) više ima malu zbza bilo koji

a unutar . nju granicu moguće da

timo još dsljedećoj l

a iz ( ) ašnjosti. Oč

vira) unutar o, zbijenost ći .

jeca . Po donda proje) na y-osi oOvo implicdiam( )/√Objekat p

aničiti na mo mali

aspodjele ad ćemo

puta, po bijenost, i kvadrat Sljedeća na broj

a kvadrat da mada emi je u

u svojoj

čigledno, . Neka

od ′ je

definiciji ekcija od od ( ) cira da je √2. Sada presijeca

Page 39: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

Kna′na

Lekoob

Uje(ktapoB

inreprbuAse

Slika 5.8 K

Kako ′ imaajviše put′. Dodavanalazimo da

ema 5.6 ponstrukciju bjekte iz u

U prvoj fazi ednog čuvakvadstablo) ako što prvoodijelimo sSP stablo n i na prim

nformacija nezultirajućojrecizni. Druudu dobro r

Ako su objekekciji 5.3 sv

Kvadrat σ pse

a zbijenost ta. Stoga,

njem najviš presijeca

predlaže slBSP. Nek

u njegovoj u

rekurzivnoara u svojna ( ). D

o podijelimovaku polov

na skupu (mjer, ustvarnije sačuvanj podjeli pruga faza algrazdvojeni. kti duži na

ve do fragme

presijeca seegmenta je

najviše , presijeca n

še objeknajviše +

ljedeći dvoka je kvadunutrašnjost

dijelimo joj unutraš

Dijeljenje kvo kvadrat navicu horizon( ). Slika5.9ri ista linija;na u čvorovresijeca samgoritma ondKako je dr

a primjer, menata duži u

37

egment (dioe najmanje

svaki jnajviše obkata koji n+ 4 objeka

ofazni algodrat koji sti.

u kvadratešnjosti. Drvadrata na na dvije jednntalnom lin9 ilustruje o; ono što se

vima u BSP mo nekolikda dijeli svruga faza u

možemo priu svakom li

o), ali ne saivica dužin

je punjen bjekata iz

nisu u ′ ata iz .

oritam za sadrži sve

e sve dok srugim riječnjegova četinake polovicnijom. Stogovo. Primijerazlikuje jestablu. Pre

ko objekatavaki list regurađena tačnimijeniti 2D

st regionu.

drži čuvarane od σ.

svaki kvadračima, konsri kvadrantace vertikalnga nam quaetimo da su e koji dio linma lemi 5.6

a, najviše 1gion dalje, no zavisi odDRANDOMB

a. Stoga, pr

rat ne sadržstruišemo qa može biti nom linijomadtree podjneke linije

nije je bitan6 svaki list 1 + 4 , da sve dok ob

d tipa objekBSP algorita

rečnik

i najviše quadtree urađeno

m, a onda ela daje podjele,

n, ali ova region u budemo

bjekti ne kata u . am dat u

Page 40: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

Prprprugda

Prčupa

Dm

njqu

resudna osorva faza daroblem: brojgla u početnaje linearan

rva modifikuvara unutraarametar

ruga modimoramo pod

Slik

jih sadrže uadtree podj

Slika 5.9

obina algoraje list regij list region

nom kvadrabroj list reg

kacija je da va, već stajem≥ 1. O razl

fikacija je ijeliti kvadr

ka 5.10 Pri

čuvara u svdjele: dijelim

9 Quadtree

itma koji smije koji prena može bititu . Zbog giona. Ovo j

više ne nastmo kad kadogu za ovo

sljedeća. rat . Razm

imjeri quad

vojoj unutramo u četir

38

e podjele i o

mo upravo esijecaju nei velik. Ovotoga modifje urađeno

tavljamo doda region sai za biranje

Pretpostavimotrimo čet

dtree podje

ašnjosti, onri kvadranta

odgovaraju

skicirali jeekoliko objeo se dešava nfikujemo prvkako slijedi

ok svaki regadrži ili me ćemo go

imo da u tiri kvadrant

ele i skuplja

nda nastavljaa tako što g

uće BSP sta

e ta da za sekata. Nažanpr. kada dvvu fazu algoi.

gion ne budemanje čuvaraovoriti kasni

proceduri ta od . Ak

ajući korak

amo kao pria prvo podi

ablo

slabo zbijenalost, postova čuvara leoritma da z

e imao samoa, za neki pije.

rekurzivne ko najmanje

k sa k = 4

rije primjenjijelimo vert

ne scene oji jedan eže blizu asigurno

o jednog prikladan

podjele e dva od

jivanjem tikalnom

Page 41: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

linhoqukvprkvkvbitoskunPridsjjeskD′odzadi

A

AUIz1.2.3. 4. 5. iz6. ču7.

re8.

nijom (orizontalnomuadtree podvadranata nrimijenimo vadranta povadrant, reciti oprezni: o može uzekupljajući knutrašnjostiretpostavim

dentična. Severozapad

e čuvara ikupljeni kvaijelimo ′ t′, a onda pod ′ – vidjasebnom ′ijeljena dalj

Algoritam PH

Algoritam PUlaz. Regija zlaz. BSP sta ako ( onda Kre u sup

znad.

uvaju

egije. vrati

σ), a onm linijom

djele, vraćamne sadrži

quadtree ostaju list cimo ′, sa svi čuvari m

eti mnogo qkorak. Intu od ′.

mo da je Skupljamo du – ′ zadržzvan unutraadrant. Primtako što ga odijelimo dveti sliku 5., jedina rege je kvadrat

HASE1 sažim

HASE1( ,, skup čuv

ablo tako ) ≤ eiraj BSP stprotnom ak

Kr Za

nda svaku( )(slikamo se na kvviše od podjelu; regioni. Aviše od

mogu biti vquad podjeuitivno, sku

Preciznije,′ sjeveroza′ pomijeržava oblik kašnjosti od mijetimo daprvo podije

va preostala10. Ovo di

gija koja mot.

ma procedur, ) vara u unuda svaki lis

ablo kojeko tačno

onda u sup

reiraj BSP s(σ)(σ)amijeni svak

rekurz

39

u polovicua 5.10). Navadrante. A čuvara, u ovom

Ako postojičuvara, u nveoma blizuela prije neupljamo , skupljajuapadni kvadrajući njegkvadrata tok′. Kršeći ma ′ ima naelimo vertika dijela horiijeli u če

ože sadržava

ru rekurzivn

utrašnjosti ost region sa

e se sastoji ojedan kvad

unutrašnjoOdredi lin ko

rotnom Od

stablo sa tkao njegovkao njihovuki list od

zivno na reg

u podijeliakon primje

Ako nijedan onda takoslučaju čei tačno jed

njemu morau ćoška i ongo ih razdv′ sve dok ući korak drant od gov donji kom ovog smalo notaciajmanje jedkalnom linijizontalnom etiri regije ati više od

ne podjele.

od i cijelidrži najviše

od jednog čvrant od saosti nije podjela orak, kako jedredi linije p

quadtr

tri unutrašnjvu liniju podu liniju podj

sa BSP st

giji koja odg

mo ene od đer

etiri dan

amo nda vojimo. Sto

najmanje se nastav

; ostala trdesni uga

skupljajućegiju, koristim

dnog čuvarajom (σ) klinijom (σod kojih su čuvara i z

i broj ≥ 1e čuvara.

vora lista. adrži više od(σ) i (σe objašnjenopodjela (σree podjelu,

nja čvora; kodjele, a oba djele. tablom iz

govara i č

oga primije čuvara

vlja kako ri slučaja sao dijagong procesa –

mo ′ da oba na svojoj kroz desnu σ) kroz donu dvije kvazbog toga m

1.

d k čuvara uσ) za skupljo iznad. σ) i (σ) za, kako je obj

orijen od djeteta od k

zračunatim

čuvarima un

enjujemo nisu u slijedi.

su skoro alno ka

– sve dok bilježimo

granici. ivicu od nju ivicu adrati. U može biti

u svojoj

jajući

a jašnjeno

čuva korijena

nutar

Page 42: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

40

Lema 5.7 PHASE1( , ( ), ) daje BSP stablo sa ( / ) listova, gdje svaki list region presijeca najviše + 4 objekata.

Dokaz. Dokazat ćemo prvo granicu za broj listova. Ovaj broj je za jedan veći nego broj unutrašnjih čvorova pa je dovoljnoda se ograničimo na potonji broj.

Neka ( ) označava maksimalan broj unutrašnjih čvorova u BSP stablu kreiranih sa PHASE1( , , ) gdje je card( ) = . Ako je ≤ , nijedna podjela nije primijenjena pa je tako ( ) = 0 u ovom slučaju. Inače, quadtree podjela ili skupljajući postupak je primijenjen na na . Ovo rezultuje u tri unutrašnja čvora i četiri regije u koje se vraćamo.Neka , . . . , označavaju brojeve čuvara u četiri regije i neka je ≔ { : 1 ≤ ≤ 4i > }. Kako je regija koja sadrži ili manje čuvara list region, znamo da ( ) = 0 za ∉ . Stoga,

( ) = 0, akoje ≤3 + ( )∈ , usuprotnom

Dokazat ćemo indukcijom da vrijedi ( ) ≤ max(0, − 3). Ovo je očigledno

tačno za ≤ , zato pretpostavimo da je > . Čuvar može biti u unutrašnjosti najviše jedne regije, što znači da ∑ ≤∈ . Ako najmanje dva kvadranta od sadrže više od čuvara, onda je ( ) ≥ 2 pa imamo

( ) ≤ 3 + ( )∈ ≤ 3 + 6 /∈ − ( ) ∙ 3 ≤ 6 − 3, što je bila tvrdnja. Ako nijedan od kvadranata ne sadrži više od čuvara, onda su sve četiri regije list regioni i ( ) = 3. Zajedno sa pretpostavkom > ovo implicira ( ) ≤ (6 / ) − 3. Preostali slučaj je gdje tačno jedan kvadrant sadrži više od čuvara. U ovom slučaju radimo skupljajući korak. Zbog načina na koji je skupljajući korak primijenjen, skupljeni kvadrant sadrži manje od − čuvara i druge dobijene regije sadrže najviše čuvara. Stoga, u ovom slučaju imamo

( ) ≤ 3 + ( − ) ≤ 3 + 6( − ) − 3 ≤ 6 − 3. Slijedi da je u svim slučajevima ( ) ≤ ( ) − 3, što je bila tvrdnja. Ovo dokazuje

granicu za broj unutrašnjih čvorova.

Ostaje da se dokaže da svaki list region presijeca najviše + 4 objekata. Po konstrukciji, list region sadrži najviše čuvara u svojoj unutrašnjosti. Stoga, ako je list region kvadrat, lema 5.6 implicira da on presijeca + 4 objekata. Mogu postojati list regioni koji nisu kvadrati i tada ne možemo primijeniti lemu 5.6 direktno. Nekvadrat list

Page 43: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

reko5.čiskovbrnaimsakvlem

LezabrrePopoas

OtotrinaredrO

AUIz1.2.3.4.5.6.7.8.9.

10

egion ′′ moraku, kao10.Podsjeti

im ili vkupljenog kvih čuvara mroj čuvara va granici omplicira da a najviše vadrat je poemi 5.6, ova

mnogo objek

ema 5.7 obja veće ćemroj objekataegiona kolikostavljanje oređeno sa simptotski –

vdje postojoga ga ne mik. Pretpostašom pretpoezultujućemrugom fazovo vodi ka

AlgoritamLO

Ulaz. Skup zlaz. BSP sta Neka ( ) ← 1; ur dok nijeur radi ← za zv ra za zvaki li radi Izrač

0. vrati

mora biti proo što je imo se da više čuvarkvadranta mora biti n

vanjskih od d ′) mora′′ može bčuvara u sv

okazan sivomaj kvadrat pkata.

jašnjava zašmo imati ma po list regko god je ≔ će u1), dok – ide samo o

i jedan promožemo kortavimo malostavkomka

m BSP stablom algoritmsljedećem a

OWDENSITY

od objekablo za ) bude skuprađeno←nerađeno 2 ; ← Pvaki list oadi Izračunaj

akost od čunaj BSP s

oduciran u prikazan

skupljajući ra nije u ′. Najmanna granici o′ (ne računa biti manjbiti pokrivevojoj unutram bojom napresijeca na

što može bimanje list reggionu. Doba

moguće buraditi ovo:

se maksimod 1 + 4 d

oblem: mi nristiti kao pu vrijednos

ao vrijednošlu presijeca

ma; u suproalgoritmu.

YBSP2D( )kata u ravni..

p od 4 grantačno; ←PHASE1( ,d

aj skup ( )( ( )) > stablo za

41

skupljajućeno na sli

proces staunutrašnjos

nje jedan ood ′, tako dnajući čuvai od . Ov

en kvadratoašnjosti; ova slici. Premajviše + 4iti povoljno giona. S druar izbor za bez značajn: broj list rmalan broj do 5 .

ne znamo unparametar ust za , recšću za i

a najviše 5otnom, udup

) .

ničnih okvira←ograničav( ), ); u) fragmenat5 ondaura

a ( ) i zam

em ici aje sti od da

are vo

om vaj ma 4 objekata

za koristiuge strane,

je onda onog povećaregiona će s

objekata p

naprijed , u algoritmu.imo = 2.onda provje objekata.

plamo našu

a čvorova ovajući kvadr

rađeno ← t

ta objekata uađeno ← ne

mijeni sa

a pa tako ′iti vrijednosveće će t

onaj koji ćenja objekatse smanjiti po list regi

zbijenost u. Zbog toga Onda pokerimo da li Ako je ta

upretpostavk

od objekata urat od .

tačno

u regionu odetačno

.

′′presijeca i

st koja je vetakođer znae reducirati ta po list za faktor

ionu neće

ulazne scena koristimo

krenemo PH

i svaki list rako, nastavlku i probam

u .

d .

isto tako

eća od 1: ačiti veći

broj list regionu. (što je

povećati

ne i zbog sljedeći

HASE1 sa region u ljamo sa mo opet.

Page 44: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

42

Kada se ulaz sastoji od nepresijecajućih duži u ravni možemo koristiti 2DRANDOMBSP za izračunavanje BSP-ova u liniji 9, što vodi sljedećem rezultatu.

Teorem 5.8 Za bilo koji skup od disjunktnih duži u ravni postoji BSP veličine ( log ) gdje je zbijenost od .

Dokaz.Prema lemi 5.7, PHASE1( , ( ), ) rezultira sa BSP stablom gdje svaki list region presijeca najviše + 4 objekata. Stoga, test u liniji 7 od LOWDENSITYBSP2D je garantirano netačan za ≥ . (Ako je < , test može, a i ne mora biti netačan.) Dok-petlja završava najkasnije kada postane veće od prvi put. Kako se uduplava svaki put, ovo implicira da je ≤ 2 kada stignemo do druge faze u liniji 8.

Neka ∗ označava vrijednost kada stignemo do linije 8. Upravo smo potvrdili da je ∗ ≤ 2 . Test u liniji 7 garantira da svaki list region presijeca najviše 5 ∗ segmenata. Stoga, prema lemi 5.1, svako stablo ima (očekivanu) veličinu ( ∗ log ∗) kada je

2DRANDOMBSP korišten u liniji 9. Zbog toga, postoji ( / ∗) list regiona, a ukupna veličina BSP stabla je ( log ∗). Kako je ∗ ≤ 2 , ovo dokazuje teorem.

Granica u teoremu 5.8 nikad nije gora od ( log ). Drugim riječima, algoritam opisan iznad je jednako dobar i kao algoritam dat u sekciji 5.3 u najgorem slučaju, ali dokazivo profituje kada je zbijenost ulaza mala.

Podsjetimo se da je razlog za uvođenje koncepta zbijenosti bio kvadratna granica u najgorem slučaju za BSP-ove za trouglove u ℝ . Algoritam koji smo upravo opisali radi veoma dobro za duži u ravni: producira BSP čija je veličina ( log ) u najgorem slučaju i ( ) kada je zbijenost ulaza konstanta. Postavlja se pitanje šta se dešava kada primijenimo ovaj prilaz na skup trouglova u ℝ . Ispostavlja se da ovaj pristup vodi ka dobrim rezultatima, kao što je navedeno u sljedećem teoremu.

Teorem 5.9 Za bilo koji skup od disjunktnih trouglova u ℝ postoji BSP veličine ( ), gdje je zbijenost od .

Granica u teoremu 5.9 interpolira se lijepo između ( )i ( ) kako se mijenja od 1 do . Zbog toga algoritam producira BSP čija je veličina optimalna u najgorem slučaju. Ali, rezultat je čak jači: ( ) granica je optimalna za sve vrijednosti . Tačnije, za bilo koje i bilo koje sa 1 ≤ λ ≤ postoji kolekcija od trouglova u ℝ čija zbijenost je i za koje bilo koji BSP mora imati granicu ( ).

5.6 Neka dodatna zapažanja i komentari

BSP stabla su popularna u mnogim aplikativnim područjima, posebno u kompjuterskoj grafici. Aplikacija spomenuta u ovom poglavlju je uklanjanje skrivenih površi sa slikarevim algoritmom. Druge aplikacije uključuju generisanje sjene, skupovne operacije na poliedrima i pretprocesiranje vidljivosti za interaktivne prolaze. BSP stabla također mogu biti korištena u metodama dekompozicije ćelije u planiranju kretanja, za

Page 45: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

43

pretragu ranga i opće strukture indeksiranja (GIS). Dvije druge dobro poznate strukture, kd-stabla i quadstabla,ustvari su specijalni slučajevi BSP stabala, gdje su korištene samo ravni ortogonalne podjele.

Studija BSP stabala sa teoretske tačke glediša je inicirana od strane Patersona i Yaoa. Oni su također dokazali granice na BSP stablima u višim dimenzijama: bilo koji skup ( − 1)-dimenzionalnih simpleksa u ℝ , daje stablo veličine ( ). Paterson i Yao su također dobili rezultate za ortogonalne objekte u višim dimenzijama. Na primjer, oni

su dokazali da bilo koji skup ortogonalnih kvadrata u ℝ daje BSP veličine ( √ ) i da je ova granica čvrsta u najgorem slučaju. Ispod ćemo diskutovati o rezultatima koji su dobiveni do sada. Mnogo opsežniji pregled je dat od strane Toth-a.

Dugo vremena nije bilo poznato da li bi bilo koji skup od nepresijecajućih duži u ravni dao BSP veličine ( ), ali je Toth dokazao da ovo nije slučaj konstruišući skup duži za koji BSP mora imati veličinu ( log / log log ). Primijetimo da ovdje još postoji mala rupa između ove donje granice i trenutno poznate gornje granice, koja je ( log ). Postoji nekoliko specijalnih slučajeva, kakogod, gdje je ( ) veličina BSP-a moguća. Na primjer, Paterson i Yao su pokazali da bilo koji skup od disjunktnih duži u ravni koje su ili horizontalne ili vertikalne daje BSP veličine ( ). Do istog rezultata su došli i d'Amore and Franciosa. Toth je poopćio ovaj rezulat na duži sa ograničenim brojem orjentacija. Drugi specijalni slučajevi gdje je BSP linearne veličine uvijek mogućaje za duži sa više ili manje istom dužinom i, kao što smo vidjeli, za skup objekata konstantne zbijenosti.

U poglavlju 5.5 bavili smo se BSP-ovima za slabo zbijene scene. Ovo je bilo inspirisano činjenicom da se po pitanju veličine najgoreg slučaja BSP-ova za 3D scene ima malo toga za uraditi sa praktičnim performansama. Slična situacija često proizilazi u studiji geometrijskih algoritama: često se mogunaćiulazni skupovi za koje dati algoritam nije veoma efikasan, ali u mnogo slučajeva ulazni skupovi nisu mnogo realistični. Ovo može imati dva nedostatka. Prvi, analiza najgoreg slučaja algoritma ne mora biti mnogo informativna da li je algoritam koristan u praksi. Drugo, kako su algoritmi tipično dizajnirani da imaju najbolje performanse u najgorem slučaju, oni mogu biti okrenuti ka situacijama koje neće biti prisutne u praksi i zbog toga mogu biti bespotrebno komplicirani. Razlog za ovo je, obično, činjenica da vrijeme izvođenja geometrijskih algoritama nije određeno samo veličinom ulaza nego je pod jakim uticajem oblika ulaznih objekata i njihove prostorne distribucije. Za prevazilaženje ovog problema, može se probati definisati parametar koji hvata geometriju ulaza – kao što smo radili u sekciji 5.5

Parametar koji je korišten najčešće u ovom kontekstu je debljina. Trougao se naziva β-debelim ako su svi njegovi ulgovi najmanje β. Pokazano je da je kompleksnost unije od presijecajućih β-debelih trouglova u ravni blizu linearne po ako je β konstantno;

trenutno, najpoznatija granica je ((1/ )log(1/ ) loglog ). Koncept debljine je

generalizovan na proizvoljne konveksne objekte pa čak i na nekonveksne objekte. Jedan od najgeneralnijih definicija data je od van der Stappena koji je definisao objekat u

Page 46: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

44

ℝ da bude β-debeo ako vrijedi sljedeće: za bilo koju kuglu B čiji centar leži na i koja potpuno ne sadrži u svojoj unutrašnjosti, imamo da vol( ∩ ) ≥ ∙ vol( ), gdje vol(∙) označava zapreminu. Postoje mnogi problemi koji mogu biti efikasnije riješeni za debele objekte nego za obične objekte. Primjeri su pretraga ranga, lociranje tačke, planiranje kretanja, uklanjanje skrivenih površina, pucanje zrakom i izračunavanje redova dubine.

Parametar korišten u sekciji 5.5, zbijenost, je također studiran mnogo. Može se pokazati da bilo koji skup disjunktnih β-debelih objekata ima zbijenost (1/ ) i tako bilo koji rezultat dobijen za slabo zbijene scene odmah daje rezultat za disjunktne debele objekte. Algoritam za konstruisanje BSP-a za slabo zbijene scene opisan u sekciji 5.5 je modifikovana i malo unaprijeđena verzija konstrukcije po de Bergu. Neki od rezultata spomenuti iznad za debele objekte su u stvari bazirani na ovoj konstrukciji i stoga se također primijenjuju na slabo zbijene scene.

Page 47: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

45

6.Uklanjanje skrivenih površina

6.1 Pozadina problema

Potreba za uklanjanjem onoga što nije vidljivo je bila i uvijek će biti ekstremno visoka u industriji igara, bez obzira na to što su se jake grafičke karte razvile jako brzo i stvari koje su bile istinite prije nekoliko godina, ovih dana nisu ni izbliza. Kada je igra kreirana, ciljni frame rate je postavljen. Najniži prihvatljivi rate na ciljanom sistemu mora biti oko 30 okvira/sekundi. Prije nekoliko godina, stavljanje preko 5000 teksturiranih poligona po okviru bi bilo neizvodljivo. Danas postoje grafičke karte na tržištu sa mogućnošću iscrtavanja stotina miliona poligona u sekundi pod optimalnim uvjetima. Međutim, još uvijek postoji potreba za uklanjanjem skrivenih površina. Naime, svaki skriveni poligon koji je nacrtan mogao bi biti zamijenjen poligonom koji je vidljiv.Samim tim se povećavaju detalji na sceni, praveći igru vizuelno atraktivnijom. Pitanje je koliko daleko ćemo ići sa uklanjanjem skrivenih površina. Potrebna su složena izračunavanja da bi se uklonile skrivene površine, kao što su uklanjanje pogledom krnje piramide (view frustum culling) i portal renderovanje (portal rendering). Procesorsko vrijeme potrebno da bi se uradila ova izračunavanja može biti iskorišteno za povećanje drugih efekata u igri kao što su AI i detekcija sudara. Otuda, postoje mnoge stvari koje treba uzeti u razmatranje kada se prave algoritmi za uklanjanje skrivenih površina. Skoro da nema igre koja je otišla toliko daleko da ukloni svaki nevidljivi poligon. Većina igara se zadovoljava sa uklanjanjem cijelog skupa poligona, kao što su čvorovi, objekti itd. Ne razmatraju se individualni poligoni, pa se čini ispravnim načinom prihvatiti neka precrtavanja kako bi se ograničila izračunavanja kod uklanjanja skrivenih površina.

Najčešća tehnika za uklanjanje skrivenih površina kada kreiramo pucačinu u prvom licu (FPS) je portal renderovanje. Ova tehnika je vrlo dobro prilagođena za korištenje prednosti BSP stabala, iako korištenje BSP stabala nije neophodno. Razmatrali smo da koristimo ovo, ali smo smatrali da statičnija reprezentacija može dati brže renderovanje BSP stabala. Portal renderovanje ima neke lijepe sporedne efekte kao što su ogledala i nadzorne kamere koje ne možemo uraditi sa našom tehnikom, ali u drugu ruku, naša tehnika zahtijeva mnogo manje izračunavanja tokom vremena izvršavanja.

Page 48: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

7

SvkonaOPoophaop

Opokrpozapopo

NKutdo

D3D

2[T

. Portal

vijet može onveksan i ačin da se nvo znači dostavljanje pisali iznadardverski ubpisati kako t

snovna idejozicije sa pornje piramidogledom kra rekurzivneogled krnjeogled krnje

Na figuri iznKada F1 naiđ

tiču portali otjera na F5

a bismo izoD mašinu, p

Tyberghein, Jorr

rendero

biti opisan zatvoren sk

nacrta linijada svaka ruportal polig

d, potreba brzanih Z-sto uraditi na

eja sa portaogledom krde. Susjednrnje piramide funkcije. Me piramide o

piramide m

Slik

nad gledatelđe na portaP2 i P3 pa

5, a F4 na F6

ostavili objepostoji niz

rit. The Portal Tec

ovanje

kao nekolikup poligona u sektoru dupa u svakgona može za konvek

spremnika,a stari način

al mašinom rnje piramidi sektor je r

de. Ovo je vMnogi objekograničen s

može biti isje

ka 7.1 Odsij

lj je poziciol poligon P

a budu odsje6. Ovaj proc

ekat u mašinkoraka koji

chnique for Real-ti

46

iko sektora na gdje se pda bi se iza

kom čvoru biti urađen

ksnim sektopa mnoge

n.

je kada sede i nailaženrenderovan veoma jednkti koji su vsamo na onečen u porta

jecanje pog

oniran na VP1 on je odsečeni na F3ces je dobro

ni portal reni se mogu n

ime 3D Engines].

koji su pood zatvoren

ašlo iz sektomora biti

no ili ručnoorima je uigre preska

e renda (prnjem portaliz iste gled

nostavan prividljivi lagano što se taal mašini.

gleda krnje

V, originalnisječen i pre3 i F4. Kado prilagođen

nderovanja,napraviti za

ovezani kroznošću misli ora bez nailpopunjena

o ili automglavnom n

aču ovaj kri

rikazuje) scl poligona, pdateljske poilaz i veom

ano mogu biačno vidi. I

e piramide

i pogled krnimenovan ua se naiđe nn za rekurzi

, kao bitno a ubrzanje o

z portale. Sna to da ne

laženja na pportal pol

matski. Kao nestala sa piterij. Ali, m

cena iz gledportal siječe

ozicije, ali sma dobro pr

iti izostavljeIspod je sli

rnje piramidu F2. Poslijna portal Pivne funkcij

pitanje za bovog proces

Sektor je e postoji poligon.2 ligonom. što smo

pojavom mi ćemo

dateljeve e pogled sa novim ilagođen eni jer je ika kako

de je F1. e, na F2

P4, F3 se je.

bilo koju sa. Prvo,

Page 49: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

tresaobASlis

Onestrm

Iztaprkourpotrebipo

Dkrnozako

eba izračunadržavati svbjekta. Ond

Ako je čitavalika ispod ocrtava.

bjekat 1 naegativnoj strrane lijeve

može biti izo

zvorna idejaako da samorocesorskogoja crta scenradimo ovoosljednji okebalo biti niti označeniostojaće gre

a bismo birnje piramidormali ovihatvaranje zaoji opisuje k

nati graničnve čvorove nda, ta se sfea sa negativopisuje situa

a slici je na rani lijeve rravni, dok

ostavljen.

a je bila da po vidljive og vremena. nu, mi mora jeste da oz

kvir kada jenacrtano u k da bi se m

eške u Z-spr

li u mogućde sastoji. Ph ravni je lapremine odkako izračun

u sferu za onekog objekera testira uvne strane biaciju gdje je

Slika 7

pozitivnoj sravni, stoga je samo dij

portal mašinoblasti budu

Kako se namo znati dznačimo po poligon bi

krnjoj pirammoglo reći da

remanju.

ćnosti rendePogled krnjelicem premdnosi na unnati da li je

47

objekat; grakta. Optimau odnosu nailo koje od edan objeka

7.2 Uklanja

strani desnea je izostavljjelom sa po

ne uopće neu crtane. U na poligon mda li je poligoligone sa bio crtan. Ov

midi F5 i krna li su bili c

erovati scene piramide

ma unutrašnjnutrašnjost k

poligon un

anična sferaalno, ovo sea svaku ravravni, objek

at izostavlje

anje objeka

e ravni u pojen. Drugi oozitvne stra

emaju precrtdanašnje vr

može naići gon bio ranbrojačem okvo je slučajnjoj piramidcrtani u ovo

nu, moramoje strukturajosti pogledkrnje piram

nutar krnje p

a je najmanuradi jedno

van u poglekat nije vidln i ne iscrta

ata

ogledu krnjeobjekat (2) jane desne ra

tavanja odsirijeme to jeviše puta u

ije crtan ili kvira koji p

za desni zidi F6, tako om okviru il

o definisati a koja sadržda krnje pir

mide. Ispod piramide ili

nja sfera koom tokom kedu krnje p

dljiv i ne iscava se, dok

e piramide, je čitav sa pavni, tako d

ijecanjem pe preveliko u rekurzivnne. Dobar

pokazuje koid u figuri da poligonli ne. U sup

od čega seži ravni, siramide, takse nalazi ane.

oja može kreiranja

piramide. rtava se. se drugi

ali je na pozitivne da on ne

poligona, trošenje

noj petlji način da

oji je bio 4, što bi i moraju protnom,

e pogled svaka od ko da se algoritam

Page 50: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

48

Algoritam UnutarKrnjePiramide( , ) Ulaz. Krnja piramida , poligon . Izlaz. Da li je poligon unutar krnje piramide ili ne. 1. za svaku tačku u 2. unutra ← tačno. 3. za svaku ravan u 4. ako(KlasifikujTačku( , )!= ispred) 5. unutra ← netačno 6. ako(unutra) 7. vratitačno 8. vratinetačno.

7.1 Postavljanje portala

Kao što smo spomenuli ranije, jedan od velikih problema u portal mašini jeste postavljanje portala. Ručno postavljanje portala je proces koji troši mnogo vremena, bez da spominjemo sposobnosti potrebne kod dizajnera mape. Kao i sa drugim stvarima, ovo vrijeme može biti bolje iskorišteno na drugim mjestima. Stoga, potreban je dobar algoritam za postavljanje portala. Andreas Brinck ima dobro rješenje za ovaj problem. Da bismo koristili njegovo rješenje, biće nam potrebna upravo BSP stabla.

Generalna ideja jeste da se svaki portal u drvetu treba podudarati sa ravni koja je definirana podjelom poligona u drvetu. Od svake pojedinačne ravni stvara se portal poligon, koji je, u početku, četverostranični poligon koji prelazi granični okvir čvora u kojem je smješten. Svaki portal poligon je potisnut podstablima čvora u kojem se nalazi. Kada portal poligon prođe kroz čvor u jednom od njegovih podstabala, ravan definisana dijeljenjem poligona u tom čvoru siječe ga. On je također presječen poligonima u čvoru ako je čvor list. Ako je poligon presječen, dva dobijena dijela su potisnuta sa vrha stabla. Kada portal poligon nema potrebu za sječenjem, onda je potisnut u podstablo čvora koji je trenutno posjećen. Ovo znači da ako se on nalazi sa pozitivne strane ravni, biće potisnut u desno podstablo, a ako je sa negativne strane, onda će biti potisnut u lijevo podstablo. Ali, ako je podudaran sa ravni definisanom dijeljenjem poligona u trenutnom čvoru, biće potisnut u oba stabla.

Da bismo bili u mogućnosti definisati algoritam koji postavlja sve portale u stablo, trebamo definisati kako presjeći poligon, a za ovo moramo pretpostaviti da postoji funkcija nazvana TackaPresjeka koja vraća tačku presjeka između ravni i linije između dvije 3D tačke.Koristi se također i funkcija KlasifikujTačku koja prima ravan i tačku, a vraća rezultat da li je tačka ispred, iza ili koincidentna sa ravni.

Efekat sljedećeg algoritma je da siječe poligon sa ravni definisanom kao poligon sjekač. Ako poligon ne pokriva sjekača, jedan od rezultujućih dijelova će biti prazan poligon.

Page 51: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

49

Algoritam SijeciPoligon(S, P) Ulaz. Sjekač S je ravan/poligon koji siječe druge poligone. P je poligon za sječenje. Izlaz. Dva rezultujuća komada nakon sječenja. 1. DesniDio ← {} 2. LijeviDio ← {} 3. za svaku tačku ivice E u P 4. Strana1 ← KlasifikujTacku(S, E.Tacka1) 5. Strana2 ← KlasifikujTacku(S, E.Tacka2) 6. ako(Strana1 != Strana2 i Strana1 != koincidentna i Strana2 != koincidenta) 7. TP ← TackaPresjeka(S, E) 8. ako(Strana1 == ispred) 9. DesniDio ← DesniDio U E.Tacka1 10. DesniDio ← DesniDio U TP 11. LijeviDio ← LijeviDio U TP 12. LijeviDio ← LijeviDio U E.Tacka2 13. ako(Strana1 == ispred) 14. LijeviDio ← LijeviDio U E.Tacka1 15. LijeviDio ← LijeviDio U TP 16. DesniDio ← DesniDio U TP 17. DesniDio ← DesniDio U E.Tacka2 18. u suprotnom 19. ako(Strana1 == ispred ili Strana2 == iza ili Strana1 == koincidentna i Strana2 == koincidentna) 20. DesniDio ← DesniDio U E.Tacka1 21. DesniDio ← DesniDio U E.Tacka2 22. ako(Strana1 == iza ili Strana2 == iza) 23. LijeviDio ← LijeviDio U E.Tacka1 24. LijeviDio ← LijeviDio U E.Tacka2 25. vrati(DesniDio, LijeviDio)

Sada možemo rasporediti portale u BSP stablu. Sljedeći algoritam je algoritam Andreasa Brincka. Algoritam se inicijalno poziva sa portal poligonom koji je veći od graničnog okvira korjenog čvora stabla.

Algoritam PostaviPortale(PP, N) Ulaz. PP je portal poligon za potisnut stablo. N je čvor koji trenutno posjećujemo. Izlaz. Ništa. Efekat. Potiskuje portal poligon dole kroz stablo sijekući kada je potrebno. Izlaz ove funkcije će biti taj da svaki čvor sadrži listu portal poligona gdje svaki portal povezuje tačno dva čvora.

Page 52: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

50

1. ako(JeList(N)) // Portal je provjeren u odnosu na svaki poligon u čvoru. Kada portal pokriva ravan // definisanu poligonom biće isječen u odnosu na tu ravan. Dva rezulutujuća dijela biće // opet potisnuta s vrha stabla. 2. za svakipoligon P2 u N 3. JePresječen ← netačno 4. ako(IzračunajStranu(P2, PP) == pokriva) 5. JePresječen ← tačno 6. (DesniDio, LijeviDio) ← SijeciPoligon(P2, PP) 7. PostaviPortale(DesniDio, KorjeniČvor) 8. PostaviPortale(LijeviDio, KorjeniČvor) 9. ako(nije JePresječen) 10. Ukloni dijelove portal poligona koji su koincidenti sa drugim poligonima u ovom čvoru. // Vidi opis ispod. 11. Dodaj ovaj čvor skupu povezanih čvorova u ovom portal poligonu. 12. usuportnom 13. ako(dijeleći poligon ovog čvora nije potisnut) 14. Kreiraj poligon P koji je veći od graničnog okvira koji sadrži sve poligone u podstablu ovog čvora koji leži u istoj ravni kao dijeleći poligon. 15. PostaviPortale(P, N.LijevoDijete) 16. PostaviPortale(P. N.DesnoDijete) 17. Strana ← IzračunajStranu(N.Djeljitelj, PP) 18. ako(Strana == pozitivna) 19. (DesniDio, LijeviDio) ← SijeciPoligon(P2, PP) 20. PostaviPortale(DesniDio, KorjeniČvor) 21. PostaviPortale(LijeviDio, KorjeniČvor) 22. ako(Strana == pozitivna ili koincidentna) 23. PostaviPortale(PP, N.DesnoDijete) 24. ako(Strana == negativna ili koincidentna) 25. PostaviPortale(PP, N.LijevoDijete)

Ova funkcija je izrazito kompleksna za analizu pa je nećemo analizirati. Samo ćemo objasniti liniju 10. Da bismo je razjasnili, moramo pokazati šta se dešava kada uklonimo koincidentne dijelove između portal poligona i drugih poligona u čvoru. Za tu svrhu potrebno je pogledati sliku 7.3.

Na ovoj slici portal poligon je dostigao list. Tamnosiva oblast označena sa 1 je uklonjena tokom potiskivanja stabla. Dijelovi 2, 3 i 4 koji su obojeni svijetlosivom su koincidentni sa poligonima na kraju čvora, stoga su uklonjeni. Preostali dio je je dio označen sa 5; on će biti korišten kao portal.

Prethodni algoritam na prvi pogled može izgledati veoma kompleksno, ali je ustvati veoma jednostavan i intuitivan. Na kraju, svaki portal poligon će završiti u tačno dva

Page 53: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

čvprvora. Ovo rimijenjenog

S

su dva pog algoritma

Slik

Slika 7.4. P

ortala koji a.

ka 7.3. Ukla

rimjer map

51

će biti vi

anjanje ko

pe za autom

idljivi jedan

incidentnih

matsko pos

n sa drugo

h dijelova

stavljanje p

og. Slijedi

portala.

primjer

Page 54: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

1.

2. U p2ne 3.

4. Kačv 5.

6. NiSa 7.

Portal polig

p1 i p2 ulaz

čvoru s2, p12 (zato što jee isjeca zato

p1 i p2 ulaz

p3 i s3 ulaz

ako ni p2 nivoru n3, a p2

p3 i s3 ulaz

p2 i p4 ulaz

ijedan od poamo se s4 šal

p2, p4 i s4 u

gon 1 (s1) ul

ze u čvor s2.

1 se zajedno sa negativnešto ne presije

ze u čvor n2

ze u čvor n3.

i p3 nisu pre2 i p3 se potis

ze u čvor n3

ze u čvor s4

oligona ne trlje ka n5.

ulaze u čvor

lazi u čvor n

.

sa poligonoe strane s2) secaju poligon

2.

.

esječeni, oni skuju ka čvo

reba sječenje

r n4

52

n1.

U n1jedanod ppoligmije

om podjele s2se zajedno san podjele s2

U n2nemkoinkoji sada

sepotiskujuoru s4.

U n2uklanzove

e, tako da se

1poligon podn dio se uklapoligona u gona, imenanjaju s1.

2 šalje u čvoa s2 šalje dalj.

2 p1 se prihvijenja u čvor

ncidentan sa je u prethod

a se zove p3.

"nizbrdo" za

2 p3 se prihnja iz istog

e p4.

oba p2 i p4

djele se isjecanja jer je kostubu. Ovo a p1 i p2.

r n2, jer je sje, dolje ka s

vaća kao portru n1, a dio o

poligonom dnom koraku

ajedno sa s3

hvaća kao prazloga kao

4 šalju dolje

ca tako da poincidentan s

nas ostavljaOva dva

sa pozitivne ss3 i nijedan o

tal tako da sod s3 se uklau stubu. Po

ku poslan do

. p3 i s3 idu

portal i dio o i prije. s3

ka n4 zajed

pristaje, a sa jednim a sa dva poligona

strane s2. od njih se

e također anja jer je oligon s2 olje ka s3

u dolje ka

od s3 se 3 se sada

dno sa s4.

Page 55: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

8. Ovdr 9.

Odo

7.

PoidštstIdtrestPVcrpr

PVlis

3 O

Ništa ne ula

vaj čvor nećrugi čvor.

Rezultat

vo je sve šobar "frame

.2. Predlo

ortal mašinadeja bila koro se sva sjeatično rješe

deja je sličnaenutnom vrablu kreira VS je skuprtanja, većtarimjer.

VS se račustova. Kada

Opis u rječnik

azi u čvor n

će imati por

što trebamoe rate".

oženo rješ

a je veoma ristiti portal

ečenja dešavenje da bisa portal maremenu izvrse potencij

p listova kojakođer mož

una tokom pa treba izra

ku rada

5

tale, kako n

o za gradnj

šenje

fleksibilna l mašinu, alvaju kada issmo izbjeglšini, jedino ršavanja, to alno vidljivji su vidljive biti korist

prerenderovčunati scen

53

Ni puklosa po

nije vidljiv iz

PortaPortaPortaPorta

ju jednostav

struktura kli postoje n

scrtavamo scli skupa izršto se umjeizvodi u pr

vi skup odnovi iz prvog tan kada se

vanja mapenu, prvo se

p2 ni p4 ne tpe u čvor. Aoligonom u s

z bilo kojeg

al p1 je u obal p2 je u obal p3 je u obal p4 je u ob

vne portal

koja ima nekneki problemcenu. Zbog računavanjaesto izračunrerenderovaosno PVS3

lista. On n računa rad

e. U svakomnacrta list

trebaju sječenAli, s4 je komstubu pa se st

čvora i ne

a, n1 i n2. a, n1 i n4. a, n2 i n3. a, n3 i n4.

mašine koj

ke lijepe osmi s portal m

toga smo oa tokom vrenavanja šta tanju mape. Z(Potentially

nije koristandiozitet i opt

m listu čuvu kojem je

enje, osim zampletan kointoga i uklanj

može vidjet

ja će dati r

sobine. Prvomašinama,

odlučili pronremena izvrtreba biti naZa svaki lisy Visible Sen samo toktizovanje m

va se skup kamera, a

a to da se ncidentan a.

ti nijedan

relativno

obitno je posebno naći više ršavanja. acrtano u st u BSP et). Ovaj

kom faze mreža, na

vidljivih onda se

Page 56: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

nabrha

7.

Dbinebi

Ku talis

Umprtakako

acrta svaki rine o precrardverski ub

.3. Izraču

a bismo izrismo vidjelieke tačke uiti što manje

Kao sa portastablu, zato

ačka koja lesta, zraka m

U slici iznad mora proći k

repriječena ačaka uzoraako rasporeoje raspoređ

Raspointervokviraravni

OcistikoincKomp

list u PVS-rtavanjima. brzane Z-sp

unavanje P

računali PVi da li je ije

uzorke, izmee da bi se iz

lima u porto što se saži u centru

mora proći k

jasno vidimkroz otvor u

te stoga nka u otvoriditi tačke uđuju tačke u

oredi_tackevalom duž a čvora. Fupodjele u gi_tacke(Cvo

cidentne sapleksnost:

u. Ovo zahKao što sm

premnike, št

PVS-a

S, moramo dna tačka ueđu kojih s

zbjegla ogro

al mašini, tamo otvori

lista smatrakroz otvor u

Slika 7.4 V

mo da bi taččvoru. Ovo

ne bi bilo vima čvorov

uzorke u BSu čvoru. One

(Cvor) –ravni podj

nkcija vraćagraničnom oor, SkupTaa poligono( ), gdje

54

htijeva da mmo spomento je sasvim

uraditi stanu listu vidljie vidljivost

omna izraču

tačke uzorciizmeđu lista vidljivomlistu.

Vidljivost i

čka bila vidlo je očito, jevidljivosti i

va mora bitiSP stablu. Zae su:

Ova funkdjele nadolaa skup tača

okviru, a vacaka) – Ukom u čvore je broj u

moramo imanuli ranije,

m dovoljno.

ndardno praiva iz drugot može prat

unavanja. Pr

i mogu biti tova moraju

m u odnosu n

između čvo

ljiva iz druger ako je prizmeđu dviji adekvatana ovu funkc

kcija raspoazećeg čvoaka. Komplevisina. klanja tačkru ili izva

u čvoru, a

ati neku vrstdanašnje gr

aćenje zrakeog lista. Svatiti. Ovih taroblem je ka

raspoređenu provjeriti na zraku ko

orova

gog čvora liošla nekud ije tačke. Zn. Ispod smciju trebamo

oređuje tačra, unutar

eksnost: (e iz skupa an graničnbroj tačaka

tu algoritmagrafičke kar

e između lisaki list trebaačaka uzoraako ih raspo

ne duž ravnii za vidljivooja dolazi iz

inija vidljivdrugo. linij

Zbog toga rmo opisali a

o pomoćne

čke sa odgranica gr) gdje je

tačaka kojnog okviraa u skupu.

a koji se te imaju

stova, da a da ima

aka mora orediti.

i podjele ost. Ako z drugog

osti, ona ja bi bila raspored

algoritam funkcije

dređenim raničnog

e širina

je su ili a čvora.

Page 57: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

55

Funkcija: Rasporedi_tacke_uzorke Ulaz. Cvor – Trenutni koji posjećujemo. SkupTacaka – Skup tačaka koje će se rasporediti u podstablu čvora. Izlaz. Nema Efekat: Raspoređuje tačke duž ravni podjele ovog čvora. Onda dijeli nadolazeće tačke prema ravni podjele i uklanja tačke koje su koincidentne sa poligonom u ovom čvoru ili su izvan graničnog okvira ovog čvora. Novokreirane tačke će biti dodane i u pozitivni i u negativni skup. Kada skup tačaka dostigne čvor list te tačke su tačke uzorci ovog lista.

Rasporedi_tacke_uzorke(Cvor, SkupTacaka) 1. OcistiTacke(Cvor, SkupTacaka) 2. ako(je_list(Cvor)) 3. Stavi skup tačaka da budu tačke uzorci ovog čvora 4.u suprotnom 5. DesniDio ← NoveTacke 6. NoveTacke ← RasporediTacke(Cvor) 7. DesniDio ← NoveTacke 8. LijeviDio ← NoveTacke 9. za svaku tačku P u SkupTacaka 10. Strana ← klasificiraj_tacke(Cvor.Djeljitelj, P) 11. ako(Strana ==koincidenta) 12. DesniDio ← DesniDio U P 13. LijeviDio ← LijeviDio U P 14. ako(Strana == ispred) 15. DesniDio ← DesniDio U P 16. ako(Strana == iza) 17. LijeviDio ← LijeviDio U P 18. Rasporedi_tacke_uzorke(Cvor.LijevoDijete, LijeviDio) 19. Rasporedi_tacke_uzorke(Cvor.DesnoDijete, DesniDio)

Slijedi analiza kompleksnosti. Svaki poziv ove funkcije je reda ( + ) (zbog kompleksnosti funkcija Ocisti_tacke i Rasporedi_Tacke). Da bismo izračunali punu kompleksnost, možemo formulisati sljedeću funkciju (pretpostavićemo da je skup tačaka jednako raspoređen u oba skupa): ( ) = 2 ( /2) + ( + ) Koristeći poznati master teorem4, dobijamo red kompleksnosti ( + ).

4[Cormen, Thomas H. Leiserson, Charles E. and Rivest, Ronald L.: Introduction to Algorithms]

Page 58: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

56

Ova funkcija se prvo poziva sa korjenim čvorom stabla i praznim skupom kao parametrima. Funkcija radi sljedeće. Počinje raspodjelom tačaka u ravni definisanih poligonom podjele u korjenom čvoru BSP stabla. Kako je ravan beskonačnog oblika, ovo će generisati beskonačan broj tačaka uzoraka pa stoga moraju postojati neke granice unutar kojih se tačke raspoređuju. Ove granice su granični okvir (kutija) korjenog čvora.

Nakon što su tačke raspoređene, sve sešalju dalje u oba podstabla. Kada skup tačaka uzoraka uđe u čvor, one sedijele u dva skupa, jedan skup za tačke sa pozitivne strane ravni podjele u čvoru i jedan skup za tačke na negativnoj strani. Tačke koje su tačno na ravni stavljaju u oba skupa. Zatim se tačke raspoređuju duž ovih čvorova dijeleći ravan sa ovim graničnim okvirima čvorova kao granicama. Nove raspoređene tačke se stavljaju u oba skupa. Sada, pozitivan skup se potiskuje u desno podstablo, a negativan skup se potiskuje u lijevo podstablo. Proces se ponavlja sve dok skup tačaka ne uđe u list. Nakon ovih operacija, svaki list sadrži skup tačaka uzoraka koje su raspoređene u otvorima čvora.

Ako bismo pratili zrakom između svakog čvora u ovoj etapi, to bi trajalo jako dugo. Ali, ako znamo koji listovi su povezani sa drugima bilo bi mnogo lakše, jer bi se to moglo iskoristiti da preskočimo praćenje između nekih listova. Veoma je jednostavno pronaći koji listovi su povezani sa drugim listovima; dovoljno je provjeriti tačke uzorke u svakom listu u odnosu na tačke uzorke svakog drugog lista. Ako dva čvora dijele istu tačku uzorak, ova dva čvora su povezana jedan sa drugim, zato što tokom raspodjele tačaka uzoraka kroz stablo, svaka tačka će završiti ili ni u jednom ili u dva lista. Kada znamo koji listovi su povezani, možemo definisati algoritam za praćenje vidljivosti. Međutim, prvo moramo da definišemo neke pomoćne funkcije.

U cilju praćenja vidljivosti potreno je neko osnovno praćenje zrakom. BSP stabla su veoma dobra struktura za praćenje zrakom, jer se mogu zanemariti ogromni dijelovi svijeta sa veoma malim troškom. Skup funkcija koje trebamo za naše rješenje je:

Poligon_je_pogođen(Poligon, Zraka) – Vraća da li zraka siječe poligon ili ne.

Zraka_presijeca_nešto_u_stablu(Čvor, Zraka) – Vraća da li zraka presijeca nešto u podstablu čvora ili ne.

Presijeca_sferu(Sfera, Zraka) – Vraća da li zraka presijeca (ima interesa) sferu ili ne.

Kreiraj_zraku(Tačka1, Tačka2) – Vraća zraku između dvije tačke.

Zraka_presijeca_nešto_u_stablu je najzanimljivija funkcija od ovih iznad jer pokazuje neke prednosti sa BSP stablima i kako BSP stabla mogu biti korištena za optimizovanje uobičajenog praćenja zrakom. Ovo je rekurzivna funkcija koja se prvo primjenjuje na korjeni čvor stabla. Algoritam je formulisan na sljedeći način:

Ulaz. Čvor – Čvor kroz koji će se pratiti. Zraka – Zraka za test presjeka. Izlaz. Da li zraka presijeca nešto ili ne.

Page 59: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

57

Efekat. Provjerava da li zraka presijeca nešto u ovom čvoru ili ijedan od čvorovih podstabala.

Zraka_presijeca_nešto_u_stablu(Čvor, Zraka) 1. za svaki poligon P u Čvoru 2. Poligon_je_pogođen(P, Zraka) 3. početnaStrana ← Klasifikuj_tačke(Zraka.PočetnaTačka, Čvor.Djelitelj) 4. krajnjaStrana ← Klasifikuj_tačke(Čvor.KrajnjaTačka, Čvor.Djelitelj) //Ako zraka pokriva ravan podjele ovog čvora ili ako je zraka koincidentna sa ravni, //pošalji dolje ka oba djeteta. 5. ako((početnaStrana == koincidentna i krajnjaStrana == koincidentna) ili početnaStrana != krajnjaStrana i početnaStrana != koincidentna i krajnjaStrana != koincidentna) 6. ako(Zraka_presijeca_nešto_u_stablu(Čvor.LijevoDijete, Zraka)) 7. vrati tačno 8. ako(Zraka_presijeca_nešto_u_stablu(Čvor.DesnoDijete, Zraka)) 9. vrati tačno //Ako je zraka samo sa pozitivne strane ravni podjele pošalji zraku dolje u desno dijete. //Ili u ako izrazu je zato što jedna od tačaka može biti koincidentna sa ravni. 10. ako(početnaStrana == ispred ili krajnjaStrana == ispred) 11. ako(Zraka_presijeca_nešto_u_stablu(Čvor.DesnoDijete, Zraka)) 12. vrati tačno //Ako je zraka samo sa pozitivne strane ravni podjele pošalji zraku dolje u desno dijete. //Ili u ako izrazu je zato što jedna od tačaka može biti koincidentna sa ravni. 13. ako(početnaStrana == iza ili krajnjaStrana == iza) 14. ako(Zraka_presijeca_nešto_u_stablu(Čvor.LijevoDijete, Zraka)) 15. vrati tačno //Nije bilo presjeka nigdje, proslijedi to iznad. 16. vrati netačno

Sada ćemo analizirati kompleksnost ove pomoćne funkcije. Najgori slučaj je taj da zraka prođe kroz baš svaki čvor u stablu u kojem slučaj treba biti testiran u odnosu na svaki poligon. To nam daje red ( ), gdje je broj poligona u stablu. Tipično, zraka će proći kroz svaki čvor u stablu, što reducira broj poligona za provjeru. Najbolji slučaj je ako je zraka ograničena na samo jedan čvor, u čijem slučaju kompleksnost funkcije će biti negdje oko (lg ), zavisno od strukture stabla.

Slijedi algoritam za funkciju Provjeri_vidljivost.

Provjeri_vidljivost Ulaz. Čvor1 – Početni čvor. Čvor2 – Krajnji čvor. Izlaz. Da li je Čvor2 vidljiv iz čvora 1 ili ne.

Page 60: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

58

Efekat. Prati izmeđtu tačaka uzoraka u oba lista da vidi da li postoji vidljivost između dva čvora.

Provjeri_vidljivost(Čvor1, Čvor2) 1. Vidljiv ← netačno 2. za svaku tačku uzorak P1 u Čvor1 3. za svaku tačku ozorak P2 u Čvor2 4. Zraka ← Kreiraj_zraku(P1, P2) 5. ako(ne Zraka_presijeca_nešto_u_stablu(Čvor1.Stablo.KorjeniČvor, Zraka) 6. Vidljiv ← tačno 7. vrati Vidljiv

Funkcija Provjeri_vidljivost je računski ekstremno skupa. Kada pratimo između dva lista između kojih nema vidljivosti, mora se uraditi praćenje iz svake tačke uzorka u čvoru 1 ka svakoj tački uzorka u čvoru 2. U najgorem slučaju, svako od ovih praćenja mora biti provjereno naspram svakog poligona u stablu, stoga će kompleksnost funkcije biti ( 1 2 ), gdje je 1 broj tačaka uzoraka u čvoru 1, 2 je broj tačaka uzoraka u čvoru 2 i je broj poligona u stablu. Generalno ponašanje je mnogo bolje, bliže ka ( 1 2lg ) zbog redukcije poligona koja je potrebna za provjeru naspram u praćenju zrakom kroz stablo.

Konačno, možemo dati kod i za funkciju Prati_vidljivost:

Prati_vidljivost Ulaz. Stablo – BSP stablo za praćenje vidjivosti u njemu. Izlaz. Ništa. Efekat.Za svaki list u stablu prati vidljivost ka listovim povezanim čvorovima. Svaki čvor za koji se utvrdi da je vidljiv biva dodan u PVS tog čvora. Kada je pronađen vidljiv list mi moramo pratiti vidljivost ka vidiljivim čvorovima povezanih čvorova.

Prati_vidljivost(Stablo) 1. za(svaki list L u Stabo) 2. za(svaki list C koji je povezan sa L) 3. Dodaj C u L-ov PVS 4. za(svaki list L1 u Stablo) 5. dok(postoji list L2 u L-ovom PVS-u koji je povezan s čvorovima koji još nisu bili provjereni za vidljivost) 6. za(svaki list C koji je povezan sa L2) 7. ako(C nije u L1-ovom PVS-u već i Provjeri_vidljivost(L1, C) 8. Dodaj C u L1-ov PVS 9. Dodaj L1 u C-ov PVS

Page 61: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

59

Preostaje da analiziramo kompleksnost i ove funkcije. Ako ne bismo iskoristili prednost optimizacije koju daju povezani listovi, morali bismo pratiti vidljivost između svakog lista, pa bi kompleksnost bila ( ), gdje je broj listva u stablu. Veoma je teško dati aproksimaciju koliko mnogo koju strategija ubrazava proces, jer je to veoma ovisno o tome kako je nivo konstruisan. U nivou gdje je svaki list vidljiv iz svakog drugog lista neće se optimizovati ništa, dok će se nivo gdje su samo jedan ili dva list vidljivi iz svakog drugog lista optimizovati jako dobro, skoro do ( ). Struktura koja je generisana će sada odbaciti veliku količinu poligona u svakom okviru ("frame"-u) u dobroj mapi. Dobra mapa se kreira razmatrajući aspekt vidljivosti, što znači da će se ubaciti objekti koji zaklanjaju pogled, kao što su zidovi da bi prepriječili pogled. Ako mapa sadrži velike sobe sa mnogo detalja, naša mašina nema ništa što može uraditi po pitanju uklanjanja poligona. U ovim lošim slučajevima postoji druga tehnika koja može biti korištena za uklanjanje poligona; ta tehnika se naziva nivo detalja (LOD5 – level of detail).

5 Opis u rječniku rada

Page 62: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

60

8.Radiozitet

8.1 Pozadina problema

Originalna ideja za radiozitet je formulisana od strane grupe pisaca, imena Goral, Torrance, Battaile i Greenberg.6 Oni su predložili radiozitet kao simuliranje prenosa energije između difuznih površina. Ovo su površine koje odbijaju svjetlost u svim smjerovima jednako, suprotno sjajnim površinama. Rezultat takve simulacije će dati rezultat nezavisan od tačke gledišta, što znači da će osvjetljenje na površini izgledati isto iz svih uglova gledanja. Ovo je veoma dobro prilagođeno 3D igrama jer je izračunavanja potrebno uraditi samo jednom, tokom prerenederovanja mape.

Mi ćemo dati kratki pregled kako algoritam radioziteta radi i fokusirati se na to kako se BSP stabla mogu koristiti za optimizovanje izračunavanja.

Algoritam radioziteta je dizajniran tako da će osvjetljenje scene biti glatko i prirodno. Ako budemo koristili jednostavni model osvjetljenja gdje svako svjetlo šalje zrake u svijet i osvjetljava ga bez daljeg odbijanja svjetla, sjene će biti veoma oštre i stvari će izgledati veoma neprirodno. Da bi se koristio algoritam radioziteta, svijet se mora podijeliti u djeliće, gdje je svaki djelić mali dio svijeta. Svaki od ovih djelića ima početni energetski nivo, koji je normalno nula osim ako se radi o izvoru emitovanja kao što su sijalice, užareni zidovi ili nešto slično tome.

Postoji nekoliko načina rasprostiranja svjetlosti kroz svijet. Mi smo izabrali da koristimo tzv. iterativni radiozitet. Ovo znači da počinjemo sa slanjem energije vani iz djelića sa najvišim nivoom neposlane energije u sceni, nakon čega se ta neposlana energija djelićapostavlja na nulu. Ovaj proces se ponavlja sve dok postoji djelić čija energija je iznad određenog praga vrijednosti.

Kada šaljemo energiju vani iz jednog djelića (j) ka drugom (i) koristi se sljedeća formula: = + ∗ ∗ /

Pri tome je:

= nivo nivoa energije djelića

= nivo nivoa energije djelića

= faktor oblika između djelića i

6[Goral, Cindy M., Torrance, Kenneth E., Greenberg, Donald P., Battaile , Bennett. Modelling the interaction of light

betweendiffuse surfaces]

Page 63: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

61

= površina djelića

= površina djelića

U formuli iznad faktor oblika zahtijeva dalji opis. On se može izraziti u obliku

= ∗ ∗

gdje je

= faktor oblika između djelića i

= udaljenost između dva djelića , = ugao između normale djelića i zrake između djelića

= vidljivost između dva djelića. Ako je samo jedna zraka praćena između dva

djelića, ovo je 0 ili 1. Tipično se koristi više od jedne zrake radi boljih aproksimacija, jer djelići nisu tačke, već površi.

Kao što vidimo iznad, ekstremno je skupo raditi izračunavanja radioziteta na sceni. Ova funkcija je reda ( ) gdje je broj djelića na sceni. Kako ćemo za svaki djelić poslati po jednu zraku najmanje ka svakom drugom djeliću na sceni, to znači da se praćenje kroz scenu potencijalno okreće ka svakom poligonu (zasigurno se može pretpostaviti da je broj djelića u sceni veći od broja poligona). (vidljivost) dio faktora oblika je najskuplji dio za izračunati i to je mjesto gdje možemo iskoristiti snagu BSP stabala.

8.2 Radiozitet u BSP stablima

Prije nego se može izračunati stvarno osvjetljenje, površi se moraju podijeliti u djeliće. Jedna ideja je da su djelići određene veličine od samog početka i kada se energija izračuna u djeliću, ona sedijeli u manje djeliće ako energija previše varira preko djelića. U ovom radu,nije korištena ova ideja, nego je iskorišten pristup koji je bliže vezan sa osnovnom temom rada, odnosno za optimizovanje izračunavanja iskorištena su BSP stabla.

Kreiranje djelića se pokazuje kao izazovan problem, ali kako taj problem nije povezan sa BSP stablima niti može izvući neku korist od BSP stabala,u njega se ovdje nećemo upuštati.

U izvornoj ideji radioziteta, svaki izvor svjetla u sceni bi se trebao posmatrati kao jedan ili više djelića. Mi ćemo to uraditi na drugačiji način. Svaki izvor svjetla se pohranjuje u BSP stablu u listu u kojem je lociran. Prva stvar koja se dešava je da svako svjetlo šalje vani energiju ka svim djelićima. Kada se ovo uradi, izračunavanja radioziteta se mogu

Page 64: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

62

završiti i scena će izgledati prilično dobro. Da bismo učinili da ovo izgleda znatno bolje, koristili smo tehniku koja se zove progresivna dorada7, malo modificiranu. U svakoj iteraciji dorade, djelić sa najvećom energijom u svakom od listova će odbijati svoju energiju ka svim drugim djelićima. Ovo će rezultirati širenjem energije sa dobro osvijetljenih djelića ka djelićima u sjenama. Kao u stvarnom životu, ništa nije skroz crno, sve odbija svjetlo, manje ili više.

Zbog skupe prirode izračunavanja radioziteta, moramo uraditi neke optimizacije. Korištenje PVS-a koji je napravljen tokom renderovanja BSP stabla može uštediti mnoga nepotrebna izračunavanja kod biranja koji djelići trebaju primiti energiju. Praćenje zrake je primijenjeno na isti način kao i kad je PVS računat.

Predložena verzija algoritma za distribuciju energije kroz scenu je sljedeća:

Radiozitet Ulaz. Stablo – stablo u kojem će biti primijenjen radiozitet Izlaz. Nema Efekat.Šalje energiju između djelića na sceni.

Radiozitet(Stablo) 1 za(svaki list L u Stablo) 2 za(svako svjetlo S u L) 3 za(svaki list V koji je u L-ovom PVS-u) 4 Šalji S-ovu energiju ka djelićima u V //U ovoj fazi biramo da ovo uradimo tako da dizajner nivoa može provjeriti kako //izgleda scena u bilo kojoj tački i prekinuti slanje energije kada odredi da izgleda //dovoljno lijepo. 5 dok(ne izgleda dovoljno lijepo) 6 za(svaki list L u Stablo) 7 za(svaki list V koji je u L-vom PVS-u) 8 Šalji energiju iz djelića sa najviše neposlane energije u L ka svim djelićima u V.

Ovafunkcija je veoma zahtjevna po pitanju troška izračunavanja. Najgori slučaj je gdje se svaka zraka mora provjeritinaspram svakog poligona u sceni, što je reda ( ) gdje je broj djelićau stablu. Na sreću, optimizacije koje smo uradili reducirat će trošak, ali skoro da je nemoguće reći koliko s obzirom da to mnogo zavisi od strukture stabla.

Ovo daje veoma brzo osvjetljavanje scene kada se iskoriste prednosti BSP stabala. Posebno, posao rađen tokom praćenja zrake može biti skraćen značajno. Dizajner mape može odlučiti kada je renderovanje mape gotovo prekidanjem petlje bilo kada, ako je rezultat dovoljno dobar. Jednostavno je prerednerovati mapu više puta kako bismo vidjeli kako će približno izgledati, umjesto renderovanja do kraja kod svake promjene.

7[Nuydens, Tom. 3D Engine Column, Delphi3D]

Page 65: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

63

9. Pravci za dalji rad

Postoji veliki broj stvari koje se mogu uraditi radi unaprijeđivanja stvari predstavljenih u ovom radu. Neki primjeri unaprijeđuju algoritme detekcije sudara, vrše bolje uklanjanje nevidljivih objekata i kreiranje portal mašine sa statičnim PVS-om. Neke druge stvari nisu ni spomenute u ovom radu kao što je predikcija i koja stoga nije ni implementirana.

Objekti su često mnogo kompleksniji od geometrije svijeta, npr. sastoje se od više poligona. Stoga, bilo bi dobro ukloniti što je više moguće nevidljivih objekata. U rješenju predloženom u ovom radu, svi objekti koji su u vidljivom listu se iscrtavaju. Ako se može razviti brzi algoritam da ukloni nevidljive objekte, to bi unaprijedilo performanse.Veoma je teško kreirati algoritam koji uklanja objekte, a koji je jeftiniji od njiihovog iscrtavanja na ekranu.

Ako se kreira portal mašina sa statičnim PVS-om, dobijaju se sve beneficije portal mašine kao što su ogledala i lagano uklanjanje objekata, a izvlači se korist jačine statičnog PVS-a, što znači da je jeftino naći koje sektore crtati i jeftino je osvjetljavanje svijeta.

Predikcija je važna stvar u igrama sa više igrača. Cilj je da klijenti imaju što je moguće tačniju sliku na ekranu, koja se ne razlikuje mnogo od servera.

Page 66: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

64

Zaključak

BSP stabla su veoma korisne strukture koje imaju mnogo prednosti za potrebe kreiranja3D mašina. Mada je njihova izvorna svrha korištenja (sortiranje poligona da bi ih bilo moguće iscrtati u pravilnom poretku na ekranu) donekle zastarjela, mnoge oblasti korištenja ostaju, kao što su brza detekcija sudara, uklanjanje skrivenih površina i optimizacije mreže. Još uvijek ima prostora za poboljšanja. Slijede neke prednosti i nedostaci BSP stabala.

Prednosti:

Brza detekcija sudara, veliki dio mape može se lako odbaciti jer je jeftino pozicionirati objekat u list. Kada se to uradi, samo poligoni u listu trebaju da se provjere za sudare.

sa PVSom je lako ukloniti nevidljive dijelove mape.

Mogu biti korištena za optimizovanje mreža.

Mogu biti korištena za izračunavanje osvijetljenosti mape.

Nedostaci:

BSP stabla su pogodna samo za statične svjetove. Moguće je dodati ili ukloniti poligone u svijet, ali da bismo uradili ovo potrebno je opet izračunati dio BSP stabla. Korištenje lokalnih BSP stabala, koja su ispresijecana sa glavnim BSP stablom, je također moguća optimizaciona tehnika, ali ostaje činjenica da su BSP stabla bolje prilagođena za statične svjetove.

Da bismo najefikasnije iskoristili BSP stablo potrebno je još dodati PSV (Potentially Visible Set – Skup moguće vidljivosti) ili neke druge slične tehnike. Ako to ne uradimo vjerovatno ćemo završiti sa razmatranjem previše poligona (posebno sa velikim svjetovima).

BSP stablo tehnika je poprilično komplicirana.

BSP stabla će sigurno postojati u industriji igara sljedećih pet do deset godina, ali za nadati se je da će neko pronaći neke pametnije, više dinamične strukture sa istim prednostima koje imaju BSP stabla. Jedan od najvećih problema sa BSP stablima je njihova kompleksnost. Postoji mnogo dijelova potrebnih da bi sve radilo kako treba pa idealno rješenje mora biti jednostavnije i intuitivnije.

Alternativa BSP stablima bi mogla biti neka vrsta grafa scene, gdje je sve objekat koji se dobija iz istog roditelja. Svaki objekat zna u kojem objektu je lociran. Svi objekti znaju kako bi trebali biti prikazani, kako sudari uzimaju mjesto unutar njih, koje susjede imaju, gdje se može vidjeti izvan njih. Ovo bi učinilo jednostavnijim ubacivanje i

Page 67: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

65

izbacivanje dijelova svijeta bez reredenderovanja cijelog svijeta. Također bi to bio mnogo elegantniji način rješavanja složenosti koja nastaje kod BSP stabala jer nijedan tip objekta ne treba da zna o bilo kojem drugom tipu objekta. Svi primjenjuju isto sučelje i jedina komunikacija između objekata bi išla kroz to sučelje.

Page 68: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

66

Literatura

[1] M. de Berg, O. Cheong, M. van Kreveld,Computational Geometry, Algorithms and Applications (3rd edition),Springer, 2008.

[2] R. E. Samuel, Binary Partioning Trees and Polygon Removal in Real Time 3D Rendering, (2001), 61-62.

[3] E. Saykol, B. Kirimer, Progressive Refinement of Radiosity

[4] S. Teller, Application Challenges to Computational Geometry

[5] M. Firebaugh, Three-Dimensional Graphics – Realistic Rendering

[6] P. Nettle,Radiosity in English

[7] T. Nuydens, 3D Engine Column, Delphi3D

[8] L. Ammeraal, K. Zhang, Computer Graphics for Java Programmers (2nd edition), John Wiley, 2007.

[9] H. Fuchs, Z. M. Kedem, B. Naylor, On visible surface generation by a priori tree structures, Computer Graphics, 14:124–133, 1980. Proc. SIGGRAPH ’80.

[10] N. Chin, S. Feiner, Near real time shadow generation using BSP trees, in Proc. SIGGRAPH ’89, pp 99–106, 1989.

[11] B. Naylor, J. A. Amanatides, W. Thibault, Merging BSP trees yields polyhedral set operations, Computer Graphics, 24:115–124, August 1990. Proc. SIGGRAPH ’90.

[12] W. C. Thibault, B. F. Naylor, Set operations on polyhedra using binary space partitioning trees, Computer Graphics, 21:153–162, 1987. Proc. SIGGRAPH ’87.

[13] C. Ballieux, Motion planning using binary space partitions, Technical Report Inf/src/93-25, Utrecht University, 1993.

[14] M. de Berg, M. Streppel, Approximate range searching using binary space partitions, Computational Geometry, Theory and Applications, 33:139–151, 2006.

[15] J. Nievergelt, P. Widmayer, Spatial data structures: Concepts and design choices, M. van Kreveld, J. Nievergelt, T. Roos, and P. Widmayer, editors, Algorithmic Foundations of Geographic Information Systems, Lecture Notes in Computer Science, vol. 1340. Springer-Verlag, 1997.

[16] M. S. Paterson, F. F. Yao, Efficient binary space partitions for hidden-surface removal and solid modeling, Discrete Computational Geometry, 5:485–503, 1990.

Page 69: NAPREDNI ALGORITMI U VIZUALIZACIJI  3D OBJEKATA ZASNOVANI NA BSP  STABLIMA

67

[17] C. T´oth, A note on binary plane partitions, Discrete Computational Geometry, 30:3–16, 2003.

[18] C. T´oth, Binary space partitions: Recent developments, In J. E. Goodman, J. Pach, and E. Welzl, editors, Combinatorial and Computational Geometry. 374 MSRI Publications, vol. 52, pp. 529–556, Cambridge University Press, 2005.

[19] C. T´oth, Binary space partition for line segments with a limited number of directions, SIAM J. Comput., 32:307–325, 2003.

[20] F. d’Amore, P. G. Franciosa, On the optimal binary plane partition for sets of isothetic rectangles, Information Processing Letters, 44:255–259, 1992.

[21] M. de Berg, M. de Groot, M. Overmars, New results on binary space partitions in the plane, Computational Geometry Theory and Applications, 8:317–333, 1997.

[22] M. Katz, M. Overmars, M. Sharir, Efficient hidden surface removal for objects with small union size, Computational Geometry Theory and Applications, 2:223–234, 1992.

[23] M. de Berg, Linear size binary space partitions for uncluttered scenes, Algorithmica, 28:353–366, 2000.

[24] M. de Berg, M. Streppel, Approximate range searching using binary space partitions, Computational Geometry Theory and Applications, 33:139–151, 2006.