intersectRay(ray, result) {
    // the idea is to perform the intersection test in the local space
    // of the OBB.

    this.getSize(size);
    aabb.setFromCenterAndSize(v1.set(0, 0, 0), size);

    // create a 4x4 transformation matrix

    matrix.setFromMatrix3(this.rotation);
    matrix.setPosition(this.center);

    // transform ray to the local space of the OBB

    inverse.copy(matrix).invert();
    localRay.copy(ray).applyMatrix4(inverse);

    // perform ray <-> AABB intersection test

    if (localRay.intersectBox(aabb, result)) {
      // transform the intersection point back to world space

      return result.applyMatrix4(matrix);
    } else {
      return null;
    }
  }
Performs a ray/OBB intersection test and stores the intersection point
to the given 3D vector. If no intersection is detected, *null* is returned.

@param {Ray} ray
@param {Vector3} result
@return {Vector3?}