Skip to main content

TriangleMesh

Inherits: RefCounted < Object

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

boolcreate_from_faces\ (\ faces: PackedVector3Array\ )
PackedVector3Arrayget_faces\ (\ ) const
Dictionaryintersect_ray\ (\ begin: Vector3, dir: Vector3\ ) const
Dictionaryintersect_segment\ (\ begin: Vector3, end: Vector3\ ) const

Method Descriptions

bool create_from_faces\ (\ faces: PackedVector3Array\ ) 🔗

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 🔗

Returns a copy of the geometry faces. Each 3 vertices of the array represent one triangle (face).


Dictionary intersect_ray\ (\ begin: Vector3, dir: Vector3\ ) const 🔗

Tests 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\ (\ begin: Vector3, end: Vector3\ ) const 🔗

Tests 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.