• Keine Ergebnisse gefunden

Computergraphik I Clipping

N/A
N/A
Protected

Academic year: 2021

Aktie "Computergraphik I Clipping"

Copied!
6
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

C G C C G C

Computergraphik I

Clipping

G. Zachmann

Clausthal University, Germany cg.in.tu-clausthal.de

C G C C G

Ausschnittsbildung (Windowing und Clipping)

C

 Viewport = Ausgabefenster auf dem Bildschirm

 Wird in Bildschirmkoordinaten spezifiziert

 World coordinate window = Fenster in die Szene (meist einfach "Window")

 Wird in Weltkoordinaten spezifiziert

 Transformation zwischen Weltkoordinatensystem und

Bildschirmkoordinatensystem → Window- Viewport-Transformation

 Ohne Clipping würden die einzelnen Viewports sich gegenseitig überschreiben

Viewport Viewport

Viewport Viewport

Bildschirm

-1 -1

1

1 World coord. winow Window-

Viewport- Transormation

(2)

G. Zachmann Computer-Graphik 1 – WS 10/11 Clipping 3

C C

Unterschiede: Culling und Clipping

 Culling = Ausschluss ganzer Objekte (oft über bounding volumes)

 Resultat = Ja / Nein (Entscheidungsproblem)

 Clipping = teilweise sichtbare Objekte (Linien / Polygone) müssen gegen Window / Viewport geclippt werden

 Resultat = maximales Teil-Objekt, das vollständig im Window liegt (Konstruktionsproblem)

Viewport

Viewport Vorher

Nachher

C G C C G C

 Abschneiden der Objekte, die außerhalb des sichtbaren Bereiches liegen (view frustum)

 Frühere Graphik-Hardware führte vollständiges Clipping durch — moderne Hardware "kürzt ab"

 Trotzdem sinnvoll, Clipping-Algos kennenzulernen, da oft

Station in der Graphik-Pipeline

Scan Conversion (Rasterization) Visibility / Display

Illumination (Shading) Viewing Transformation (Perspective / Orthographic)

Clipping Modell Transformation

Projektion (in Screen Space)

(3)

G. Zachmann Computer-Graphik 1 – WS 10/11 Clipping 5

C C

Wann sollte geclippt weden?

 Vor der Kamera-Transformation im 3D Raum

 Benötigt 6 allgemeine Ebenengleichungen

 In homogenen Koordinaten nach der Kamera-Transformation im 4D, bevor durch die Perspektive geteilt wird (Clip space)

 ergibt ungewöhnliche w-Werte

 ist tatsächlich am einfachsten zu implementieren

 Im perspektivisch transformierten 3D- Screen-Space

 Problem: Objekte in der Kameraebene

 Nach der Projektion am Viewport in 2D

 Während der Rasterisierung für jedes Pixel

(1, 1, 1)

(-1, -1, -1)

z x

y

C G C C G

Naives Clipping

C

 Idee:

 Führe Clipping während des Rasterisierens aus

 Teste vor dem tatsächlichen Setzen eines Pixels, ob es innerhalb des Viewports ist

 Vorteil: funktioniert für beliebige Clipping-Windows (auch mit

"Löchern")

 Nachteil: evtl. werden sehr viele Pixel ausgerechnet, die dann letztlich doch nicht gezeichnet werden (im worst- case alle)

(4)

G. Zachmann Computer-Graphik 1 – WS 10/11 Clipping 7

C C

 Perspektivische Projektion: 2 konzeptionelle Schritte

 4x4 Matrix

 Homogenisierung - wird nicht immer benötigt

- moderne Grafikhardware führt die meisten Operationen mit homogenen Koordinaten in 2D aus

X

Z z = d

(xp,yp,zp) (x,y,z)

homogenize

x y 0 (z + d)/ d

=

x y z 1 1

0 0 0

0 1 0 0

0 0 0 1/d

0 0 0 1 x * d / (z + d)

y * d / (z + d) 0 1

=

C G C C G C

homogenize

 

 x · d /z y · d /z d /z

1

 

 =

 

 x y 1 z/d

 

 =

 

1 0 0 0 0 1 0 0 0 0 0 1 0 0 1/d 0

 

 

 x y z 1

 

(5)

G. Zachmann Computer-Graphik 1 – WS 10/11 Clipping 9

C C

Motivation für Clipping vor der Projektion

 Der Fall pz < eyez :

(eyex, eyey, eyez)

image plane z axis -

C G C C G C

 Der Fall pz > eyez :

image plane

(eyex, eyey, eyez) z axis -

(6)

G. Zachmann Computer-Graphik 1 – WS 10/11 Clipping 11

C C

 Der Fall pz = eyez !

image plane (eyex, eyey, eyez)

???

z axis -

C G C C G

Lösung: Full Clipping

C

(eyex, eyey, eyez) z axis

clip geometry to view frustum

Referenzen

ÄHNLICHE DOKUMENTE

Semaphore(Int32 initialCount, int32 MaxCount, String sName) o Benanntes Semaphore. Semaphore(Int32 initialCount, Int32 MaxCount, String, out

• PropertyChanged: Quell-Daten werden geändert, wenn sich Daten im Ziel-Objekt ändern, z. Check-

CHAR System.String GetString() CHAR Reading Example (C#) DATE System.DateTime GetDateTime() DATE Reading Example (C#) DECIMAL System.Decimal GetDecimal()

// hier kann man mehrere Tabellen erhalten, für WPF public DataSet getDBSDataSet(string sSQL, string sTable) {. //FbCommand command = new

CHAR System.String GetString() CHAR Reading Example (C#) DATE System.DateTime GetDateTime() DATE Reading Example (C#) DECIMAL System.Decimal GetDecimal()

§  Kleines Problem des Sutherland-Hodgeman-Algos: falls das ursprüngliche Polygon in mehrere Teile zerfällt beim Clipping, dann entsteht eine unschöne Polygonkante am Rand

§  Clipping = teilweise sichtbare Objekte (Linien / Polygone) müssen gegen Window / Viewport geclippt werden. § Resultat = maximales Teil-Objekt, das vollständig im

  Clipping = teilweise sichtbare Objekte (Linien / Polygone) müssen gegen Window / Viewport geclippt werden.   Resultat = maximales Teil-Objekt, das vollständig im