谈虚拟现实中的碰撞检测问题(打)

合集下载

虚拟装配中基于精确模型的碰撞检测算法

虚拟装配中基于精确模型的碰撞检测算法

第22卷第5期2010年5月计算机辅助设计与图形学学报Journal of Computer 2Aided Design &Computer GraphicsVol.22No.5May 2010收稿日期:2009-06-01;修回日期:2009-10-16.基金项目:“十一五”总装预先研究资助项目(51318010205);国家自然科学基金(50805009).侯伟伟(1984—),男,博士研究生,主要研究方向为虚拟装配、物理建模;宁汝新(1942—),女,教授,博士生导师,主要研究方向为数字化设计与制造;刘检华(1977—),男,博士,副教授,主要研究方向为虚拟现实、虚拟装配.虚拟装配中基于精确模型的碰撞检测算法侯伟伟,宁汝新,刘检华(北京理工大学机械与车辆学院 北京 100081)(houweiwei @ )摘要:针对目前虚拟装配中由多边形模型引起的碰撞检测准确性低的问题,提出一种考虑公差信息的精确碰撞检测算法.首先进行分层的多边形碰撞检测,获得发生碰撞的多边形;然后基于层次图像数据将发生碰撞的多边形映射到零件相应的几何上;再依据几何的公差信息计算碰撞阈值;最后根据碰撞阈值进行精确碰撞判定.实例验证结果表明,文中算法在保证虚拟装配系统实时性的同时,提高了碰撞检测的准确性.关键词:虚拟装配;精确模型;精确碰撞检测中图法分类号:TP391.9A Collision Detection AlgorithmB ased on Accurate Models in Virtual AssemblyHou Weiwei ,Ning Ruxin ,and Liu Jianhua(S chool of Mechanical Engi neeri ng ,Bei j ing I nstit ute of Technolog y ,B ei j ing 100081)Abstract :An accurate collision detection algorit hm co nsidering tolerance information is p roposed to solve t he problem of low accuracy in collision detection due to polygonal models in virt ual assembly currently.The algorit hm mainly consist s of t he following four part s :first ,hierarchical collision detection of polygonal models is carried out to obtain collided polygons ;second ,collided polygons are mapped to geomet ries using hierarchical image data ;t hird ,collision t hreshold is comp uted based on tolerance of geomet ries ;fourt h ,accurate collision detection is carried out based on collision t hresholds.Experiment s show t hat t his algorit hm p rovides more accurate result t han common algorit hms and meet s t he real time requirement of virt ual assembly at t he same time.K ey w ords :virt ual assembly ;accurate model ;accurate collision detection 近年来,虚拟装配作为虚拟现实技术在机械制造领域中的一个典型应用,已经引起国内外学者和企业越来越广泛的重视.在机械产品开发过程中,运用虚拟装配技术可以进行装配过程仿真、可装配性验证与分析、装配工艺规划、装配工人培训、装配现场指导等,因此越来越多的企业将虚拟装配技术运用于机械产品的开发.碰撞检测是构成虚拟装配系统功能的基本要素,也是进行虚拟装配仿真的前提.碰撞检测算法不仅要满足虚拟装配系统实时性的要求,而且要满足工业应用所需的准确性要求.目前,国内外对于碰撞检测算法的研究主要集中于提高碰撞检测算法的效率上.Zhang 等[1]提出了一种基于采样的使用局部规划在配置空间求解无碰撞路径的算法;Figueiredo 等[2]采用交迭的轴向包围盒快速过滤不相交对象以提高碰撞检测效率;G ovindaraju 等[3]采用图像卡进行大规模场景中对象间快速碰撞检测;刘晓平等[4]运用空间层次划分技术寻找多面体中充分接近的三角面片,通过计算空间多面体之间距离实现碰撞检测;武殿梁等[5]用一种并行、基于区域分割和快速相交检验排序的分解算法来构造包围盒层次模型,检测计算时依据用户的操作动态决定碰撞检测对,以减少检测计算量;郑轶等[6]提出了基于分层次剖分的快速碰撞检测方法,通过综合运用空间剖分法和层次包容盒法快速地减少需要检测的基本几何元素对数,利用虚拟装配过程的时空连贯性,通过引用模型缓存和冗余面片索引技术减少计算量和内存占用.但是,上述碰撞检测算法应用到虚拟装配中时都存在着不足,所采用的多边形模型在图像显示和碰撞检测方面虽然具有较大优势,但由于多边形模型中缺乏精确几何信息和工程语义信息,造成了碰撞检测的准确性低,直接影响了虚拟装配系统的数据准确性,限制了虚拟装配在工业中的应用.本文针对虚拟装配中碰撞检测算法的准确性低问题,采用一种精确几何模型(ACIS模型)作为系统的底层模型,同时引入公差信息,在多边形碰撞检测的基础上进行精确几何层的碰撞检测,提高了碰撞检测的准确性.1 虚拟装配系统中的碰撞问题描述碰撞检测的一个根本问题是确定产品数字模型处于何种关系时实际模型才会发生碰撞.实际中,当2个零件间的距离为0时就发生碰撞.但是在虚拟装配研究中,如果依据“当2个零件间的距离为0时发生碰撞”的理论来进行碰撞检测,则不能满足虚拟装配技术的要求,原因如下:1)在仿真中零件间的距离是离散变量,很少等于0.由于仿真算法在计算零件位置的迭代中采用了离散的时间步,零件的运动不是连续的.即使选用足够小的离散步长使得零件的运动看起来是连续的,而在本质上零件还是从空间一个位置跳跃到另外一个位置.在碰撞检测过程中,零件在这个时间点还处于分离状态,在下一个时间点就相互穿透.2)计算机中无法对零件进行精确的表达.精确建模方法是对零件无误差理想状态的一种表示,而多边形模型是一种近似描述,两者都是采用不同的方法对物体的一种近似表达,都与实体物体存在一定的差别.因此对这些模型进行碰撞检测的结果不能够完全反映实际产品的碰撞情况.如何通过对计算机模型的碰撞检测来反映实际产品的碰撞情况,是虚拟装配中必须要解决的一个基本问题.机械产品由于其功能要求在设计和制造时有公差的要求,通过引入公差信息,在碰撞检测时考虑零件的公差要求,通过对精确几何级的碰撞检测来反映实际产品的碰撞情况,如图1所示.零件模型包括多边形模型和精确几何模型,精确几何模型即ACIS模型,其上附加有零件的公差信息,对精确几何模型离散后可以得到多边形模型.图1 机械产品碰撞检测 为了便于对零件间碰撞的描述,引入如下变量:接近距离阈值d n为零件间所允许的最小接近距离,穿透深度阈值d p为零件间所允许最大穿透深度,距离δn为零件相互接近过程时的距离,穿透深度为δp为零件相互穿透时的穿透深度,如图2所示.虚拟装配中零件间碰撞的定义如下: 897计算机辅助设计与图形学学报 第22卷图2 碰撞的定义 2个零件相互接近过程中,当δn >d n 时,零件间不会发生碰撞;当δp >d p 时,零件间发生碰撞.2个零件互相分离过程中,当δn <d n 时,零件间发生碰撞.当δn >d n 时,零件间才不发生碰撞.图4 多边形碰撞检测2 精确碰撞检测基于上述碰撞定义,在多边形碰撞检测的基础上,面向虚拟装配的精确碰撞检测算法主要包括多边形碰撞检测、几何映射、阈值计算和碰撞判定4个环节,如图3所示.多边形碰撞检测即一般意义上的碰撞检测,主要负责由CAD 模型或中性文件构造系统的多边形碰撞检测模型,并对零件进行碰撞检测,其结果是发生碰撞的零件对及相应的多边形对.多边形碰撞的结果只能反映零件近似数字模型间的碰撞情况,而不能反映实际产品的碰撞情况.几何映射是将发生碰撞的多边形对映射到零件的几何上;采用一种层次的图形数据结构快速地将发生穿透的多边形映射到相应的几何上;然后依据发生穿透的零件几何的公差信息计算几何的允许阈值,即穿透深度阈值和接近距离阈值;最后由多边形碰撞信息和几何的阈值信息综合判定零件间的碰撞情况.图3 精确碰撞检测流程2.1 多边形碰撞检测多边形碰撞检测一般包括数据预处理和碰撞997第5期侯伟伟,等:虚拟装配中基于精确模型的碰撞检测算法检测2个阶段,如图4所示.数据预处理阶段主要是把CAD 模型转换成虚拟装配系统支持的中性文件,再将该中性文件读入到虚拟装配系统中,并由该中性文件所包含的零件模型的信息构造碰撞检测模型.碰撞检测则判断零件由当前位置移动到下一位置时是否发生碰撞,为了提高碰撞检测的效率以满足虚拟装配系统实时性要求,采用分层的碰撞检测算法依次进行包围盒层、包围块层以及面片层碰撞检测.多边形碰撞检测的结果是发生碰撞的零件对以及相应的多边形对.一般意义上的碰撞检测由多边形模型的碰撞检测结果来判定零件间是否发生碰撞,如果多边形碰撞检测模型发生碰撞,那么零件间就发生碰撞.由前述分析可知,由于多边形模型与实际零件存在一定的差别,多边形模型的碰撞情况不能够准确地反映实际产品的碰撞情况,这种判别方法的准确性较差,远远不能满足实际工程的需求.图5 图形数据结构2.2 几何映射在进行多边形碰撞检测的基础上,将多边形碰撞检测结果映射到零件的几何上,由几何的公差信息和多边形的碰撞结果信息来判定零件间的碰撞情况.几何映射的主要功能是将发生碰撞的多边形映射到零件的几何上,从而进行几何级的碰撞检测.由于产品CAD 模型离散得到的多边形模型包含的多边形数量庞大,如何高效、准确地将多边形映射到相应几何上成为影响该算法效率的关键因素.如果为每个零件开辟额外的空间存储其所包含的几何以及几何包含的多边形数组,不仅会占用大量的存储空间而且难以保证运行效率,因此,本文提出一种基于图形数据的映射算法.该算法的关键是建立一种分层的图像数据结构,一个零件在图形数据库中为一个节点,节点下面包含组成该零件的壳(SH ELL )节点,SH ELL 节点下面包含组成该SH ELL 的面节点,面节点下面存储组成该面的多边形信息,如图5所示.基于该图像数据结构,在获得发生碰撞的多边形对后,由该多边形对向上回溯即可得到对应的所属的几何信息.该方法不需要额外开辟空间来存储零件模型的多边形节点信息,能够高效、准确地获得多边形所属的几何特征.2.3 穿透深度阈值和接近距离阈值的计算将发生碰撞的多边形映射得到零件间的几何后,对于每一个包含公差信息的几何面计算其穿透深度阈值和接近距离阈值;对于不包含公差信息的几何面按照一般加工精度处理.尺寸公差依据其公差带的分布有如图6所示的3种情况.穿透深度阈值是指零件在相互穿透深度达到该阈值后发生碰撞,接近距离阈值是指零件间的距离大于该阈值时不碰撞,小于该阈值就有可能发生碰撞.在这3种情况下,穿透深度阈值和接近距离阈值的计算如表1所示.图6 尺寸公差分类表1 尺寸公差的最大穿透深度和最小接近距离公差分类穿透深度阈值d p接近距离阈值d n图6a δ12δ11图6b δ22-δ21图6c-δ32δ31对于没有公差信息的几何面,其穿透深度阈值和接近距离阈值根据经验和零件大小按零件中最短边的5%计算.2.4 碰撞判定基于第1节碰撞定义,虚拟装配中结合公差信息的精确碰撞检测的判定流程如下:Step1.CAD 模型通过离散化得到多边形模型,使用多边形模型构造碰撞检测模型.Step2.获得外部设备输入,计算所操作对象的目标空间位姿信息.Step3.对所操作对象进行接近检测,获得接近距离δn 、与其距离最小的对象以及相应的几何元素对.Step4.获得几何元素对的接近距离阈值d 1n ,d 2n 和穿透深度阈值d 1p ,d 2p .08计算机辅助设计与图形学学报 第22卷Step5.如果δn >d 1n +d 2n ,那么不会发生碰撞,转Step8;如果δn +d 1p +d 2p <0,那么发生碰撞,转Step8;如果δn <d 1n +d 2n ,那么可能发生碰撞,执行下一步.Step6.对所操作零件进行碰撞检测,获得的穿透深度δp 、与其碰撞的零件以及发生碰撞的几何元素对.Step7.如果δp >min (d 1p ,d 2p ),那么发生碰撞;否则执行下一步.Step8.如果没有碰撞,那么更新零件的空间位姿信息;如果发生碰撞,提示发生碰撞.3 实验数据与对比我们依据本文提出的碰撞检测算法开发了虚拟装配仿真软件系统,并使用该系统对4种产品进行了装配过程仿真,如图7所示,装配仿真在图形工作站xw8000上进行.这4种产品的模型复杂度如表2所示.图7 产品装配过程仿真表2 测试模型的复杂度个产品零件数多边形数零件的面数零件的面片数最多最少平均最多最少平均跑步机2431440 56822 5699561309减速箱52246242526656207761844735车轮 84239964380644220402162856发动机11650238418321491120566765330 本文研究中,产品的CAD 模型通过接口转换成ACIS 模型,虚拟装配仿真系统读入ACIS 模型并生成碰撞检测模型,之后装配仿真人员在该系统中人机交互式地进行产品的装配过程仿真.对装配仿真中碰撞检测所用的时间和结果进行了统计分析,平均碰撞检测时间为产品装配过程中进行一次碰撞检测所消耗的时间,碰撞次数为产品装配仿真过程中所进行的碰撞检测的次数,多边形碰撞次数为零件的多边形模型发生碰撞的次数,几何层碰撞次数为基于本文算法检测到的零件发生碰撞的次数,108第5期侯伟伟,等:虚拟装配中基于精确模型的碰撞检测算法统计数据如表3所示.表3 碰撞检测时间及次数统计结果产品平均碰撞检测时间Πms碰撞检测Π次多边形碰撞Π次精确碰撞Π次跑步机 3.26639534592869减速箱8.221725952853685车轮 9.041140563484677发动机12.444918187867621 在人机交互式装配仿真过程中,装配仿真人员通过外设改变零件的位姿状态以实现零件的装配,对于零件的每一次位姿变换都需要进行碰撞检测,以判定零件在装配过程中是否与其他零件发生碰撞.由表3可知,零件的精确碰撞次数小于多边形碰撞次数.多边形碰撞检测模型对零件的近似表达会引起其碰撞检测结果的不准确性,采用本文算法能够有效地解决多边形碰撞检测引起的不准确性,提高虚拟装配系统碰撞检测的准确性.4 结论与展望碰撞检测是虚拟装配的重要基础之一,碰撞检测的准确性是虚拟装配系统数据真实性的重要保证.如何通过对三维数字模型的分析来真实地反映实际产品始终是计算机仿真面临的一个难题,本文通过几何级的精确碰撞检测在一定程度上保证了虚拟装配系统的数据准确性;但在碰撞检测过程中将零件作为刚性体处理,没有考虑装配过程零件的变形,而在实际装配中由于零件间碰撞而引起的变形也是影响产品装配的重要因素,因此我们在后续的研究中将考虑碰撞引起的变形.参考文献(R eferences):[1]Zhang L J,Huang X,K im Y J,et al.D2Plan:efficientcollision2free pat h computation for part removal and disassembly[J].Computer2Aided Design and Applications, 2008,5(1Π4):1212[2]Figueiredo M,Feenando T.An efficient parallel collisiondetection algorit hm for virtual prototype environment s[C]ΠΠProceedings of t he10t h International Conference on Parallel and Distributed Systems,Newport Beach,2004:2492256 [3]G ovindaraju N K,Redon S,Lin M C,et al.CULL IDE:interactive collision detection between complex models in large environment s using graphics hardware[C]ΠΠComputerGraphics Proceedings,Annual Conference Series,ACM SIGGRAP H,San Diego,2003:25232[4]Liu Xiaoping,Weng Xiaoyi,Chen Hao,et al.An improvedalgorit hm for octree2based exact collision detection[J].Journal of Computer2Aided Design&Computer Graphics, 2005,17(12):263122635(in Chinese)(刘晓平,翁晓毅,陈 皓,等.运用改进的八叉树算法实现精确碰撞检测[J].计算机辅助设计与图形学学报,2005,17(12):263122635)[5]Wu Dianliang,Zhu Hongmin,Fan Xiumin.A parallelcollisions detection algorit hm for interactive assembling operation in virtual environment[J].Journal of Shanghai JiaoTong University,2008,42(10):164021645(in Chinese)(武殿梁,朱洪敏,范秀敏.面向复杂产品的交互虚拟装配操作的并行碰撞检测算法[J].上海交通大学学报,2008,42(10):164021645)[6]Zheng Y i,Ning Ruxin,Liu Jianhua,et al.Research on fastcollision detection met hod in virtual assembly environment[J].Journal of System Simulation,2005,17(9):216722170(in Chinese)(郑 轶,宁汝新,刘检华,等.虚拟装配环境下快速碰撞检测方法的研究[J].系统仿真学报,2005,17(9):216722170)208计算机辅助设计与图形学学报 第22卷。

