Backface Culling: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Siehe auch)
()
Zeile 30: Zeile 30:
 
   
 
   
 
<br>
 
<br>
 
+
== Mathematischer Hintergrund ==
== Siehe auch ==
 
[[glFrontFace]], [[glCullFace]]
 
 
 
[[Frustum Culling]]
 
 
 
 
Mathematisch kann man Backface Culling wie folgt betrachten: <br>
 
Mathematisch kann man Backface Culling wie folgt betrachten: <br>
Es werden die Flächen entfernt, dessen Normalenvektoren vom Betrachter wegzeigen. <br>
+
Es werden die Flächen entfernt, deren Normalenvektoren vom Betrachter weg zeigen. <br>
 
Dazu wird das Skalarprodukt zwischen Oberflächennormale und Verbindungsvektor von irgendeinem Punkt der Fläche zum Projektionszentum (Pcop;cop: center of projection) bestimmt. <br> <br>
 
Dazu wird das Skalarprodukt zwischen Oberflächennormale und Verbindungsvektor von irgendeinem Punkt der Fläche zum Projektionszentum (Pcop;cop: center of projection) bestimmt. <br> <br>
  
Zeile 50: Zeile 45:
 
Probleme treten bei komplexen Objekten und Objekten, die sich verdecken auf. <br>
 
Probleme treten bei komplexen Objekten und Objekten, die sich verdecken auf. <br>
 
Backface Culling ist jedoch sicherlich als Vorbearbeitungschritt geegnet. <br>
 
Backface Culling ist jedoch sicherlich als Vorbearbeitungschritt geegnet. <br>
 +
 +
 +
== Siehe auch ==
 +
[[glFrontFace]], [[glCullFace]]
 +
 +
[[Frustum Culling]]

Version vom 20. Juni 2005, 10:51 Uhr

Backface Culling


Was ist das?

Backface Culling ist eine Technik mit der man gezielt Polygone bzw. deren Seiten vom Zeichnen ausschließt.


Vorbetrachtung

Wie man sich leicht vorstellen kann, ist die Geschwindigkeit beim Rendern zu einem großen Teil von der Anzahl der zu Zeichnenden Flächen ab.
Je mehr Flächen gezeichnet werden müssen desto länger dauert der Zeichenvorgang.
Es ist deshalb naheliegend einfach den Zeichenvorgang dadurch zu beschleunigen, dass man Flächen, die eh keiner sieht, nicht zeichnet.


Wie geh ich vor?

  1. Backfaceculling einschalten (glEnable(GL_CULL_FACE))
  2. zeichnen der Polygone

Durch diese Einstellungen werden nun alle Seiten deren Eckpunkte im Uhrzeigersinn übergeben wurden nicht(!) gezeichnet und alle Seiten deren Eckpunkte entgegen dem Uhrzeigersinn übergeben wurden werden gezeichnet.

Das wars!? - Eigentlich schon.
Allerdings gibt es da noch ein paar Funktionen die ihr im Zusammenhang mit Backfaceculling anschauen solltet.


Wieso wird gerade die Seite entfernt?

Ganz einfach. Wie der Name schon sagt werden die Rückseiten der Polygone nicht gezeichnet. Standardmäßig gehören die Polygone zur Rückseite, deren Eckpunkte in Uhrzeigerrichtung übergeben wurden. Das kann man natürlich auch ändern. Und zwar mit glFrontFace.


Mathematischer Hintergrund

Mathematisch kann man Backface Culling wie folgt betrachten:
Es werden die Flächen entfernt, deren Normalenvektoren vom Betrachter weg zeigen.
Dazu wird das Skalarprodukt zwischen Oberflächennormale und Verbindungsvektor von irgendeinem Punkt der Fläche zum Projektionszentum (Pcop;cop: center of projection) bestimmt.

N*Pcop=|N|*|Pcop|*cos alpha
Fallunterscheidung:
Wenn cos alpha>=0 =>Fläche ist sichtbar und wird gezeichnet
Wenn cos alpha<0 =>Fläche wird nicht gezeichnet

Die Länge von N,Pcop wird mithilfe einer Normierung auf 1 gesetzt.
=> N*Pcop=cos alpha

Probleme treten bei komplexen Objekten und Objekten, die sich verdecken auf.
Backface Culling ist jedoch sicherlich als Vorbearbeitungschritt geegnet.


Siehe auch

glFrontFace, glCullFace

Frustum Culling