
Game Physics Cookbook
By :

We will implement the acceleration structure of our Scene
as an Octree
. This acceleration structure will look very similar to the BVH of a model. The similarity exists because we implemented the BVH of the model as an Octree as well. There are other structures we could use, but an Octree is very common for general 3D spatial partitioning.
In this section, we are going to create the OctreeNode
support structure. This struct
represents a single node of an Octree. Leaf nodes can be empty, or they may contain a list of models that are contained within the node. Non-leaf nodes contain exactly eight child nodes. We are also going to implement a SplitTree
helper function that will recursively subdivide an octree node.
Follow these steps to implement a simple Octree
:
OctreeNode
structure in Scene.h
:typedef struct OctreeNode { AABB bounds; OctreeNode* children; std::vector<Model*> models; inline OctreeNode() : children...