碰撞检测算法详述

这篇具有很好参考价值的文章主要介绍了碰撞检测算法详述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

算法的分类

碰撞检测算法,Unity,算法,计算机视觉,人工智能

目录

一、基于空间域的碰撞检测算法分类

1. 基于图像空间的碰撞算法

2.基于几何空间的碰撞检测算法

(1)基于空间剖分算法

(2)裁剪扫掠法

(3)基于距离场的算法

(4)基于层次包围盒的算法

① 轴向包围盒

② 球包围盒

③ 方向包围盒

④ 离散方向多面体

一、基于空间域的碰撞检测算法分类

从空间域角度出发,碰撞检测算法可以分为基于图像空间和基于几何空间的碰撞检测算法, 两者的区别是前者将图形硬件作为辅助来解决碰撞检测问题,后者则利用几何领域的理论知识 来解决碰撞检测问题。

1. 基于图像空间的碰撞算法

基于图像空间的碰撞算法利用图形硬件将模型投影到二维平面空间,再根据这些投影的相 交情况和模型的各类缓存信息来判断模型之间是否碰撞。

优点:

1)碰撞检 测过程不需要进行任何预处理,比较适合多柔体模型的环境;

2)对于同样复杂度的场景, 算法的效率没有大的变化,稳定性比较高;

3)利用 GPU 加速图形的渲染,降低了 CPU 的计算 负荷,提高了算法的效率。

缺点:

1)图像的分辨率的高低会影响算 法的精确度,可能会出现误判情况;

2)不适合处理凹体之间的碰撞检测问题;

3)需要解决图 形硬件和 CPU 的负载均衡问题。

2.基于几何空间的碰撞检测算法

常见的主要有以下几类算法:基于 空间剖分的算法、基于扫掠和裁剪的算法、基于层次包围盒树的算法以及基于距离场的算法等。

(1)基于空间剖分算法

依据一定的规则将场景划分成不同的区域,在碰撞检测时只需对位于同 一区域或者相邻区域的模型之间进行检测,这样可以大大减少组合测试的数量,从而提高分离 测试阶段的效率。

算法中通常使用的数据结构有均匀网格、8 叉树、k-d 树以及 BSP 树等。

均匀网格表示将场景空间划分成多个大小一致的单元, 使得每个对象都与其所属的单元格关联,则组合测试将限定在位于同一网格单元的模型之间, 此类算法的性能主要受网格单元的尺寸的影响,最坏的情况下,场景中所有的模型均位于一个 网格中,此时算法的时间复杂度为 O(n2)。

8 叉树属于一种空间层次结构划分方案,其划分方法 是首先沿 X、Y 和 Z 轴将场景划分成 8 个等大的立方体,每个立方体对应根节点的一个子节点, 对于每个子节点,若其中的模型数量超过了设定的阈值,则对这个子节点再以同样的方法递归 划分。

与 8 叉树的在空间坐标轴上的同步划分方式不同,k-d 树在一次操作过程中只沿其中的 一条轴进行划分,其划分轴信息一般用两个二进制存储于树的节点中。

BSP 树又称二分空间划 分树,其结构为 2 叉树,对于 n 维空间,它采用任意的 n-1 超平面递归将空间划为多个子空间 对,在大多数场景中,BSP 树均可达到 k-d 树及 8 叉树的效果,反之一般不成立。

(2)裁剪扫掠法

该算法主要基于这样一个理论:任意两个在三维空间相交的模型,则它们在空间坐标轴上的投 影也一定相交。裁剪扫掠法的检测过程如下:首先计算出每个模型的包围盒,包围盒在每个坐 标轴上均对应一个区间[a,b],然后将 n 个此类区间的边界值 a 和 b 插入到一个排序表中,最 后对上述排序进行扫掠,遇到 a 值时,将对应的区间加入到一个临时新建的表中;遇到 b 时, 将在临时表中对应的区间移除,每当一个新的区间加入到表中时,可以判断此区间与临时表中 原有的区间重合。

 上文介绍的两种几何空间的碰撞检测算法主要适用于多模型场景的粗略测试阶段,下面介 绍两种适用于逐步求精阶段的碰撞检测算法:基于距离场的算法以及基于层次包围盒的算法。

