A következő állomás az engine újratervezésében egy új térfelosztó algoritmus megírása. A BVH, amit eddig használtam mindaddig jó, amíg csak statikus adatokról van szó. Az újraépítése sajnos nem elég gyors különösen nagy jelenet esetén hasonlóan az octree-hez.
Lehetne külön fában tárolni a dinamikus elemeket azonban két fára vizsgálni és karbantartani egyszerre sem megoldás.
Utánajárva a lehetőségeknek bukkantam a loose octree-re (magyarul "lazított" oktális fa), amely dinamikus jelenet tárolásához ideális.
Megjegyzés: a PhysX is tud ilyet használni ha belenézünk az SDK-jába:
NX_PRUNING_OCTREE, //!< Using a preallocated loose octree
NX_PRUNING_QUADTREE, //!< Using a preallocated loose quadtree
A neten találtam egy látványos demot (bár ez 2D verzió vagyis a loose quadtree műküdését mutatja be) java-ban, ahol ki lehet próbálni a hagyományos quadtree-t is.
donar.umiacs.umd.edu/quadtree/rectangles/loosequad.html