# 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, scene, deform=True, render=False, cage=False, epsilon=0.0)

    BVH tree based on `Object` data.

    Parameters: | object (`Object`) – Object data. scene (`Scene`) – Scene data to use for evaluating the mesh. deform (bool) – Use mesh with deformations. render (bool) – Use render settings. cage (bool) – Use render settings. 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 (float triplet sequence) – float triplets each representing `(x, y, z)` polygons (Sequence of sequences containing ints) – Sequence of polyugons, 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`(co, distance=1.84467e+19)

    Find the nearest element to a point.

    Parameters: | co (`Vector`) – Find nearest element to this point. distance (float) – Maximum distance threshold.
    Returns: | Returns a tuple (`Vector` location, `Vector` normal, int index, float distance), Values will all be None if no hit is found.
    Return type: | `tuple`

  `overlap`(other_tree)

    Find overlapping indices between 2 trees.

    Parameters: | other_tree (`BVHTree`) – Other tree to preform 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`

  `ray_cast`(co, direction, distance=sys.float_info.max)

    Cast a ray onto the mesh.

    Parameters: | co (`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 (`Vector` location, `Vector` normal, int index, float distance), Values will all be None if no hit is found.
    Return type: | `tuple`