View Frustum

Dokumentation Das View Frustum beschreibt den sichtbaren Bereich. Es ist quasi das Fenster in den 3D-Raum. Es besteht aus einem Pyramidenstumpf, an dessen (imaginärer) Spitze sich das Auge des Betrachters, bzw. die Kamera befindet. Die vier Seiten grenzen den sichtbaren Raum nach rechts/links, bzw. oben/unten ein. Die Far Plane grenzt gegen den Horizont ab und die Near Plane kann man mit dem Bildschirmfläche gleichsetzen.

Engine

Damit gilt:
  • Alle Objekte im Frustumstumpf sind sichtbar und müssen gerendert werden
  • Alle Objekte ausserhalb des Frustumstumpf können ignoriert werden
  • Die sichtbaren Objekte werden auf die Near Plane projiziert
Objekte die nur teilweise in das Frustum hineinreichen, müssen an den Schnittlinien abgeschnitten werden (Polygonclipping).

Mathematisch wird das Frustum durch sechs Ebenen beschrieben. Diese Ebenen zeigen mit ihren Normalenvektor in das Frustum hinein.

Engine

Wenn jetzt auch nur ein Punkt der Tile im Frustumstumpf liegt, muss es gerendert werden...
...Stimmt. Ist aber leider nur die halbe Wahrzeit. Hier schweigen sich die meisten Bücher über 3D-Programmierung aus. Es gib nämlich den Sonderfall wenn nur eine Polygonkante das Frustum schneidet. Ein weitere Sonderfall: Ist das Polygon größer als die Near Plane können weder Punkte noch Kanten im Frustum liegen. Trotzdem muss es gerendert werden weil seine Fläche das Frustum schneidet.

Die Ausrichtung des Frustums ist fest. Auch wenn die Kamera sich im Raum bewegt. Stattdessen werden alle 3D-Objekte in Relation zum Frustum transformiert. Das scheint auf den ersten Blick unsinnig, sollte doch die Transformation der sechs Frustumsebenen schneller sein als die Transformation von zig-tausenden Objektpolygonen. Stimmt! Aber spätestens bei der Projektion der Objekte auf die Near Plane werden die Schwiergkeiten dann so groß, daß der Performanzgewinn aufgebraucht wird.

Der Abstand zwischen Kamera und Near Plane wird durch den natürlichen Blickwinkel des menschlichen Auges bestimmt. Bei vorgegebenem horizontalem Blickwinkel von 60 Grad und der Breite der Near Plane (Bildschirmausdehnung) von 640 Punkten ergibt sich eine Distanz von ca. 554 Punkten.

Der Abstand Near Plan zur Far Plane ist etwas schwieriger einzustellen. Ist die Distanz zu klein, werden nicht alle Objekte dargestellt. Ist sie zu groß, werden auch weit entfernte Objekte gerendert, die nur als winiger (Pixel-)Fleck am Horizont erkennbar sind. Das macht keinen Sinn und ist auch mit Performanzverlust verbunden.