碰撞检测

碰撞检测
碰撞检测

原文地址:https://www.360docs.net/doc/4f6465109.html,/Program/Visual/3D/3DCollision.mht

碰撞

1.碰撞检测和响应

碰撞在游戏中运用的是非常广泛的,运用理论实现的碰撞,再加上一些小技巧,可以让碰撞检测做得非常精确,效率也非常高。从而增加游戏的功能和可玩性。

2D碰撞检测

2D的碰撞检测已经非常稳定,可以在许多著作和论文中查询到。3D的碰撞还没有找到最好的方法,现在使用的大多数方法都是建立在2D基础上的。

碰撞检测

碰撞的检测不仅仅是运用在游戏中,事实上,一开始的时候是运用在模拟和机器人技术上的。这些工业上的碰撞检测要求非常高,而碰撞以后的响应也是需要符合现实生活的,是需要符合人类常规认识的。游戏中的碰撞有些许的不一样,况且,更重要的,我们制作的东西充其量是商业级别,还不需要接触到纷繁复杂的数学公式。

最理想的碰撞,我想莫过于上图,完全按照多边形的外形和运行路径规划一个范围,在这个范围当中寻找会产生阻挡的物体,不管是什么物体,产生阻挡以后,我们运动的物体都必须在那个位置产生一个碰撞的事件。最美好的想法总是在实现上有一些困难,事实上我们可以这么做,但是效率却是非常非常低下的,游戏中,甚至于工业中无法忍受这种速度,所以我们改用其它的方法来实现。

最简单的方法如上图,我们寻找物体的中心点,然后用这个中心点来画一个圆,如果是一个3D的物体,那么我们要画的就是一个球体。在检测物体碰撞的时候,我们只要检测两个物体的半径相加是否大于这两个物体圆心的实际距离。

这个算法是最简单的一种,现在还在用,但是不是用来做精确的碰撞检测,而是用来提

高效率的模糊碰撞检测查询,到了这个范围以后,再进行更加精密的碰撞检测。一种比较精密的碰撞检测查询就是继续这种画圆的思路,然后把物体细分,对于物体的每个部件继续画圆,然后再继续进行碰撞检测,直到系统规定的,可以容忍的误差范围以后才触发碰撞事件,进行碰撞的一些操作。

有没有更加简单的方法呢?2D游戏中有许多图片都是方方正正的,所以我们不必把碰撞的范围画成一个圆的,而是画成一个方的。这个正方形,或者说是一个四边形和坐标轴是对齐的,所以运用数学上的一些方法,比如距离计算等还是比较方便的。这个检测方法就叫AABBs(Axis-aligned Bounding Boxes)碰撞检测,游戏中已经运用的非常广泛了,因为其速度快,效率高,计算起来非常方便,精确度也是可以忍受的。

做到这一步,许多游戏的需求都已经满足了。但是,总是有人希望近一步优化,而且方法也是非常陈旧的:继续对物体的各个部分进行细分,对每个部件做AABB的矩形,那这个优化以后的系统就叫做OBB系统。虽然说这个优化以后的系统也不错,但是,许多它可以运用到的地方,别人却不爱使用它,这是后面会继续介绍的地方。

John Carmack不知道看的哪本书,他早在DOOM中已经使用了BSP系统(二分空间分割),再加上一些小技巧,他的碰撞做得就非常好了,再加上他发明的castray算法,DOOM已经不存在碰撞的问题,解决了这样的关键技术,我想他不再需要在什么地方分心了,只要继续研究渲染引擎就可以了。(Windows游戏编程大师技巧P392~P393介绍)(凸多边形,多边形退化,左手定律)SAT系统非常复杂,是SHT(separating hyperplane theorem,分离超平面理论)的一种特殊情况。这个理论阐述的就是两个不相关的曲面,是否能够被一个超平面所分割开来,所谓分割开来的意思就是一个曲面贴在平面的一边,而另一个曲面贴在平面的另一边。我理解的就是有点像相切的意思。SAT是SHT的特殊情况,所指的就是两个曲面都是一些多边形,而那个超平面也是一个多边形,这个超平面的多边形可以在场景中的多边形列表中找到,而超平面可能就是某个多边形的表面,很巧的就是,这个表面的法线和两个曲面的切面是相对应的。接下来的证明,我想是非常复杂的事情,希望今后能够找到源代码直接运用上去。而我们现在讲究的快速开发,我想AABB就足以满足了。

