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)

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(Vector3 begin, Vector3 dir) 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(Vector3 begin, Vector3 end) 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.

Source revision 5592dc3a7a61
Connection interrupted. Reload×

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.