Frustum culling

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Het frustum is het gezichtsveld van een camera in 3D computer graphics. Alle objecten die in het frustum liggen, zouden op het beeld van de camera komen als ze geprojecteerd werden. Objecten die buiten het frustum liggen, zijn niet te zien vanuit het gezichtsveld van de camera.

Als een object wel in het frustum ligt, betekent dat nog niet dat het object ook werkelijk zichtbaar is, omdat er geen rekening wordt gehouden met elkaar overlappende objecten. Als bijvoorbeeld een object achter een grote muur geplaatst is en men kijkt naar de muur, dan kan het object wel in het frustum liggen, maar omdat de muur er voor staat, zal het object toch niet zichtbaar zijn.

Frustum culling[bewerken]

Bij het renderen van een 3D scène door middel van rasterizen, worden de hoekpunten van een polygoon naar het scherm geprojecteerd en daarna wordt dit polygoon in 2D ingekleurd. Polygonen die buiten het gezichtsveld vallen, worden na het projecteren afgekapt, zodat polygonen, of delen van polygonen die buiten het gezichtsveld vallen, niet getekend hoeven te worden. Een probleem hierbij is dat voordat men weet of een polygoon al dan niet zichtbaar is, het object al volledig getransformeerd en geprojecteerd moet zijn. Voor scènes waar veel objecten buiten het gezichtsveld liggen, kan dit leiden tot onnodig verspilde processortijd, waardoor het renderen langer zal duren, en men dus een lagere framerate krijgt.

Een oplossing hiervoor is frustum culling. Voor frustum culling moet de scène ingedeeld zijn in verschillende objecten van polygonen, waarvan men het bereik weet, bijvoorbeeld door de begrenzende balk of bol van het object van tevoren uit te rekenen. Tijdens het renderen test men dan eerst of dit object in het frustum ligt. Als dit niet zo is weet men gelijk ook zeker dat geen enkel polygoon van dit object in het frustum kan liggen. Als het object wel in het frustum ligt rendert men de polygonen op de gebruikelijke manier. Sommige polygonen zullen nog steeds buiten het frustum liggen, maar het zijn er een stuk minder dan voorheen, dus het renderen zal hierdoor ook sneller gaan.

Frustum culling met boomstructuren[bewerken]

Om het frustum culling nog verder te optimaliseren kan men gebruikmaken van een boomstructuur, zoals een octree, kd-tree of een bsp-tree. Hierbij groepeert men in principe verschillende objecten weer in een groter object om het aantal frustum-object tests te verminderen.

Zie ook[bewerken]