trimesh.collision¶
- class trimesh.collision.CollisionManager¶
Bases:
objectA mesh-mesh collision manager.
- __init__()¶
Initialize a mesh-mesh collision manager.
- add_object(name, mesh, transform=None)¶
Add an object to the collision manager.
If an object with the given name is already in the manager, replace it.
- Parameters:
name (str) – An identifier for the object
mesh (Trimesh object) – The geometry of the collision object
transform ((4,4) float) – Homogeneous transform matrix for the object
- in_collision_internal(return_names=False, return_data=False)¶
Check if any pair of objects in the manager collide with one another.
- Parameters:
return_names (bool) – If true, a set is returned containing the names of all pairs of objects in collision.
return_data (bool) – If true, a list of ContactData is returned as well
- Returns:
is_collision (bool) – True if a collision occurred between any pair of objects and False otherwise
names (set of 2-tup) – The set of pairwise collisions. Each tuple contains two names in alphabetical order indicating that the two corresponding objects are in collision.
contacts (list of ContactData) – All contacts detected
- in_collision_other(other_manager, return_names=False, return_data=False)¶
Check if any object from this manager collides with any object from another manager.
- Parameters:
other_manager (CollisionManager) – Another collision manager object
return_names (bool) – If true, a set is returned containing the names of all pairs of objects in collision.
return_data (bool) – If true, a list of ContactData is returned as well
- Returns:
is_collision (bool) – True if a collision occurred between any pair of objects and False otherwise
names (set of 2-tup) – The set of pairwise collisions. Each tuple contains two names (first from this manager, second from the other_manager) indicating that the two corresponding objects are in collision.
contacts (list of ContactData) – All contacts detected
- in_collision_single(mesh, transform=None, return_names=False, return_data=False)¶
Check a single object for collisions against all objects in the manager.
- Parameters:
mesh (Trimesh object) – The geometry of the collision object
transform ((4,4) float) – Homogeneous transform matrix
return_names (bool) – If true, a set is returned containing the names of all objects in collision with the object
return_data (bool) – If true, a list of ContactData is returned as well
- Returns:
is_collision (bool) – True if a collision occurs and False otherwise
names (set of str) – [OPTIONAL] The set of names of objects that collided with the provided one
contacts (list of ContactData) – [OPTIONAL] All contacts detected
- min_distance_internal(name=None, return_names=False, return_data=False)¶
Get the minimum distance between objects in the manager.
If name is provided, computes the minimum distance between the specified object and any other object in the manager. If name is None, computes the minimum distance between any pair of objects in the manager.
- Parameters:
name (str or None) – If provided, the identifier for the object already in the manager to compute distances from. If None, computes distances between all pairs of objects.
return_names (bool) – If true, a 2-tuple is returned containing the names of the closest objects.
return_data (bool) – If true, a DistanceData object is returned as well
- Returns:
distance (float) – Min distance between objects
names ((2,) str) – The names of the closest objects
data (DistanceData) – Extra data about the distance query
- min_distance_other(other_manager, return_names=False, return_data=False)¶
Get the minimum distance between any pair of objects, one in each manager.
- Parameters:
other_manager (CollisionManager) – Another collision manager object
return_names (bool) – If true, a 2-tuple is returned containing the names of the closest objects.
return_data (bool) – If true, a DistanceData object is returned as well
- Returns:
distance (float) – The min distance between a pair of objects, one from each manager.
names (2-tup of str) – A 2-tuple containing two names (first from this manager, second from the other_manager) indicating the two closest objects.
data (DistanceData) – Extra data about the distance query
- min_distance_single(mesh, transform=None, return_name=False, return_data=False)¶
Get the minimum distance between a single object and any object in the manager.
- Parameters:
mesh (Trimesh object) – The geometry of the collision object
transform ((4,4) float) – Homogeneous transform matrix for the object
return_names (bool) – If true, return name of the closest object
return_data (bool) – If true, a DistanceData object is returned as well
- Returns:
distance (float) – Min distance between mesh and any object in the manager
name (str) – The name of the object in the manager that was closest
data (DistanceData) – Extra data about the distance query
- remove_object(name)¶
Delete an object from the collision manager.
- Parameters:
name (str) – The identifier for the object
- set_transform(name, transform)¶
Set the transform for one of the manager’s objects. This replaces the prior transform.
- Parameters:
name (str) – An identifier for the object already in the manager
transform ((4,4) float) – A new homogeneous transform matrix for the object
- class trimesh.collision.ContactData(names, contact)¶
Bases:
objectData structure for holding information about a collision contact.
- __init__(names, contact)¶
Initialize a ContactData.
- Parameters:
names (list of str) – The names of the two objects in order.
contact (fcl.Contact) – The contact in question.
- property depth¶
The penetration depth of the 3D point of intersection for this contact.
- Returns:
depth – The penetration depth.
- Return type:
float
- index(name)¶
Returns the index of the face in contact for the mesh with the given name.
- Parameters:
name (str) – The name of the target object.
- Returns:
index – The index of the face in collision
- Return type:
int
- property normal¶
The 3D intersection normal for this contact.
- Returns:
normal – The intersection normal.
- Return type:
(3,) float
- property point¶
The 3D point of intersection for this contact.
- Returns:
point – The intersection point.
- Return type:
(3,) float
- class trimesh.collision.DistanceData(names, result)¶
Bases:
objectData structure for holding information about a distance query.
- __init__(names, result)¶
Initialize a DistanceData.
- Parameters:
names (list of str) – The names of the two objects in order.
contact (fcl.DistanceResult) – The distance query result.
- property distance¶
Returns the distance between the two objects.
- Returns:
distance – The euclidean distance between the objects.
- Return type:
float
- index(name)¶
Returns the index of the closest face for the mesh with the given name.
- Parameters:
name (str) – The name of the target object.
- Returns:
index – The index of the face in collisoin.
- Return type:
int
- point(name)¶
The 3D point of closest distance on the mesh with the given name.
- Parameters:
name (str) – The name of the target object.
- Returns:
point – The closest point.
- Return type:
(3,) float
- trimesh.collision.mesh_to_BVH(mesh)¶
Create a BVHModel object from a Trimesh object
- Parameters:
mesh (Trimesh) – Input geometry
- Returns:
bvh – BVH of input geometry
- Return type:
fcl.BVHModel
- trimesh.collision.mesh_to_convex(mesh)¶
Create a Convex object from a Trimesh object
- Parameters:
mesh (Trimesh) – Input geometry
- Returns:
convex – Convex of input geometry
- Return type:
fcl.Convex
- trimesh.collision.scene_to_collision(scene)¶
Create collision objects from a trimesh.Scene object.
- Parameters:
scene (trimesh.Scene) – Scene to create collision objects for
- Returns:
manager (CollisionManager) – CollisionManager for objects in scene
objects ({node name: CollisionObject}) – Collision objects for nodes in scene