intersectRay method
dynamic
intersectRay(
- dynamic ray,
- dynamic result
Performs a ray/OBB intersection test and stores the intersection point to the given 3D vector. If no intersection is detected, null is returned.
Implementation
intersectRay(ray, result) {
// the idea is to perform the intersection test in the local space
// of the OBB.
getSize(size);
aabb.setFromCenterAndSize(v1.set(0, 0, 0), size);
// create a 4x4 transformation matrix
matrix4FromRotationMatrix(obbmatrix, rotation);
obbmatrix.setPositionFromVector3(center);
// transform ray to the local space of the OBB
inverse.copy(obbmatrix).invert();
localRay.copy(ray).applyMatrix4(inverse);
// perform ray <-> AABB intersection test
if (localRay.intersectBox(aabb, result) != null) {
// transform the intersection point back to world space
return result.applyMatrix4(obbmatrix);
} else {
return null;
}
}