虚拟设计中碰撞检测技术的研究

虚拟设计中碰撞检测技术的研究

文章编 号 :6 3— 0 7 2 1 ) 3— 12— 5 1 7 2 5 (0 2 0 0 8 0
虚 拟 设 计 中碰 撞 检 测 技 术 的 研 究
王志芳 , 张荣 国 , 富萍 刘 煜。 李 ,
(. 1 太原科技 大学计算机 科 学与技 术 学院 , 太原 0 0 2 ;. 3 0 4 2 山西省 第二建 筑工程 公 司 , 太原 0 0 1 ; 3 0 3
碰撞检 测技 术 在虚拟 设计 、 算 机 图形 学、 计 C D C M、 径规 划等 领域 中有 着 广泛 的应 用 , A 利 用 LnC n y算 法 进 再 i. a n 行 精 细 检 测 , 成 算 法 ; R N T O P 等 利 用 完 O E R P A B A B包 围体数 据结构 实现 了时 序一致 性 层次 包 围
于物 体空 间 的 R PD方法 先 采用 方 向包 围盒 O B AI B
收 稿 日期 :0 20 —0 2 1 -11
1 粗 测 阶段
基金项 目: 国家 自然科学基金资助项 目( 17 13 ; 50 5 1 ) 山西省教育厅资助项 目(0 104 ; 2 112 ) 太原科技大学青年基金(0 904 20 3 1 ) 作者简介 : 王志芳 (9 0一) 女 , 18 , 硕士 , 主要研究方 向为计算机 图形学与辅助设计 。
数 , 高 了路 径 规 划 速 度 ; 术 海 等 利 用 本 体 构 提 张 建产 品信 息模型 , 据机 械 产 品 的特 点构 建零 件 本 根
体 碰撞检 测 , 而文 章 并没 有 考 虑物 体边 界 体 积 的 然
优 选性 , 速度方 面也 没有做 出过 多 的说 明。 文献 [ 0 给 出 了刚 体 碰撞 检测 在 虚 拟 现 实 应 1] 用 中 的实 现 方 法 ; 献 [ 1 的 系 统 采 用 决 策 分 类 文 1]

简述碰撞检测的原理及应用

简述碰撞检测的原理及应用

简述碰撞检测的原理及应用1. 碰撞检测的概念和定义•碰撞检测是计算机图形学和物理模拟领域中的一个重要技术。

•它用于判断两个或多个物体是否发生碰撞,以及计算碰撞的位置、法向量、碰撞反应等信息。

•在计算机游戏、虚拟现实、物理仿真、机器人等领域都有广泛的应用。

2.碰撞检测的原理•碰撞检测的原理可以分为离散和连续两种方法。

2.1 离散碰撞检测•离散碰撞检测是通过检查物体的离散位置来判断是否发生碰撞。

•其中最简单的方法是包围盒碰撞检测,即将物体用最小立方体包围起来,通过检测这些包围盒的位置关系来判断是否碰撞。

•还有其他的离散碰撞检测算法,如分离轴定理、包围球碰撞检测等。

2.2 连续碰撞检测•连续碰撞检测是通过检查物体在连续时间间隔内的运动轨迹来判断是否发生碰撞。

•常用的连续碰撞检测算法有扫描线法、时间步进法、线性插值法等。

3.碰撞检测的应用•碰撞检测在游戏开发中起着至关重要的作用。

•在游戏中,碰撞检测可以用于角色与障碍物的碰撞、子弹与敌人的碰撞、玩家与玩家之间的碰撞等等。

•此外,在虚拟现实和物理仿真领域中,碰撞检测也被广泛应用,例如模拟物理碰撞、机器人路径规划等。

4. 碰撞检测的优化方法•碰撞检测是一个计算复杂度相对较高的任务,为了提高碰撞检测的效率,可以采用一些优化方法。

•一种常用的优化方法是空间分割结构,如包围盒层次、八叉树、四叉树等,用于减少碰撞检测的计算量。

•另外还可以采用粗略检测和细致检测相结合的方法,即首先进行快速的粗略检测,再对可能发生碰撞的物体进行细致的检测。

5. 碰撞检测的发展趋势•随着计算机硬件的不断发展和计算能力的增强,碰撞检测的技术也在不断进步。

•目前很多游戏引擎已经集成了强大的碰撞检测功能,如Unity3D、Unreal Engine等。

•同时,机器学习和深度学习等人工智能技术的发展也为碰撞检测提供了新的思路和方法。

结论•碰撞检测作为计算机图形学和物理模拟领域中的重要技术,具有广泛的应用前景。

如何在三维度模型中实现精确的碰撞检测?

如何在三维度模型中实现精确的碰撞检测?

如何在三维度模型中实现精确的碰撞检测?一、使用优化的算法提高碰撞检测效率在三维模型中实现精确的碰撞检测,首先需要考虑的是如何提高算法的效率。

采用优化的算法可以大大减少运算时间,提高碰撞检测的速度和准确性。

1. 采用包围盒碰撞检测算法包围盒碰撞检测算法是一种常用的优化方法,它通过将三维模型包裹在一个简单的几何体中,如立方体或球体,来进行碰撞检测。

这样可以减少碰撞检测所需的计算量,提高检测效率。

2. 利用空间划分算法加速碰撞检测空间划分算法是另一种常用的优化方法,它将三维空间划分为多个较小的子空间,然后只对与当前模型有可能碰撞的子空间进行检测。

这样可以减少碰撞检测的范围,提高检测效率。

二、使用精确的碰撞检测算法提高检测准确性除了提高检测效率,实现精确的碰撞检测还需要考虑算法的准确性。

以下是一些精确的碰撞检测算法,可以用来增加模型的真实感和细节。

1. 边界球碰撞检测算法边界球碰撞检测算法是一种高精度的算法,它通过将三维模型包裹在一个球体中,判断两个球体是否相交来进行碰撞检测。

这种算法可以更准确地检测到不规则形状的碰撞。

2. 分离轴定理碰撞检测算法分离轴定理碰撞检测算法是一种基于几何投影的算法,它通过计算模型在不同轴上的投影区间是否重叠来进行碰撞检测。

这种算法可以处理复杂的几何体,并且具有较高的准确性。

三、综合运用不同的算法提高碰撞检测效果为了实现更精确的碰撞检测,我们可以综合运用不同的算法,结合包围盒、空间划分、边界球以及分离轴定理等优化算法来提高检测的效率和准确性。

1. 组合包围盒和分离轴定理算法对于形状比较复杂的模型,可以先使用包围盒算法进行初步的碰撞检测,排除掉绝大多数不会发生碰撞的情况。

然后再对可能发生碰撞的模型,采用分离轴定理算法进行进一步的检测,提高检测的准确性。

2. 组合空间划分和边界球算法对于具有大量模型的场景,可以先利用空间划分算法将场景划分为多个子空间,然后对每个子空间内的模型采用边界球算法进行快速碰撞检测。

大规模虚拟环境下复杂物体的碰撞检测的开题报告

大规模虚拟环境下复杂物体的碰撞检测的开题报告

大规模虚拟环境下复杂物体的碰撞检测的开题报告一、研究背景随着虚拟现实技术的发展,大规模虚拟环境的应用越来越广泛。

在虚拟环境中,复杂物体的碰撞检测是一个重要的问题。

例如,在虚拟游戏中,玩家角色与周围物体的碰撞检测决定了游戏的流畅度和真实度。

在虚拟现实培训和模拟中,复杂物体的碰撞检测是确保训练和模拟的准确性和安全性的关键因素。

二、研究内容本研究旨在在大规模虚拟环境下实现复杂物体的碰撞检测。

具体来说,研究内容包括以下几个方面:1.制定有效的碰撞检测算法:在大规模虚拟环境下,考虑到要检测的物体数量庞大且复杂,需要设计高效的碰撞检测算法,确保在虚拟环境中物体的移动和碰撞过程得以顺利进行。

2.优化碰撞检测的性能:在虚拟环境中,物体的移动和碰撞检测是实时进行的,需要保证检测速度和准确性。

本研究将探索一些优化方法,如使用GPU进行并行计算,以提高碰撞检测的性能。

3.针对不同的虚拟环境场景设计不同的碰撞检测方案:不同的场景需要不同的碰撞检测方案。

本研究将研究如何根据不同的场景进行灵活的碰撞检测方案的设计。

三、研究意义本研究旨在解决大规模虚拟环境下复杂物体碰撞检测的问题,具有重要的理论和应用价值。

其可以应用于虚拟游戏、虚拟现实培训和模拟等领域,提高虚拟环境中物体移动和碰撞检测的效率和准确性,进一步提高虚拟环境的真实度和使用价值。

四、研究方法本研究将采用以下方法:1.设计碰撞检测算法:分析常见的碰撞检测算法,针对大规模虚拟环境下需求,设计高效的碰撞检测算法。

2.实验验证:根据不同的虚拟场景,利用所设计的算法进行碰撞检测实验。

实验主要通过模拟虚拟物体的运动和碰撞等行为,验证所设计的碰撞检测算法的效果。

3.性能优化:对设计的算法进行性能分析,提出针对公共硬件环境(如GPU、CPU等)的优化策略,通过提高计算效率和计算准确率来优化算法的性能。

五、论文结构本研究将分为以下几个章节:第一章绪论:介绍本研究背景、研究内容、研究意义以及论文结构。

虚拟手术中实时碰撞检测技术

虚拟手术中实时碰撞检测技术

虚拟手术中实时碰撞检测技术研究彭 磊 张裕飞 王秀娟(泰山医学院 信息工程学院 山东 泰安 271016)摘 要: 碰撞检测是虚拟手术的关键技术,为提高检测速度,满足系统实时性的要求,提出空间剖分和层次包围盒相结合的方法。

使用八叉树表示法对虚拟场景进行空间剖分,在叶节点构建层次包围盒。

进行碰撞检测时属于不同八叉树节点的几何元素不会相交,否则使用层次包围盒算法继续进行检测,对于有可能相交的几何元素再进行精确相交检测。

关键词: 虚拟手术;碰撞检测;空间剖分;层次包围盒中图分类号:TP391.9 文献标识码:A 文章编号:1671-7597(2012)1120029-02进行碰撞检测时从八叉树的根节点开始,计算两几何元素0 引言是否属于同一节点,如果不属于同一节点则不相交,如果属于虚拟手术是集医学、生物力学、材料学、计算机图形学、同一节点,递归的到下一级节点进行检查,直到发现两几何元虚拟现实等诸多学科为一体的交叉研究领域。

虚拟手术在医学素属于同一叶节点,则需要进一步使用层次包围盒进行检查。

中的应用主要包括:手术计划与过程模拟、术中导航与监护、 2 层次包围盒手术教学与训练等。

碰撞检测是虚拟手术系统中的关键技术,贯穿于虚拟手术的整个过程。

对于八叉树的每个叶节点包含的几何元素,建立层次包围虚拟手术系统中的对象根据材质可分为刚体组织和软件组盒(Bounding Volume Hierarchy ,BVH )。

相对于单纯的层次织。

骨骼、手术器械等属于刚体组织,而人体的许多器官如肌包围盒技术,使用空间剖分与层次包围盒相结合的方法进行碰肉、血管、肝脏等属于软体组织。

以往大部分碰撞检测的研究撞检测,构建的层次树规模更小,计算量更少。

层次包围工作都是针对刚体对象的。

与刚体相比较,软体组织由于其特殊的物理性质,在外力或某些操作的作用下会发生几何形状、位置甚至数量上的变化,因此基于软体组织的碰撞检测需要更详细的信息和更多的处理。

关于碰撞问题的解决

关于碰撞问题的解决

碰撞检测问题及解决在Unity3D中,碰撞可以形象理解为现实世界中的碰撞,并且由于物理引擎的模拟,使碰撞物体也会如现实世界一样产生相同的碰撞结果,如运动轨迹的改变、反弹等,总之碰撞的结果为产生我们不期望的物体运动行为。

为了避免产生这种碰撞,就需要进行碰撞检测。

碰撞检测实现一碰撞检测的原理是在物体移动的前方放置一个虚拟物体,它与物体进行同步运动。

如果有障碍,则要先与虚拟物体碰撞。

一旦检测到虚拟物体的碰撞,则运动物体停止移动。

实现时则是使用虚拟射线来进行检测,检测时使用到的api分别如下截图:图- 1 Physic.Raycast射线扫描API碰撞检测的具体实现如下截图:图- 2碰撞检测碰撞检测的调用实现如下截图:图- 3调用碰撞的实现实现一的问题及分析以上实现经过分析,原理想法上没问题,就是每隔一个固定频率后进行射线碰撞检测。

但是效果上却总是会在一些偶然的情况下发生碰撞,具体情形如下截图:图- 4碰撞导致不期望的运动Update受制于FPS问题经过分析,发现update虽然是每帧执行的,但是Unity3D的FPS——每秒的帧数,是变化的,它的值取决于渲染场景的面数;渲染速度又受机器的性能特别是CPU、内存、显卡不同而表现很大的差异。

如果场景中渲染的面数太多,并且机器配置不够好,可能导致FPS 很低,从而使渲染的两帧之间时间间隔很大,而在这个间隔内,碰撞已经发生,从而出现了上面的碰撞现象。

对于物理运动中需要进行固定频率的动作,Unity3D提供了FixedUpdate方法,这个频率是系统参数,可以更改。

因此,我们使用FixedUpdate来替换Update可解决此问题。

射线检测问题如图- 2碰撞检测实现中,虽然多加了几条射线,但毕竟只是物体中的个别点。

在我们的场景中,物体都是规则的且正常运动规律显著,所以只需要把几个特征点找到然后分别进行射线检测即可。

但是这个毕竟是存在缺陷的,如果能够对物体整个面进行检测,那就完美了。

3d碰撞检测公式_解释说明以及概述

3d碰撞检测公式_解释说明以及概述

3d碰撞检测公式解释说明以及概述1. 引言1.1 概述在计算机图形学和虚拟现实领域中,碰撞检测是一个关键的概念。

它用于判断模型、物体或粒子之间是否发生了碰撞,并在碰撞发生时进行相应的处理。

而3D 碰撞检测则是在三维空间中进行碰撞检测的一种技术。

1.2 文章结构本文将以以下方式组织内容:首先介绍3D碰撞检测的定义和应用领域。

接着,我们将详细解释常用的3D碰撞检测算法和公式,包括其基本原理和数学基础。

最后,我们将通过实际案例和应用示例来分析这些算法和公式在实践中的应用效果。

1.3 目的本文旨在提供对于3D碰撞检测公式的全面解释说明并概述相关内容。

希望通过阐述其基本原理、常用算法以及具体应用案例,读者能够深入理解3D碰撞检测的工作原理及其在各个领域中的重要性。

同时,我们也致力于探讨未来可能的研究方向和发展趋势,以期推动该领域的发展和创新。

2. 3D碰撞检测公式解释说明:2.1 什么是3D碰撞检测:在计算机图形学和游戏开发中,3D碰撞检测是一种用于判断物体是否相交或触碰到其他物体的技术。

它可以应用在虚拟现实、模拟仿真、游戏物理引擎等领域。

2.2 碰撞检测的应用领域:3D碰撞检测广泛应用于各种领域,例如电子游戏中的角色碰撞、场景中物体的重叠、交通仿真中车辆的碰撞等。

它为模拟真实世界中的物体行为提供了必要的信息,并且对于增强用户体验和提升应用效果至关重要。

2.3 常用的3D碰撞检测算法和公式:在进行3D碰撞检测时,常用的方法包括包围盒检测、距离函数法、光线投射法等。

其中,包围盒检测是一种简单有效的方法,它利用一个立方体或长方体将物体包围起来,并通过比较边界框之间是否存在重叠来判断是否碰撞。

距离函数法则通过计算两个物体之间的最短距离,从而判断是否相交。

而光线投射法则利用射线与物体表面的交点来进行碰撞检测。

在碰撞检测中,常用的数学公式包括向量点乘、向量叉乘、矩阵变换等。

向量点乘可以用来计算两个向量之间的夹角和投影关系,从而判断两个物体之间的相对方位。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

都不是叶节点
撞代理。直接的碰撞检测是依据几何体的外形进行
5: if( Vo lum e( A ) > Vo lum e ( B ) ) / /为了获得更 的, 如果几何体过于复杂, 碰撞检测效率将变得很低。
好的性能
碰撞代理利用一个简单的几何体, 如 box、sphere作为
6: fo r每个子节点 CA# AC
相交测试, 尽管这种方法可以得到正确的结 果, 但当 围盒、固定方向凸包等。层次包围盒方法应用得较为
模型的复杂度增大时, 它的计算量很大, 测试将十分 广泛, 适用复杂环境中的碰撞检测。 缓慢。
碰撞检测一直是虚拟交互技术研究的关键问题。
许多学者在碰撞检测方面进行了广泛、深入的研究,
并提出了多碰撞检测的算法。现有的碰撞检测算法
碰撞检测的边界。利用碰撞代理作碰撞检测要快得
7: F indF irstH itCD( CA, B) )
多。使用碰撞代理 只要在 proxy 域 中指定一 个能将
8: e lse
ch ildren 域中所 有的节点 包围的简 单几何体 就可以
9: fo r每个子节点 CB# BC
了。
10: F indF irstH itCD ( A, CB) ) 11: else if( isL eaf( A ) and isNotLeaf( B) ) / /A 是叶
碰撞关系的建立称为碰撞检测 ( Co llision Detect ion )。 图。大多数层次结构都采用自上而下的方式, 即首先
碰撞检测是虚拟场景实时漫游和人机交互必不可少 建立模型的包围盒, 作为包围盒 树的根节点; 然后按 的一部分, 是仿真物体间进行交互的先行步骤 [ 2] 。 照一定的规则将模型分成两个或者多个部分, 建立每
3: if( overlap( TA, TB) ) TRUE;
sion的 children域中, 将 co llide设为 false即可。在必
4: e lse if( isNo tLeaf( A ) and isNotL eaf( B ) ) / /A、B 须保留碰撞检测的情况下, 可以对复杂的节点使用碰
第 17卷 第 6期 2009年 11月
河南机电高等专科学校 学报 Jou rn al of H enan M echan ical and E lectrical E ngineering C ollege
V o .l 17 ! . 6 N ov. 2009
谈虚拟现实中的碰撞检测问题*
钟帅
( 扬州职业大学, 江苏 扬州 225009)
为 EXAM INE 时, 可以将场景中的物体的碰撞检测关
1: if( isL ea f( A ) and isL eaf( B ) ) / /A、B 都是叶节 闭。浏览方式为 WALK 时, 浏览者不能离开地面, 对

