fromMeshGeometry method

BVH fromMeshGeometry(
  1. MeshGeometry geometry
)

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