raytracing beschleunigungsverfahren - uni-frankfurt.de...raytracing nur mit den objekten, die im...

Post on 05-Mar-2021

10 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Raytracing

Beschleunigungsverfahren

Naives/brute forceRaytracing

Universität Frankfurt

Komplexität:

mxn Auflösung des Bildesp Anzahl der Primitives

O (mxnxp)

nur für die Primärstrahlen

RaytracingBeschleunigungsverfahren

Universität Frankfurt

• Bild-Kohärenz (image coherence)

•Objekt-Kohärenz (object coherence)

•Strahlkohärenz (ray coherence)

Bildkohärenznach Bronsvoort et al. I

Universität Frankfurt

• Aufteilung des Bildes in Quadrate mit Kantenlänge 2n

• Exakte Berechnung des Pixels in linken unteren Ecke

• Zuweisung dieses Farbwert an alle Pixel des Quadrats

• Aufteilung in 4 Subquadrate

• Berechnung der Pixelwerte nach angegebenem Verfahren

Bildkohärenznach Bronsvoort et al. II

Universität Frankfurt

AB

A

B

B

AC

C

C

x3 x2

x1 x4

Bildkohärenznach Bronsvoort et al. III

Universität Frankfurt

- die Werte von X1 bleiben unverändert,

- falls die Werte eines der mit A bezeichneten Quadrate um mehr als eineneinstellbaren Schwellwert von den Werten von X1 abweicht, wird die linkeuntere Ecke von X2 neu berechnet und dieser Wert allen Pixeln von X2 zugewiesen,

- falls die Werte eines der mit B bezeichneten Quadrate um mehr als eineneinstellbaren Schwellwert von den Werten von X1 abweicht, wird die linke untereEcke von X3 neu berechnet und dieser Wert allen Pixeln von X3 zugewiesen,

- falls die Werte eines der mit C bezeichneten Quadrate um mehr als eineneinstellbaren Schwellwert von den Werten von X1 abweicht, wird die linke untereEcke von X4 neu berechnet und dieser Wert allen Pixeln von X4 zugewiesen.

Bildkohärenznach Bronsvoort et al. IV

Universität Frankfurt

- Verfahren schreitet von links nach rechts und von unten nach oben fort.

- Verfahren endet, wenn vorgegebene Pixelquadratgröße erreicht ist.

- Bei Anfangsgröße von 8x8 Pixeln ist eine Einsparung von bis zu 80 %erreichbar.

- Feine Details werden ignoriert.

- Wegen Bildqualität, Einsatz nur im Previewing angebracht.

Bildkohärenzitem buffer I

Universität Frankfurt

1.) Szene wird in die Rendering-Pipeline des Polygon-Renderings eingespeist.Berechnung nur bis zu einer “groben Auflösung”.

2.) Aufstellung der Liste (item buffer) von Objekten, die im “Pixel” sichtbar sind.

3.) Raytracing nur mit den Objekten, die im item buffer aufgezählt sind.

Bildkohärenzitem buffer II

Universität Frankfurt

• polygon-basiertes Verfahren.

• in der Mehrzahl der Fälle besteht der item buffer nur aus sehr wenigenObjekten.

• Beschleunigung abhängig vom Verhältnis Primär- zu Sekundärstrahlen.

• Es wird von Beschleunigungen von 10% bis zu 30% berichtet [WEG84].

Objekt-Kohärenz

Universität Frankfurt

Verfahren:

• Hüll-Körper (bounding volumes) und Hüll-Körper-Hierarchien

• Unterteilung des Objektraums (spatial subdivision)

Hüllkörper I

Universität Frankfurt

Älteste Beschleunigungsmethode

Idee:

• Schneide Strahl mit Hülle.• Wenn Test positiv, schneide gegen komplexen Inhalt.

Hüllkörper II

Universität Frankfurt

Forderung:

• Hüllkörper muss Objekt vollständig umschließen.

• Hüllkörper muss Objekt möglichst eng umschließen.

• Schnittberechnung für die Hülle muss weniger aufwendig sein als fürihren Inhalt.

Einfache Hüllkörper

Universität Frankfurt

