Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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

bool

create_from_faces(faces: PackedVector3Array)

PackedVector3Array

get_faces() const

Dictionary

intersect_ray(begin: Vector3, dir: Vector3) const

Dictionary

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


User-contributed notes

Please read the User-contributed notes policy before submitting a comment.