3D碰撞检测

3D的检测就没有什么很标准的理论了,都建立在2D的基础上,我们可以沿用AABB或者OBB,或者先用球体做粗略的检测,然后用AABB和OBB作精细的检测。BSP技术不流行,但是效率不错。微软提供了D3DIntersect函数让大家使用,方便了许多,但是和通常一样,当物体多了以后就不好用了,明显的就是速度慢许多。

碰撞反应

碰撞以后我们需要做一些反应,比如说产生反冲力让我们反弹出去,或者停下来,或者让阻挡我们的物体飞出去,或者穿墙,碰撞最讨厌的就是穿越,本来就不合逻辑,查阅了那么多资料以后,从来没有看到过需要穿越的碰撞,有摩擦力是另外一回事。首先看看弹性碰撞。弹性碰撞就是我们初中物理中说的动量守恒。物体在碰撞前后的动量守恒,没有任何能量损失。这样的碰撞运用于打砖块的游戏中。引入质量的话,有的物体会是有一定的质量,这些物体通常来说是需要在碰撞以后进行另外一个方向的运动的,另外一些物体是设定为质量无限大的,这些物体通常是碰撞墙壁。

当物体碰到质量非常大的物体,默认为碰到了一个弹性物体,其速度会改变,但是能量不会受到损失。一般在代码上的做法就是在速度向量上加上一个负号。

绝对的弹性碰撞是很少有的,大多数情况下我们运用的还是非弹性碰撞。我们现在玩的大多数游戏都用的是很接近现实的非弹性碰撞,例如Pain-Killer中的那把吸力枪,它弹出去的子弹吸附到NPC身上时的碰撞响应就是非弹性碰撞;那把残忍的分尸刀把墙打碎的初始算法就是一个非弹性碰撞,其后使用的刚体力学就是先建立在这个算法上的。那么,是的,如果需要非弹性碰撞,我们需要介入摩擦力这个因素,而我们也无法简单使用动量守恒这个公式。

我们可以采取比较简单的方法,假设摩擦系数μ非常大,那么只要物体接触,并且拥有一个加速度,就可以产生一个无穷大的摩擦力,造成物体停止的状态。

基于别人的引擎写出一个让自己满意的碰撞是不容易的,那么如果自己建立一个碰撞系

统的话,以下内容是无法缺少的:

?一个能够容忍的碰撞系统

–一个从概念上可以接受的物理系统

–质量

–速度

–摩擦系数

–地心引力

碰撞检测

