I'm working on the 3D Space Partitioning which is also related with this.
I have been reusing some SGL examples that come with the Saturn Orbit Development package, found here
http://www.rockin-b.de/windows-saturnorbit.html if you are curious, namely the "Racing" and the "Shooting" 3D examples. I tried to do some refactoring on these examples but it just seems impossible, there are a lot of "magic" numbers and I can't make sense of half of what is done there.
I mean, from the little bits I did understand of the map drawing part it looks like they are doing some sort of fustrum culling and have the map divided in areas for faster search but that's about it. The code was probably ported from assembly to C which is completely unreadable.
The collision detection used from what I understood was made like a second map with bounding areas (these areas might not match the 3d map 1:1) for example a race track only lets you move inside the track and not the rest of map, the collision detection seemed to be done with collision sweep tests like these:
http://www.gamasutra.com/view/feature/131790/simple_intersection_tests_for_games.php.
In the end I resorted to take the maps that have a lot of polygon data and try to re-use them for implementing my own 3d space partitioning.
It all falls down to how do we store the 3d map data, which is directly related to how is the 3d partitioning done, for example, BSPs and Octress can be used for collision detection.
Anyway, I wanted to help you so much but these things require a lot of study

and I'm progressing at a crawling speed
