Skip to main content
GameDev.net gamedev.net

PRO Tired of ads? Read GameDev.net ad-free and help keep the community independent with GameDev Pro — $3/month.

Octreezing the world

Octreezing the world

owl
owl
owl's Blog · · 1 min read
2,512 8
Got it. I made the octree class and I'm able to push the meshes geometry into it. The algorithm for character collision against the world is something like this:

  • Get character's AABB.
  • Set's character's AABB position to current character's position.
  • Add velocity vector to character's AABB position.
  • Pass the character's AABB and an empty std::set to the octree.
  • Collide the character's AABB with the octree nodes, when in a leaf, collide the meshes's AABB there with the character's AABB again and get those that overlap.
  • Iterate the std::set we got from the octree and collide the character's ellipsoid with each mesh geometry.
    This added quite a lot of complexity to per-frame processing but framerate increased notoriously because the data to be processed (mesh geometry) got reduced A LOT.

    Now I need to do the same for drawing only what's visible which will increase framerate quite a bit as well.

    The following video shows a level composed of 54 meshes with 54 faces each. At all time, I'm colliding only with +-1.6 meshes per frame. At the top right you can see the number of tiles that are subject to collision. The wireframe represents the octree's nodes.

    [media]
    [/media]

Discussion

Loading comments...