二维碰撞检测算法 碰撞检测(Collision Detection,CD)也称为干涉检测或者接触检测,用来检测不同对象之间是否发生了碰撞,它是计算机动画、系统仿真、计算机图形学、计算几何、机器人学、CAD\ CAM等研究领域的经典问题。 碰撞物体可以分为两类:面模型和体模型。面模型是采用边界来表示物体,而体模型则是使用体元表示物体。面模型又可根据碰撞后物体是否发生形变分为刚体和软体,刚体本身又可根据生成方式的不同分为曲面模型和非曲面模型。目前对于碰撞的研究多集中于面模型的研究,因为体模型是一种三维描述方式,对它进行碰撞检测代价较高。而在面模型的研究中,对刚体的研究技术更为成熟。 下面列举几种常用的碰撞检测技术: 1:包围盒(bounding box)是由Clark提出的,基本思想是使用简单的几何形体包围虚拟场景中复杂的几何物体,当对两个物体进行碰撞检测时,首先检查两个物体最外层的包围盒是否相交,若不相交,则说明两个物体没有发生碰撞,否则再对两个物体进行检测。基于这个原理,包围盒适合对远距离物体的碰撞检测,若距离很近,其物体之间的包围盒很容易相交,会产生大量的二次检测,这样就增大了计算量。 包围盒的类型主要有AABB(Aligned Axis Bounding Box)沿坐标轴的包围盒、包围球、OBB(Oriented Bounding Box)方向包围盒和k-DOP(k Discrete Orientation Polytopes)离散方向多面体等。 AABB是包含几何对象且各边平行于坐标轴的最小六面体,两个AABB包围盒相交当且仅当它们三个坐标轴上的投影均重叠,只要存在一个方向上的投影不重叠,那么它们就不相交。AABB间的相交测试和包围体的更新速度比其他算法

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

虚拟手术中实时碰撞检测技术研究 彭 磊 张裕飞 王秀娟 (泰山医学院 信息工程学院 山东 泰安 271016) 摘 要: 碰撞检测是虚拟手术的关键技术,为提高检测速度,满足系统实时性的要求,提出空间剖分和层次包围盒相结合的方法。使用八叉树表示法对虚拟场景进行空间剖分,在叶节点构建层次包围盒。进行碰撞检测时属于不同八叉树节点的几何元素不会相交,否则使用层次包围盒算法继续进行检测,对于有可能相交的几何元素再进行精确相交检测。 关键词: 虚拟手术;碰撞检测;空间剖分;层次包围盒 中图分类号:TP391.9 文献标识码:A 文章编号:1671-7597(2012)1120029-02 进行碰撞检测时从八叉树的根节点开始,计算两几何元素0 引言 是否属于同一节点,如果不属于同一节点则不相交,如果属于虚拟手术是集医学、生物力学、材料学、计算机图形学、同一节点,递归的到下一级节点进行检查,直到发现两几何元虚拟现实等诸多学科为一体的交叉研究领域。虚拟手术在医学素属于同一叶节点,则需要进一步使用层次包围盒进行检查。 中的应用主要包括:手术计划与过程模拟、术中导航与监护、 2 层次包围盒 手术教学与训练等。碰撞检测是虚拟手术系统中的关键技术,贯穿于虚拟手术的整个过程。 对于八叉树的每个叶节点包含的几何元素,建立层次包围虚拟手术系统中的对象根据材质可分为刚体组织和软件组盒(Bounding Volume Hierarchy ,BVH )。相对于单纯的层次织。骨骼、手术器械等属于刚体组织,而人体的许多器官如肌包围盒技术,使用空间剖分与层次包围盒相结合的方法进行碰肉、血管、肝脏等属于软体组织。以往大部分碰撞检测的研究撞检测,构建的层次树规模更小,计算量更少。层次包围工作都是针对刚体对象的。与刚体相比较,软体组织由于其特殊的物理性质,在外力或某些操作的作用下会发生几何形状、位置甚至数量上的变化,因此基于软体组织的碰撞检测需要更详细的信息和更多的处理。 最简单的碰撞检测方法是对场景中的几何元素进行两两相2交测试,其时间复杂度为O(n ),虽然这种方法可以得到正确的结果,但是当场景中的几何模型稍微增多些,其实时性便无法满足实际的需求。为了尽可能地减少参与相交测试的几何元素的数量,提高系统的实时性,目前碰撞检测技术使用的主要算法有:层次包围盒法,空间分割法,基于网格剖分的方法[1]。但是这些经典的算法也都存在着构造难度大、紧密性差、相交测试复杂、效率低等缺点。 本文采用空间剖分和层次包围盒相结合的方法,简化了几何信息的表示,进行碰撞检测时可排除明显不相交的几何元素,无法排除的再进行精确相交检测,从而减少计算量,加速碰撞检测速度,提高系统实时性。 1 空间剖分技术 整个虚拟手术的场景空间递归的剖分成若干个网格单元,每一个几何元素都属于某个网格单元,处于同一网格单元内的几何元素才有相交的可能,不在同一网格单元的几何元素一定不会相交。采用八叉树的表示方法进行空间剖分。即包含整个场景的立方体作为八叉树的根节点,立方体的3条棱边分别与x ,y ,z 轴平行。递归的将立方体剖分为8个小块,如图1(a )所示,生成8个子节点,直到达到指定的剖分层次为止,如图1(b )所示,每个叶节点包含有限个几何元素。 图1 八叉树表示法 盒包括包围盒和层次树两种数据结构。 2.1 包围盒 包围盒技术是减少相交检测次数,降低碰撞检测复杂度的一种有效的方法。其基本思想是用几何形状相对简单的封闭表面将一复杂几何元素包裹起来,首先进行包围盒之间的相交测试,排除明显不相交的几何元素,无法排除的几何元素,再进一步进行精确的相交测试,从而达到减少相交测试计算量的目的。常见的包围盒类型有:包围球(Bounding Sphere )、沿坐标轴的包围盒(Axis Aligned Bounding Box ,AABB )、方向包围盒(Oriented Bounding Box ,OBB )。离散方向包围盒(k-Discrete Orientation Polytopes ,k-DOPs )等[2],如图2所示。 图2 包围盒 由于虚拟手术对实时性要求较高,本文选择AABB 型包围盒,AABB 是平行于坐标轴的,包含几何元素的最小正立方体。其优点是:1)易于构建,只需要计算所包含几何元素的顶点的x ,y ,z 坐标的最大值和最小值,存储6个浮点数即可;2)相交测试计算量小,相交测试时只需对两个包围盒在三个坐标轴上的投影分别进行比较,最多6次比较运算即可。 2.2 包围盒层次树 包围盒层次树即包围盒的层次结构,层次树的根节点包含某个八叉树叶节点几何元素的全集,向下逐层分裂,直到每个叶节点表示一个基本几何元素。常用的构建策略有自顶向下和自底向上两种。 自顶向下的方法首先建立根结点,利用基于全集的信息递归地将每个节点分裂为两个或多个子集,直至生成只包含一个 基本图元的叶结点为止,从而建立一棵自顶向下的包围盒层次 ( )八叉树结构 ( )节点的剖分