Komplexe Hüllkörper

Universität Frankfurt

HüllkörperKostenabschätzung

Universität Frankfurt

T gesamter Aufwand für Schnittberechnung

B Berechnungsaufwand für Schnitt mit Hüllkörper

I Berechnungsaufwand Schnitt gegen Inneres

b Anzahl Strahlen für Test mit Hüllkörper

i Anzahl Strahlen, die gegen Inneres getestet werden (i≤b)

T=b*B + i*I

Hüllkörper-Hierarchien I

Universität Frankfurt

Idee:

- Fasse zusammliegende Körper bzw. ihre Hüllenzusammen und umschließe sie mit einem Hüllkörper.

- Fasse díe resultierenden Hüllkörper wieder zusammen.

- Baumstruktur

Hüllkörper-Hierarchien II

Universität Frankfurt

Forderungen:

- Nur Objekte, die nah beieinanderliegen, sollen zusammengefaßt werden.

- Die Oberfläche der Hülle eines jeden Knotens der Hierarchie soll minimal sein. Denn die Oberfläche eines Hüllkörpers ist ein Maß für Wahrscheinlichkeit, daß ervon einem Strahl getroffen wird.

- Die Summe der Oberflächen aller Knoten soll minimal sein.

- Je näher die Knoten an der Wurzel liegen, um so sorgfältiger müssen siekonstruiert werden. Wird ein Knoten, der weit oben in der Hierarchie liegt, nichtvom Strahl getroffen, kann ein tiefer Teilbaum vom weiteren Test ausgeschlossenwerden.

- Die Zeit, die zum Aufbau der Hierarchie benötigt, muß geringer sein, als die Zeit, die man beim späteren Rendering-Prozeß wieder einspart.

Hüllkörper-Hierarchien III

Universität Frankfurt

Wahl der Hierarchie:

• Modellierungs-Hierarchie

• CSG-Baum

• Median-Cut-Verfahren

Priority-Queue I

Universität Frankfurt

procedure p_queue_traversal(Strahl, P-Queue)begin

while heap nicht leer do beginEntnimm Kandidaten aus der P-Queue

if Kandidat ein Primitive-Objekt then break;

else for jeden Sohn des Kandidaten do begin

Berechne Schnittpunkt mit Strahl;Ordne Objekt gemäß Distanz vom Strahlursprungzum Schnittpunkt in die P-Queue ein;

end for;end while;

end

Priority-Queue II

Universität Frankfurt

Achtung:

Priority-Queue III Ergebnisse

Universität Frankfurt

Raumteilungs-Verfahren

Universität Frankfurt

Idee der Hüllkörper-Hierarchie:

• schnelle Aussortierung aller Objekte, die nicht getroffenwerden.

Idee der Raum-Teilungsverfahren:

• Berechne Schnittpunkt nur noch mit nächstem Objekt.

• Durchsuche dazu Teilraum, der den Strahl möglichsteng umschließt.

• Zerlege dazu in Raum der Szene in disjunkte Voxel(volume elements).

Nicht-reguläre Raumteilung

Universität Frankfurt

Bearbeitete Voxel

Getestete Objekte

Octree-Verfahren Inach Glassner

Universität Frankfurt

441 42

43 44

45

46

48

1 2

3 4

56

8

Octree-Verfahren II

Universität Frankfurt

Information im Knoten:

• Ausmaß des Quader

• Koordinaten des Mittelpunktes

• Flag, ob Knoten Blatt ist.

• Zeiger auf 1. Kind (Kinder werden in verketteter Liste abgespeichert)oder auf Liste von Objekten.

Speicherung der Knoten mittels Hash-Funktion:

h=(Knoten-Nummer div 10) mod Hash-Tabellen-Länge

Octree-Verfahren III

Universität Frankfurt

P P`

P`

P P

