trimesh检测物体相撞

# 创建两个可能相交的物体
cube1 = trimesh.creation.box(extents=[1, 1, 1])
cube2 = trimesh.creation.box(extents=[1, 1, 1])
cube2.apply_translation([0.5, 0.5, 0.5])  # 让两个立方体部分重叠
# 进行碰撞检测
collision_manager = trimesh.collision.CollisionManager()
collision_manager.add_object('cube1', cube1)
collision_manager.add_object('cube2', cube2)
# 判断是否发生碰撞
in_collision = collision_manager.in_collision_internal()
print(f"是否碰撞: {in_collision}")
# 如果需要更详细的信息,比如碰撞点
collision_data = collision_manager.get_collisions()
if collision_data:
    for name_pair, contact_points in collision_data.items():
        print(f"碰撞对象: {name_pair}")
        # contact_points 包含了碰撞相关的几何信息

对于两两检测物体,可以直接使用

collision_result = cube1.collides_with(cube2)
print(collision_result)  # 输出: True 或 False

--------------------------------

与主题无关,记录一个操作:

之前用聚类删除小片噪声点,现在发现可以用KDTree ,其实之前聚类也是用KDTree计算的,现在可以直接操作,少了中间商

from scipy import spatial
# 为顶点构建KD-Tree
tree = spatial.KDTree(mesh.vertices)
# 查询离点[0,0,0]最近的10个顶点
distances, indices = tree.query([0, 0, 0], k=10)

mehs翻转

   # normalized_top, scale_factor_top, centroid_top = normalize_mesh_pts(center_points_top)
    # normalized_bm, scale_factor_bm, centroid_bm = normalize_mesh_pts(center_points_bm)
    # up_down_bm = normalized_bm.copy()
    # # up_down_bm.apply_transform(trimesh.transformations.scale_and_translate(np.diag([1, -1, 1]), [0, 0, 0]))
    # up_down_bm[:, 1] *= -1
    # # up_down.vertices = verts
    # # up_down.faces = np.fliplr(up_down.faces)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值