于位置较高的物体也应该关闭 碰撞检测。要关闭一
2: fo r每一个三角形对 TA # AC 并且 TB# BC 个几何节点的碰撞检 测, 可以将几何节点放 入 Co lli
过程中测试 物体的包 围盒对是 否发生碰 撞的时 间。
例如测试手术刀的包围盒是否与被切割组织的包围
盒是否发生交叠的时间。交叠 测试时间是实时检测
效率的决定因素, 是衡量层次包围盒法进行碰撞检测
性能优劣的关键。交叠测试的 时间可以由如下公式
( 1) 来计算 [ 4] :
Tt = N v ∀ Cv + Np ∀ Cp + N u ∀ Cu
公式 ( 1)
如式 ( 1) 中, Tt 是交叠测试的总时间, Nv 是需要
参与测试的包围盒对的总数目; Cv 是测试一对包围盒
需要的时间; Np 是待检测包围盒对数; Cp 是检测一
ቤተ መጻሕፍቲ ባይዱ
对包围盒是否发生碰撞的时间; Nu 是发生形变的包围 盒数目; Cu 是更新一个发生形变的包围盒的平均时
间 (如图 2)。我们可以看到, 对于固定的待检测对
有接触后, 才能进一步仿真拿起一个杯子的情景。因 置关系进一步计算, 即进行碰撞的精确检测。采用包
此 VR 中动态物体与静态物体之间或动态物体与动态 围盒进行碰撞检测的最大好处是可以实现快速碰撞
物体之间的交互基础是碰撞检测。在虚拟现实技术 检测, 包围盒树可以按照自下而上的方式或者自上而
中, 把这种用户与虚拟物体或虚拟物体 之间的接触、 下的方式构造, 这要取决于包围盒的种类和算法的意
主要为两大类: 层次包围盒法和空间分解法。
* 收稿日期: 2009 04 16 作者简介: 钟帅 ( 1981 ), 男, 江苏泰州人, 助教, 本科, 主要从事计算机应用研究。
1 07
河南机电高等专科学校学报
2009年 6期
图 1 包装盒结构层次示例
2. 2 空间分解法 空间分解法是将整个虚拟 空间划分成相等体积
对象的包围盒树中各结点所对应的 OBB 包围盒之间 的重叠测试, 尽可能早地排除所有不可能相交的基本 图元对, 仅对有可能相交的基本图元对进行精确的相 交测试。因此, 包围盒之间的交叠测试的速度直接影 响到碰撞检测的速度。
OBB 包围盒间的重叠测试是基于分离轴理论的。 若一对 OBB 间存在一 条分离轴, 则可 以判定这两个 OBB 不重叠。对任何两个不相交的凸三维多面体, 其 分离轴要么垂直于任何一个多面体的某一个面, 要么 同时垂直于每个多面体的某一条边。因此, 对于一对 OBB, 只需测试 15条可能是分离轴的轴 (每个 OBB的 3个面方向再加上每个 OBB 的 3 个边方向的两两组 合 ), 只要找到一条这样的分离轴, 就可以判定这两个 OBB 是不 重叠 的, 如果 这 15 条 轴都 不能 将这 两个 OBB 分离, 则它们是重叠的 [ 5 ] , 如图 3, L 是 OBB 包围 盒 A和 B 的分离轴。
虽然在任意几何体之间进行碰撞检测时, 使用层次包
究 [ J]. 软件学报, 2001, ( 7) .
围盒结构的效率较高, 但它仍旧有一个较大的问题就 [ 3]刘惠义, 邱云, 张春红. 虚拟 视景交 互漫游 系统的 实时碰 撞检 测方
是内存需求。随着模型复杂度的加大, 层次包围盒树 所需要的内存空间也迅速增加。减少内存需求的常
的单元格, 只对占据同一单元格或相邻单元格的几何 对象进行相交测试。首先利用空间区域划分, 迅速剔 除不相邻的物体, 这一点能有效地解决时空相关性对 存在高速运动物体的情况不适用的问题, 同时找出可 能发生碰撞的物体对; 然后在物体的内部结构中增加 一个链表, 用于存放与此物体相邻的需要与其进行碰 撞检测的其他物体; 在碰撞检测的时候, 设置一个阈 值, 这个阈值可以使得在最有效的情况下利用时空相 关性来检测碰撞。比较典型的方法有 K - D 树、八叉 树和 BSP 树、四面体网、规则网等。空间分解法通常 适用于稀疏的环境中分布比较均匀的几何对象的碰 撞检测 [ 3] 。
5 结束语
节点, B 不是
虚拟现实场景 的碰撞检测是虚拟现实系统的关
12: for每个子节点 CB# BC
键问题, 在虚拟场景中的实现有效的碰撞检测也是当
13: F indF irstH itCD ( CB, A ) )
今虚拟现实研究的一个重点 和热点。碰撞检测应用
14: else
范围相当广泛, 特别是在各种仿 真模拟试验中, 起着
3 包围盒树的交叠测试
3. 1 交叠测试的时间 使用包围盒法进行碰撞检 测的时间主要由三部
分组成: 包围盒构造时间 T c, 包围盒更新时间 T r, 交叠 测试时间 T t。交叠测试时间 T t是指在实时碰撞检测
图 2 层次包围盒的 交叠测试
3. 2 交叠测试的算法 使用层次 OBB进行碰撞检测, 其目的是通过两个
用方法有两种, 一是让叶节点包含多个图元, 这样就 可以使 BV树的深度比完全树的深度小; 第二种方法 是减少每个内部节点需要的字节数和每个叶节点需
法研究 [ J]. 河海大学学报 ( 自然科学版 ). 2005, ( 3) . [ 4] 丁佳. 大型复杂场景中快速碰 撞检测技术 的研究 [ D ] . 成都电 子科
15: for每个子节点 CA# AC
十分重要的作用。而精确的结果往往需要引入连续
16: F indF irstH itCD ( CA, B) ) / /B是叶节点, A 不 碰撞检测算法。如何加速连续碰撞检测, 实现快速精

