intersectsRay method
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;
}
}