实验四:基于BSP技术的室内场景渲染和碰撞检测

实验四:基于BSP???碰撞检测 姓名:班级:学号: 一、实验目 掌握BSP?原理; 熟悉Ogr?e中基于S P??法。 二、实验仪器 pc、visua?l studi?o 2010 、实验原理 ?过程 //网上检索B?S P相关 //利 Ogr?e实现基于B SP? 程?实现 ???A PI进行详细说明1、BSP相关? (1)BSP? BSP Trees??B i nar?y Space? Parti?o ning?trees? 二 ? 二 ?。 : ?; 中?光照运算;BSP?预 。 (2)BSP原理? 顺 判定 BSP:二 ?。 ?????? 。 ??定过 ??? 一 ?B S P。 ?上 于 ?件Z Buf?f er?后向前画。

?于?Z B uff?e r?前向后 ? 于后画 ??遮挡而 Z?B uffe?r CUT 而 ?高。 筛选优化 ?进行顺 判?定? 中 ?上?? 过?筛选。 PVS ?减外BSP?过?进行进一 ?筛选优化?。 理?解Po?r tal: ??。Porta?l?于 一? 进行 ? 算 算 ?; 二 法??集合PV?S?候 同 ??? 关 候 ??PVS? 关 ? 。 前 ?D 候?BC?过PVS?测试 A一 ??C U T。

