fromMeshGeometry method
Computes a BVH for the given mesh geometry.
Implementation
BVH fromMeshGeometry(MeshGeometry geometry ) {
root = BVHNode();
// primitives
if ( geometry.indices != null ) geometry = geometry.toTriangleSoup();
final vertices = geometry.vertices;
for ( int i = 0, l = vertices.length; i < l; i ++ ) {
root?.primitives.add( vertices[ i ] );
}
// centroids
final primitives = root!.primitives;
for ( int i = 0, l = primitives.length; i < l; i += 9 ) {
_v1.fromArray( primitives, i );
_v2.fromArray( primitives, i + 3 );
_v3.fromArray( primitives, i + 6 );
_v1.add( _v2 ).add( _v3 ).divideScalar( 3 );
root?.centroids.addAll([ _v1.x, _v1.y, _v1.z ]);
}
// build
root?.build( branchingFactor, primitivesPerNode, depth, 1 );
return this;
}