(3)基于距离场的算法

距离场表示物体表面某个区域内所有点与此物体的最短距离,最短距离的值可以用正负符号修饰,表示某一点位于模型内部还是模型外部。

(4)基于层次包围盒的算法

基于层次包围盒的碰撞检测算法最初是由包围盒技术发展而来,包围盒技术的原理是以规 则较大的包围盒来代替不规则较小的模型进行相交检测,快速剔除物体不相交的情况。

常 见的包围盒主要有以下几类:轴向包围盒(AABB)、球包围盒(Sphere)、方向包围盒(OBB) 和离散方向多面体(k-dop)等

碰撞检测算法,Unity,算法,计算机视觉,人工智能

① 轴向包围盒

它可以表示为三维空间中三条边均与空间坐标轴平行的长方体。

表达式

给定 AABB 的中心点 c 和三条边的半径𝑟𝑥 ,𝑟𝑦 ,𝑟𝑧,AABB 所包含的区域可以用 以下公式定义:

𝑅 = {|𝑥, 𝑦, 𝑧 ||𝑐. 𝑥 − 𝑥 |≤ 𝑟𝑥 , |𝑐. 𝑦 − 𝑦| ≤ 𝑟𝑦 , |𝑐. 𝑧 − 𝑧 |≤ 𝑟𝑧 }

相交测试

只需 6 次比较运算操作即可判断两个 AABB 是否相交: 如果两个 AABB 在 X、Y 以及 Z 轴上的投影都相交,那么两个 AABB 相交,否则分离。 

② 球包围盒

与其它包围盒相比,球包围盒(Sphere)是一类紧密性相对较差的包围盒,其优点是可以 实现快速相交测试,以及在对模型的球包围盒重构时不用考虑模型的旋转变换。

表达式

一般只需给定球的球心 c 以及半径 r:

𝑅 = {𝑥, 𝑦, 𝑧 (𝑥 − 𝑐. 𝑥)2 + (𝑦 − 𝑐. 𝑦)2 + (𝑧 − 𝑐. 𝑧)2 ≤ 𝑟2}

相交测试

球包围盒之间的相交测试也非常简单,只需计算两个球心的距离,然后与 两个包围盒的半径和进行比较,由于计算机中求根运算操作所消耗的时间要远远多于求平方的 操作,实际上一般使用距离的平方值来进行比较。

③ 方向包围盒

相交测试

最常见的 一种方法是通过判断两个包围盒之间是否存在分离轴来确定它们之间是否相交,若空间存在一 条直线,两个包围盒在这条直线上的投影分离,那么两个包围盒之间分离。任意两个 OBB 之 间一共存在 15 条潜在的分离轴,逐一检测完这 15 条轴是一个比较复杂的过程。

④ 离散方向多面体

离散方向多面体(K-DOP)是一种典型的凸多面体,它可以定义为多个平行平面之间的交 集,其中 K 表示 K-DOP 所有面的外法向量的数目,即 K-DOP 的方向轴的数量为 K/2。文章来源地址https://www.toymoban.com/news/detail-725132.html