(3)BSP? BSP?流程: 1) ???PVS?信息; 2) ?; 3)??判 ????理; ? 中 判 上级 ?。 4) ????? 理( ) 后 ?理 ; ? 理 ? 后 理? ; 5) ? 判 PVS??中? 进?行。 2、程 实现 ??相API? 详细?说明 多边 A 一 顶 位于多边 组 一 说多边 A位于多边 “前 ”参考左图。 想象一 一 盒 6 组 朝向盒说盒 一“凸多边 ”朝向盒 盒 “凸多边”。 图1.2 让 一 何确定一 图元集合 否一 “凸多边 ” 伪算法 : (1) - 参 : o n –确定一 D 中 相 位置 参考多边 。 –待确定 D 中 。 返 值: 位于多边 哪一边。 功 : 确定一 位于 多边定义 哪一边。

3d碰撞检测技术共30页文档

核心提示:10.3 碰撞检测技术到目前为止,构造的各种对象都是相互独立的,在场景中漫游各种物体,墙壁、树木对玩家(视点)好像是虚设,可以任意从其中穿越。为了使场景人物更加完善,还需要使用碰撞检测技术。 10.3.1 碰撞检测技术简介无论是PC 游戏,还是移动应用, 10.3 碰撞检测技术 到目前为止,构造的各种对象都是相互独立的,在场景中漫游各种物体,墙壁、树木对玩家(视点)好像是虚设,可以任意从其中穿越。为了使场景人物更加完善,还需要使用碰撞检测技术。 10.3.1 碰撞检测技术简介 无论是PC游戏,还是移动应用,碰撞检测始终是程序开发的难点,甚至可以用碰撞检测作为衡量游戏引擎是否完善的标准。 好的碰撞检测要求人物在场景中可以平滑移动,遇到一定高度的台阶可以自动上去,而过高的台阶则把人物挡住,遇到斜率较小的斜坡可以上去,斜率过大则会把人物挡住,在各种前进方向被挡住的情况下都要尽可能地让人物沿合理的方向滑动而不是被迫停下。 在满足这些要求的同时还要做到足够精确和稳定,防止人物在特殊情况下穿墙而掉出场景。

做碰撞检测时,该技术的重要性容易被人忽视,因为这符合日常生活中的常识。如果出现Bug,很容易被人发现,例如人物无缘无故被卡住不能前进或者人物穿越了障碍。所以,碰撞检测是让很多程序员头疼的算法,算法复杂,容易出错。 对于移动终端有限的运算能力,几乎不可能检测每个物体的多边形和顶点的穿透,那样的运算量对手机等设备来讲是不可完成的,所以移动游戏上使用的碰撞检测不可能使用太精确的检测,而且对于3D碰撞检测问题,还没有几乎完美的解决方案。目前只能根据需要来取舍运算速度和精确性。 目前成功商业3D游戏普遍采用的碰撞检测是BSP树及AABB (axially aligned bounding box)包装盒(球)方式。简单地讲,AABB检测法就是采用一个描述用的立方体或者球形体包裹住3D物体对象的整体(或者是主要部分),之后根据包装盒的距离、位置等信息来计算是否发生碰撞,如图10-24所示。 除了球体和正方体以外,其他形状也可以作包装盒,但是相比计算量和方便性来讲还是立方体和球体更方便些,所以其他形状的包装只用在一些特殊场合使用。BSP树是用来控制检测顺序和方向的数据描述。 在一个游戏场景中可能存在很多物体,它们之间大多属于较远位置或者相对无关的状态,一个物体的碰撞运算没必要遍历这些物体,同时还可以节省重要的时间。

碰撞检测技术