确的碰撞仿真模拟成为众多研究者关注的领域之一。
17: return FALSE;
实又可称 为人 工现 实 ( A rtificia l R ea lity )、虚 拟环 境 ( V irtua l Environm ent) 等。
有效的方法。它的基本思想是利用体积略大而几何
特征简单的包围盒来近似地描述复杂的几何对象 (如 图 1) [ 2] , 由于包围盒形状 比较简单, 计算 容易, 一旦 发现包围盒没有碰撞就可以排除两物体之间的碰撞,
的子集必定不相交, 从而不需要对子集中的元素作进
在 VRM L 中默认情况下, 碰撞 检测是打开的, 为
一步的相交测试。其伪代码如下:
了提高渲染的速度, 对于用户没有可能接触到的几何
F indF irstH itCD ( A, B )
节点可以关闭碰撞检测。如浏览者的浏览方式被定
Return( { TRUE, FALSE} )
象, Nv 是一个定值。提高包围盒的复杂度, 也就是加 节点遍历第一个对象的包围盒树, 如果也能到达该对
强包围盒的紧密性能使得 Cv 增大, 而相反减小了 N p。 象的叶节点, 则进一步进行三角形的相交测试。如果
10 8
钟帅: 谈虚拟现实中的碰撞检测问题
两个节点上的包围盒不相交, 则它们所包围的三角形 要的字节数。
相关文档
最新文档