Voor diegenen die de bounding hierarchy nog niet helemaal doorhebben kan misschien de volgende tekening een verduidelijking zijn. Het principe is eenvoudig, we bouwen rond alle objecten uit onze scene een doos. Die doosjes steken we terug in andere doosjes tot we uiteindelijk bij een doos uitkomen die alle objecten van de scene omvat.
De hierarchy (gewoon een boomstructuur) wordt heel simpel opgebouwd door de objecten alternerend aan de linker- en de rechtertak toe te voegen. Weinig efficïent maar het geeft wel al een geweldige speedup (zie tabel verder). Wat ik nog moet implementeren is het deleten van de met new gealloceerde knopen. Een beetje tricky omdat ik in principe in het midden van de hierarchie een knoop kan deleten waardoor al zijn kinderen voor eeuwig en 3 dagen (of toch tot de volgende reboot) in het geheugen achterblijven. Bovendien moet ik er ook op letten dat ik geen bladeren (de echte objecten) delete.
Ondertussen kan ik renderen aan de volgende snelheden:
figuur | #driehoeken | #seconde |
---|---|---|
kegel | 32 | 1 |
cilinder | 64 | 3 |
bol | 480 | 8 |
torus | 1024 | 17 |
theepot | 4032 | 355 |
konijntje | 5110 | 360 |
Op de grafiek is duidelijk te zien dat de grootste snelheidswinsten te halen zijn bij kleine scenes, waarschijnlijk omdat ik mijn hierarchie opbouw op de meest crappy manier.
Eigenlijk zijn mijn grafieken ook crappy aangezien er een heel gat gaapt tussen 1024 driehoeken en dan 4032. Hierover interpoleren is wel heel scherp afronden.
Geen opmerkingen:
Een reactie posten