到了这里,关于碰撞检测算法详述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机视觉算法中的Canny边缘检测(Canny Edge Detection)

    在计算机视觉领域,边缘检测是一项重要的任务。边缘是图像中物体之间的边界,通过边缘检测可以帮助我们识别出图像中的物体。Canny边缘检测是一种经典且常用的边缘检测算法。本文将对Canny边缘检测算法进行介绍和分析。 Canny边缘检测算法由约翰·Canny在1986年提出,是一

    2024年02月08日
    浏览(32)
  • 计算机视觉基础——基于yolov5-face算法的车牌检测

    torch==1.8.1 torchvision==0.9.1 2.1 CCPD数据集介绍 2.1.1 ccpd2019及2020 CCPD数据集主要采集于安徽某停车场一段时间内的数据, 所有图片尺寸固定为720×1160(w×h), 大约包含25w+的各种场景图片,如下图所示: 类别 描述 图片数 CCPD-Base 通用车牌图片 200k CCPD-FN 车牌离摄像头拍摄位置相对

    2024年02月06日
    浏览(38)
  • 【计算机视觉面经四】基于深度学习的目标检测算法面试必备(RCNN~YOLOv5)

    目标检测算法主要包括:【两阶段】目标检测算法、【多阶段】目标检测算法、【单阶段】目标检测算法。 什么是两阶段目标检测算法,与单阶段目标检测有什么区别? 两阶段目标检测算法因需要进行两阶段的处理:1)候选区域的获取,2)候选区域分类和回归,也称为基于

    2024年03月27日
    浏览(42)
  • 毕业设计-计算机视觉:刨花板表面小目标缺陷检测系统 人工智能 算法 python

      目录  前言 设计思路 一、课题背景与意义 二、算法理论原理 2.1 自适应空间特征融合模块 2.2 Ghost 模块 三、检测的实现 3.1 数据集 3.2 实验环境搭建 3.3 实验及结果分析 实现效果图样例 最后        📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临

    2024年01月16日
    浏览(43)
  • 计算机视觉算法——基于Transformer的目标检测(DETR / Deformable DETR / Dynamic DETR / DETR 3D)

    DETR是DEtection TRansformer的缩写,该方法发表于2020年ECCV,原论文名为《End-to-End Object Detection with Transformers》。 传统的目标检测是基于Proposal、Anchor或者None Anchor的方法,并且至少需要非极大值抑制来对网络输出的结果进行后处理,涉及到复杂的调参过程。而DETR使用了Transformer

    2024年02月09日
    浏览(40)
  • 碰撞检测算法详述

    算法的分类 目录 一、基于空间域的碰撞检测算法分类 1. 基于图像空间的碰撞算法 2.基于几何空间的碰撞检测算法 (1)基于空间剖分算法 (2)裁剪扫掠法 (3)基于距离场的算法 (4)基于层次包围盒的算法 ① 轴向包围盒 ② 球包围盒 ③ 方向包围盒 ④ 离散方向多面体 从

    2024年02月07日
    浏览(34)
  • 计算机竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

    🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉opencv的手势检测 手势识别 算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 普通机器视觉手势检测的基本流程如下: 其中轮廓的提取,多边形

    2024年02月07日
    浏览(38)
  • 【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(12 月 6 日论文合集)

    扩散-SS3D:半监督三维目标检测的扩散模型 半监督目标检测对于三维场景理解至关重要,有效地解决了获取大规模三维边界框注释的限制。现有方法通常采用具有伪标记的师生框架来利用未标记的点云。然而,在多样化的3D空间中产生可靠的伪标签仍然具有挑战性。在这项工

    2024年02月03日
    浏览(36)
  • 【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 30 日论文合集)

    检测任何深度伪装:分割任何符合人脸的伪装检测和定位 论文地址: 计算机视觉的快速发展刺激了面部伪造技术的显著进步,引起了致力于检测伪造和精确定位操纵区域的研究人员的关注。尽管如此,在有限的细粒度像素监督标签的情况下,deepfake检测模型在精确的伪造检测

    2024年02月16日
    浏览(40)
  • 【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(7 月 6 日论文合集)

    利用Sentinel-2对沿海地区海洋垃圾的大规模探测 检测和量化海洋污染和宏观塑料是一个日益紧迫的生态问题,直接影响生态和人类健康。量化海洋污染的努力往往是通过稀疏和昂贵的海滩调查进行的,这很难大规模进行。在这里,遥感可以通过定期监测和检测沿海地区的海洋

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包