BVHTree Utilities (mathutils.bvhtree)#
BVH tree structures for proximity searches and ray casts on geometry.
- class mathutils.bvhtree.BVHTree#
- classmethod FromBMesh(bmesh, epsilon=0.0)#
BVH tree based on
BMesh
data.- Parameters:
bmesh (
BMesh
) – BMesh data.epsilon (float) – Increase the threshold for detecting overlap and raycast hits.
- classmethod FromObject(object, depsgraph, deform=True, render=False, cage=False, epsilon=0.0)#
BVH tree based on
Object
data.- Parameters:
object (
Object
) – Object data.depsgraph (
Depsgraph
) – Depsgraph to use for evaluating the mesh.deform (bool) – Use mesh with deformations.
cage (bool) – Use modifiers cage.
epsilon (float) – Increase the threshold for detecting overlap and raycast hits.
- classmethod FromPolygons(vertices, polygons, all_triangles=False, epsilon=0.0)#
BVH tree constructed geometry passed in as arguments.
- Parameters:
vertices (Sequence[Sequence[float]]) – float triplets each representing
(x, y, z)
polygons (Sequence[Sequence[int]]) – Sequence of polygons, each containing indices to the vertices argument.
all_triangles (bool) – Use when all polygons are triangles for more efficient conversion.
epsilon (float) – Increase the threshold for detecting overlap and raycast hits.
- find_nearest(origin, distance=1.84467e+19)#
Find the nearest element (typically face index) to a point.
- Parameters:
co (
Vector
) – Find nearest element to this point.distance (float) – Maximum distance threshold.
- Returns:
Returns a tuple: (position, normal, index, distance), Values will all be None if no hit is found.
- Return type:
tuple[
Vector
| None,Vector
| None, int | None, float | None]
- find_nearest_range(origin, distance=1.84467e+19)#
Find the nearest elements (typically face index) to a point in the distance range.
- Parameters:
co (
Vector
) – Find nearest elements to this point.distance (float) – Maximum distance threshold.
- Returns:
Returns a list of tuples (position, normal, index, distance)
- Return type:
list[tuple[
Vector
,Vector
, int, float]]
- overlap(other_tree)#
Find overlapping indices between 2 trees.
- Parameters:
other_tree (
BVHTree
) – Other tree to perform overlap test on.- Returns:
Returns a list of unique index pairs, the first index referencing this tree, the second referencing the other_tree.
- Return type:
list[tuple[int, int]]
- ray_cast(origin, direction, distance=sys.float_info.max)#
Cast a ray onto the mesh.
- Parameters:
origin (
Vector
) – Start location of the ray in object space.direction (
Vector
) – Direction of the ray in object space.distance (float) – Maximum distance threshold.
- Returns:
Returns a tuple: (position, normal, index, distance), Values will all be None if no hit is found.
- Return type:
tuple[
Vector
| None,Vector
| None, int | None, float | None]