P`

Octree-Verfahren IV

Universität Frankfurt

procedure findnode ( x, y, z)begin

node := 1;while node_subdivided do

if x > node_center_x thenif y > node_center_y then

if z > node_center_z thennode := node * 10 + 6;

elsenode := node * 10 + 2;

elseif z > node_center_z then

node := node * 10 + 8;else

node := node * 10 + 4;else

if y > node_center_y thenif z > node_center_z then

node := node * 10 + 5;else

node := node * 10 + 1;else

if z > node_center_z thennode := node * 10 + 7;

elsenode := node * 10 + 3;

end whileend

Octree-Verfahren VErgebnis

Universität Frankfurt

1. Zeit zur Generierung der Octree-Struktur ist gering im Vergleich zur Renderingzeit.

2. Beschleunigungsfaktoren zwischen 4 bis 30 im Vergleich zur brute-force-Methode

Reguläre Raumaufteilung

Universität Frankfurt

Bearbeitete Voxel

Getestete Objekte

Reguläre Raumaufteilungnach Fujimoto et al.

Universität Frankfurt

1. Die Aufteilung der Voxel ist völlig unabhängig von der Struktur der Szene.

2. Die Voxel, die ein Strahl durchläuft können durch einfache, inkrementelle Verfahren sehr effizient aufgezählt werden.

Voxel-Traversierung I

Universität Frankfurt

Voxel (i,j)

tx i

txi+1 (i,j)

= te

Voxel (i+1,j)

(i+1,j)

tyj

ty j+1

= ta

= te(i,j)

Voxel-Traversierung II

Universität Frankfurt

txi+1 - txi = ∆tx = const.tyj+1 - tyj = ∆ty = const.tzk+1 - tzk = ∆tz = const.

[te, ta] = [txi, txi + ∆ tx] ∩[tyj, tyj + ∆ ty] ∩ [tzk, tzk + ∆ tz]

te = max (txi, tyj, tzk) < min (txi + ∆ tx, tyj + ∆ ty, tzk + ∆ tz) = ta

Voxel-Traversierung III

Universität Frankfurt

beginif tx < ty then

if tx < tz thenbegintx := tx + ∆tx;vx := vx + sign (ux);end

elsebegintz := tz + ∆ tz;vz := vz + sign (uz);end

elseif ty < tz then

beginty := ty + ∆ ty;vy := vy + sign (uy);

endelse

begintz := tz + ∆ tz;vz := vz + sign (uz);end

end;

Raumaufteilung2 Caveat

Universität Frankfurt

AB

C

1 2 3 4 5

�Mailbox-Verfahren

Voxel-TraversierungErgebnisse I

Universität Frankfurt

Turm bestehend aus 12 CSG-Primitiven,Well bestehend aus 78 CSG-Primitiven,Pinwheel bestehend aus 26 CSG-Primitiven,64 Türme bestehend aus 768 CSG-Primitiven

126,1597,6565,5651,1534,3326,18<0,0164 Türme

156,9895,6350,0523,098,481,71<0,01Turm

106,6865,6138,1720,388,583,01<0,01Well

37,9124,2812,977,523,261,13<0,01Pinwheel

44,8925,8913,665,831,840,25<0,01Kugel

302520151051

Anzahl der Voxel pro AchseSzene

Initialisierungszeiten (in sec.)

Voxel-TraversierungErgebnisse II

Universität Frankfurt

Turm bestehend aus 12 CSG-Primitiven,Well bestehend aus 78 CSG-Primitiven,Pinwheel bestehend aus 26 CSG-Primitiven,64 Türme bestehend aus 768 CSG-Primitiven

Rendering-Zeiten (in sec.)

418,81435,48462,48516,57600,52908,207200-10800

64 Türme

517,39531,06551,58555,33579,76694,51Turm

515,83497,49495,25548,76587,89712,00Well

391,44385,15378,23373,82376,54430,23Pinwheel

427,56419,11416,08409,96418,60417,85384,17Kugel

302520151051

Anzahl der Voxel pro AchseSzene

Ray Coherence

Universität Frankfurt

Idee:

Benachbarte Strahlen treffen mit großer Wahrscheinlichkeit dieselben Objekte.

Identifiziere die Orte (Objekte), an denen Strahlen ausgesandt werden.

Dann sortiere Kandidaten für den Schnitt mit Bezug auf die auftretenden Strahl-Richtungen.

Direction Cube

Universität Frankfurt

z

y

x

top related