Portal-based engines divide a scene or world into smaller convex polyhedral sections. Convex polyhedra are well-suited for the graphics pipeline because they eliminate overdraw. Unfortunately, for the purpose of collision detection, convex polyhedra present us with some difficulties.
Now, let’s assume that we have either our OBB or AABB trees. How do we actually perform collision detection? We’ll take two trees and check whether two initial boxes overlap. If they do, they might intersect, and we’ll have to recursively process them further (recursive descent).
"The last tutorial thought you how to check if a ray intersect with a plane and what's the distance to that plane (as long as there is any intersection). Since we only use triangles (which aren't inifinite), we need to check if that ray intersects also with a triangle that is ON the plane..."
I've attempted here to write a tutorial that anyone with a basic understanding of 3D concepts and linear algebra should be able to pick up on quickly. If you're already familiar with collision detection, there's no real reason to read further.
Amir has posted part 2 of his collision detection series. This tutorial is about Ray/Plane intersection (which is quite important). The goal of this tutorial is to create a function that will calculate the distance between a ray and a plane. Don't forget to check out Part 1: Sphere/Plane Intersection.
Apply forces and acceleration to particles and you get the big "D" word: dynamics. With the help of a virtual Jello simulator, Jeff Lander investigates how particle dynamics affects collision response.
So how should we handle the separate problem of collision and navigating of a character in a 3D environment? In the real world this is achieved by "left foot forward", "right foot forward", and so on. In a video game the user has an avatar which is often a biped, so why not implement something analogous to how things work in the real world? This paper first discusses player control and navigation in an action oriented 3D game.