Class reference
TriangleMesh
Inherits RefCounted
Triangle geometry for efficient, physicsless intersection queries.
Description
Creates a bounding volume hierarchy (BVH) tree structure around triangle geometry. The triangle BVH tree can be used for efficient intersection queries without involving a physics engine. For example, this can be used in editor tools to select objects with complex shapes based on the mouse cursor position. Performance: Creating the BVH tree for complex geometry is a slow process and best done in a background thread.
Methods
bool create_from_faces(PackedVector3Array faces)
bool create_from_faces(PackedVector3Array faces)Creates the BVH tree from an array of faces. Each 3 vertices of the input faces array represent one triangle (face). Returns true if the tree is successfully built, false otherwise.
PackedVector3Array get_faces() const
PackedVector3Array get_faces() constReturns a copy of the geometry faces. Each 3 vertices of the array represent one triangle (face).
Dictionary intersect_ray(Vector3 begin, Vector3 dir) const
Dictionary intersect_ray(Vector3 begin, Vector3 dir) constTests for intersection with a ray starting at begin and facing dir and extending toward infinity. If an intersection with a triangle happens, returns a Dictionary with the following fields: position: The position on the intersected triangle. normal: The normal of the intersected triangle. face_index: The index of the intersected triangle. Returns an empty Dictionary if no intersection happens. See also intersect_segment(), which is similar but uses a finite-length segment.
Dictionary intersect_segment(Vector3 begin, Vector3 end) const
Dictionary intersect_segment(Vector3 begin, Vector3 end) constTests for intersection with a segment going from begin to end. If an intersection with a triangle happens returns a Dictionary with the following fields: position: The position on the intersected triangle. normal: The normal of the intersected triangle. face_index: The index of the intersected triangle. Returns an empty Dictionary if no intersection happens. See also intersect_ray(), which is similar but uses an infinite-length ray.