WikiDer > Frustum-Kulling

Frustum culling

Es frustum ist der Sichtfeld von a Kamera im 3D-Computergrafik. Alle Objekte im Kegelstumpf würden bei der Projektion auf dem Kamerabild erscheinen. Objekte, die sich außerhalb des Kegelstumpfes befinden, sind aus dem Sichtfeld der Kamera nicht zu sehen.

Wenn sich ein Objekt im Kegelstumpf befindet, bedeutet dies nicht, dass das Objekt tatsächlich sichtbar ist, da überlappende Objekte nicht berücksichtigt werden. Wenn beispielsweise ein Objekt hinter einer großen Wand platziert wird und man auf die Wand schaut, dann kann das Objekt im Stumpf liegen, aber da die Wand davor liegt, ist das Objekt sowieso nicht sichtbar.

Frustum-Kulling

Bei der rendern einer 3D-Szene mittels rastern, werden die Eckpunkte eines Polygons auf den Bildschirm projiziert und dieses Polygon wird dann in 2D eingefärbt. Polygone, die außerhalb des Sichtfelds liegen, werden nach der Projektion abgeschnitten, sodass Polygone oder Teile von Polygonen, die außerhalb des Sichtfelds liegen, nicht gezeichnet werden müssen. Ein Problem dabei ist, dass, bevor man weiß, ob ein Polygon sichtbar ist oder nicht, das Objekt bereits vollständig transformiert und projiziert werden muss. Bei Szenen, in denen viele Objekte nicht sichtbar sind, kann dies zu unnötiger Prozessorzeitverschwendung führen, was zu längeren Renderzeiten und einer niedrigeren Bildrate führt.

Eine Lösung hierfür ist das Frustum-Culling. Für das Frustum-Culling muss die Szene in mehrere Polygon-Objekte aufgeteilt werden, deren Reichweite bekannt ist, indem man beispielsweise den Begrenzungsbalken oder die Kugel des Objekts im Voraus berechnet. Beim Rendern testet man zunächst, ob sich dieses Objekt im Frustum befindet. Ist dies nicht der Fall, weiß man auch sicher, dass kein Polygon dieses Objekts im Kegelstumpf liegen kann. Befindet sich das Objekt im Kegelstumpf, werden die Polygone wie gewohnt gerendert. Einige Polygone befinden sich immer noch außerhalb des Frustums, aber es gibt viel weniger davon als zuvor, sodass auch das Rendern schneller ist.

Frustum Culling mit Baumstrukturen

Um das Frustum-Culling noch weiter zu optimieren, kann man eine Baumstruktur verwenden, wie z Octree, kd-baum oder ein bsp Baum. Grundsätzlich werden verschiedene Objekte zu einem größeren Objekt zusammengefasst, um die Anzahl der Frustum-Objekttests zu reduzieren.

Siehe auch