碰撞检测技术 碰撞检测技术2011-05-06 23:00 技术--引擎2008-09-05 19:50:55阅读251 10.3碰撞检测技术 到目前为止,构造的各种对象都是相互独立的,在场景中漫游各种物体,墙壁、树木对玩家(视点)好像是虚设,可以任意从其中穿越。为了使场景人物更加完善,还需要使用碰撞检测技术。 10.3.1碰撞检测技术简介 无论是PC游戏,还是移动应用,碰撞检测始终是程序开发的难点,甚至可以用碰撞检测作为衡量游戏引擎是否完善的标准。 好的碰撞检测要求人物在场景中可以平滑移动,遇到一定高度的台阶可以自动上去,而过高的台阶则把人物挡住,遇到斜率较小的斜坡可以上去,斜率过大则会把人物挡住,在各种前进方向被挡住的情况下都要尽可能地让人物沿合理的方向滑动而不是被迫停下。 在满足这些要求的同时还要做到足够精确和稳定,防止人物在特殊情况下穿墙而掉出场景。 做碰撞检测时,该技术的重要性容易被人忽视,因为这符合日常生活中的常识。如果出现Bug,很容易被人发现,例如人物无缘无故被卡住不能前进或者人物穿越了障碍。所以,碰撞检测是让很多程序员头疼的算法,算法复杂,容易出错。 对于移动终端有限的运算能力,几乎不可能检测每个物体的多边形和顶点的穿透,那样的运算量对手机等设备来讲是不可完成的,所以移动游戏上使用的碰撞检测不可能使用太精确的检测,而且对于3D碰撞检测问题,还没有几乎完美的解决方案。目前只能根据需要来取舍运算速度和精确性。

目前成功商业3D游戏普遍采用的碰撞检测是BSP树及AABB(axially aligned bounding box)包装盒(球)方式。简单地讲,AABB检测法就是采用一 个描述用的立方体或者球形体包裹住3D物体对象的整体(或者是主要部分),之后根据包装盒的距离、位置等信息来计算是否发生碰撞,如图10-24所示。 除了球体和正方体以外,其他形状也可以作包装盒,但是相比计算量和方 便性来讲还是立方体和球体更方便些,所以其他形状的包装只用在一些特殊场 合使用。BSP树是用来控制检测顺序和方向的数据描述。 在一个游戏场景中可能存在很多物体,它们之间大多属于较远位置或者相 对无关的状态,一个物体的碰撞运算没必要遍历这些物体,同时还可以节省重 要的时间。 如果使用单步碰撞检测,需要注意当时间步长较大时会发生两个物体完全 穿透而算法却未检测出来的问题,如图10-25所示。其解决方案是产生一个4D 空间,在物体运动的开始和结束时间之间产生一个4D超多面体,用于穿透测试。 图10-24 AABB包装盒图10-25碰撞检测的单步失控和4D测试 读者在程序开发初期有必要对碰撞检测有一个初步的估计,以免最后把大 量精力消耗在碰撞检测问题上,从而降低了在基础的图形编程之上的注意力。 10.3.2球体碰撞检测 真实的物理模拟系统需要非常精确的碰撞检测算法,但是游戏中常常只需 要较为简单的碰撞检测,因为只需要知道物体什么时候发生碰撞,而不用知道 模型的哪个多边形发生了碰撞,因此可以将不规则的物体投影成较规则的物体 进行碰撞检测。 球体只有一个自由度,其碰撞检测是最简单的数学模型,我们只需要知道 两个球体的球心和半径就能进行检测。 那么球体碰撞是如何工作的?主要过程如下。 n计算两个物体中心之间的距离,并且将其与两个球体的半径和进行比较。

基于GJK的凸体快速连续碰撞检测研究

