At collision detection time, intersection is determined by first checking whether the bounding volumes at the roots of the trees corresponding to the objects intersect. If they do, we check the children of one of the nodes against the other node. If the two nodes being tested are leaves, the faces contained in the leaves are checked against each other and added to a collision list if they intersect. Like this, we continue until no more intersections can be found.
In this implementation, we used Oriented Bounding Boxes (OBB's) and Axis aligned Bounding Boxes (AABB's) as bounding volumes, since they are easy and fast to construct and for both types of objects rapid overlap tests exist ([GLM96],[Ber98]). With the OBB's we have a further option of calculating the convex hull when computing the orientation. Of course, many other types of bounding volumes exist like spheres and k-DOP's etc. I won't go into this here, but rather move on to the implementation of the parallel versions of the OBB and AABB based algorithms.