intersectsRay method

bool intersectsRay(
  1. Ray ray
)

Performs a ray/BVH node intersection test. Returns either true or false if there is a intersection or not.

Implementation

bool intersectsRay(Ray ray ) {
	if ( ray.intersectAABB( boundingVolume, _intersection ) != null ) {
		if ( leaf() == true ) {
			final vertices = primitives;

			for ( int i = 0, l = vertices.length; i < l; i += 9 ) {
				// remember: we assume primitives are triangles
				_triangle['a']?.fromArray( vertices, i );
				_triangle['b']?.fromArray( vertices, i + 3 );
				_triangle['c']?.fromArray( vertices, i + 6 );

				if ( ray.intersectTriangle( _triangle, true, _intersection ) != null ) {
					return true;
				}
			}

			return false;
		}
       else {
			// process child BVH nodes
			for ( int i = 0, l = children.length; i < l; i ++ ) {
				if ( children[ i ].intersectsRay( ray ) == true ) {
					return true;
				}
			}
			return false;
		}
	}
    else {
		return false;
	}
}