龙源期刊网 https://www.360docs.net/doc/4f6465109.html, 基于GJK的凸体快速连续碰撞检测研究 作者:刘丽等 来源:《河北科技大学学报》2014年第05期 摘要:针对一段时间内的多个运动物体之间的碰撞检测,提出一种基于距离算法(GilbertJohnsonKeerthialgorithm,GJK算法)的凸体快速连续碰撞检测算法,该算法主要通过判断一段时间内两物体之间的最小距离是否为零来检测碰撞发生情况。首先利用GJK算法在有限步骤内计算得到最小距离,检测两物体是否发生碰撞;若两物体发生碰撞,进而利用raycasting算法确定发生碰撞的精确位置,根据环境要求做出相应响应,调整运动物体位置。仿真结果表明,对多个运动物体间的连续碰撞检测,该算法有较高的实时性和准确性。 关键词:连续碰撞;GJK算法;运动物体;碰撞检测;凸体 中图分类号:TP391.9文献标志码:A Abstract:This paper presents a fast continuous collision detection algorithm to dealing with moving multiple convex objects within a period of time, which is based on the GilbertJohnsonKeerthi algorithm. The algorithm is determined by whether the minimum distance between the two objects within a period of time is zero to detect the occurrence of a collision. First,the algorithm utilizes GJK algorithm to calculate the minimum distance between the two objects and to detect the collision in finite steps. If two objects collide, then, determine the precise collision position of two objects based on the raycasting algorithm, and respond according to the environmental requirements, adjust two objects' location. The simulation results show that this algorithm has high realtime and accurate characteristics for continuous collision detection between multiple moving objects. Key words:continuous collision; GilbertJohnsonKeerthi(GJK) algorithm; moving objects; collision detection; convex objects 碰撞检测在计算机图形学、CAD/CAM、虚拟现实、虚拟制造、三维游戏等诸多领域都有广泛的应用,是提高虚拟场景物理真实感的关键问题之一[14]。按照场景模式不同,碰撞检测主要分为静态检测和动态检测。动态检测针对场景中至少存在一个运动物体的情况;根据碰撞检测方式的不同,动态检测分为离散检测和连续检测[5]。离散碰撞检测算法是对运动物体进 行取样检测,因此容易造成漏检测,进而产生穿透现象[6]。针对两物体间的穿透现象,连续 碰撞检测算法通过对一段连续时间内物体的运动过程进行建模,判断两物体之间的碰撞情况,可以很好地解决漏检测问题[6],但计算量相对较大。目前,虚拟环境的场景复杂度越来越 高,对碰撞检测的实时性及准确性的要求也越来越高。因此,提高检测实时性及准确性是连续碰撞检测要解决的关键问题。

BIM中的碰撞检测技术?在管线综合中的应用及分析

BIM中的碰撞检测技术 在管线综合中的应用及分析 作者:张骋 来源:《中华建设科技》2014年第06期 【摘要】本文介绍利用BIM中的管线碰撞检测功能优化管综设计,对比分析二维、三维设计中的不同,并对设计中常出现的碰撞原因进行分析,对碰撞现象进行分类,提出了管线分析及优化的工作流程。 【关键词】管线碰撞;检测优化管;综设计;碰撞原因 The using and analyzing of intercrossed pipeline in BIM MEPdetection Zhang Cheng (Tianjin architecture design institute BIM design center Tianjin 300074) 【Abstract】 Introduce the using and analyzing of intercrossed pipelinein BIM MEP detection ,and contrast the different between the model of 2D and 3D,analyze the reason of intercrossed pipeline familiar in usually design, range the phenomenon of intercrossed pipeline, suggest the flow of the pipeline location analyzing and optimizing 【Key words】 Intercrossed-pipeline-detection;Optimizing-the-pipeline-location;Pipeline-intercross-reason 1. 引言 碰撞检测是BIM技术应用初期最易实现、最直观、最易产生价值的功能之一。如图1所示,利用软件将二维图纸转换成三维模型的过程,不但是个校正的过程,解决漏和缺的问题,实际上更是个模拟施工的过程,在图纸中隐藏的空间问题可以轻易的暴露出来,解决错和碰的问题。这样的一个精细化的设计过程,能够提高设计质量,减少设计人现场服务的时间。并且,一个贴近实际施工的模型,对预算算量的精确度及工作量,能有巨大的提升和降低,对于施工、物业管理、后期维修等,均有裨益。一个质量良好的模型,对于整个建筑行业,都有着积极的意义。 2. 建模

虚拟场景中基于包围盒的碰撞检测方法的研究与应用

虚拟场景中基于包围盒的碰撞检测方法的研究与应用 李红霞 河海大学计算机及信息工程学院,南京(210098) E-mail:lihongxia2005@https://www.360docs.net/doc/4f6465109.html, 摘要:将一种改进算法应用于台球的碰撞检测算法。利用虚拟环境中发生碰撞的帧与帧之间的关联性,对已发生的碰撞进行缓冲,以便下一次的碰撞检测可以利用已检测的上一次的碰撞的信息,加快了碰撞检测的速度,同时利用预测式方法扩展了这种算法。实验结果证明,本算法可以有效地解决碰撞检测的计算复杂性问题和改进虚拟环境中碰撞检测的性能,使动画效果更加逼真。 关键词:计算机动画,台球,碰撞检测,虚拟环境 1.引言 虚拟现实(Virtual Reality, 简称VR),又译为临境,灵境等。虚拟现实是对虚拟想象或真实三维世界的模拟。当对某个特定环境真实再现后,用户通过接受和响应模拟环境给予的各种感官刺激,从而达到身临其境的感觉[1]。虚拟现实可被看成一个高级的人机界面,人们可以通过视听触等信息通道来感受设计者的意图。 虚拟现实的特点包括:“身临其境”的沉浸感;友好亲切的人机交互性;激动人心的刺激性。参与者在虚拟环境中的活动或经历主要有两种形式:一种是主观参与者与参与者是整个经历的中心,一切围绕参与者进行。另一种是客观参与者,参与者可以在虚拟环境中看到自己与其他物体的交互。 VR技术的主要目标之一是允许用户以尽可能自然的方式与虚拟世界直接交互。VR中动态物体与静态物体之间或动态物体之间的交互基础是碰撞检测[2]。 碰撞检测在机器人路径规划、计算机动画、虚拟环境仿真等领域都起着至关重要的作用。而提高虚拟环境的沉浸感、增强虚拟环境的真实性对碰撞检测的准确性、实时性提出了更高的要求。 2.碰撞检测概述 碰撞检测(Collision Detection)就是检测虚拟场景中不同对象之间是否发生了碰撞。从几何上讲,碰撞检测表现为两个多面体的求交问题;在虚拟现实系统中,主要是如何解决碰撞检测的实时性和精确性的矛盾。准确的碰撞检测对于增强虚拟场景的真实感和沉浸感起着至关重要的作用。而碰撞问题包括碰撞检测和碰撞响应两部分。碰撞检测的目标是发现碰撞并报告;碰撞响应是在碰撞发生后,根据碰撞点和其它参数促使发生碰撞的对象做出正确的动作,以反应真实的动态效果。碰撞响应涉及到力学反馈、运动物理学等领域的知识。 碰撞检测问题基于现实生活中一个普遍存在的事实:两个不可穿透的对象不可能共享相同的区域。碰撞检测的基本任务是确定两个或多个物体彼此之间是否发生接触或穿透。即确定在某一时刻两个几何模型是否发生干涉,如发生碰撞,则需确定碰撞点[3]。 碰撞检测是一个复杂又费时的过程,按过程可以分为三个部分,碰撞检测、碰撞分析与决断、碰撞信息反馈。碰撞检测主要是检测是否两个物体之间发生碰撞,这个过程有许多方法实现,但对于一个大的集成系统来说,仅仅做出判断是不够的,获取到碰撞发生的时间和位置以及发生碰撞物体的几何元素。碰撞检测信息反馈主要为集成系统提供相应的说明和对物体的状态作出改变,以便为更高层任务的完成提供参考依据。

相关文档
最新文档