第10_11篇12页.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
距离查询 在某些应用中,可能希望测试物体与环境之间的距离。 计算碰撞相应需要知道贯穿深度,从而可以用这个距离将物体回移,并计算相应的物理量。 给定一个物体的速度和加速度,可以用最小距离来估算碰撞时间的下限,从而在这个时间之前避免进行碰撞检测。 汽车设计中,不同体形乘客舒适感的评估等 可变形模型 前面讨论的物体都是刚体,但自然界中还存在布之类的可变形物体。 假设物体在变形过程中,网格的连接关系保持不变。想办法利用这种连接关系。 因为大多数包围体在碰撞查询中一般不会用到,因此树中需要更新的包围体非常少。 采用“自上而下/自下而上”的混合更新方法。基本思想:对高层节点(包括根节点)使用一种自下而上的更新思想(理由:较高层次的包围体通常会裁剪掉大部分物体) 自下而上/自上而下的混合更新方法。使用自下而上的策略对上层的节点进行更新;仅仅对在遍历过程中所访问树中比较深的下部节点采用自上而下的方法进行更新。 自下而上 自上而下 对于更新后的层次和其它树进行重叠测试。对于不重叠的节点来说,可以跳过对其子树的更新,这样可以节省很多计算量。 对于发生重叠的节点,使用一种自上而下的策略来对子树中的节点进行更新。 理由:重叠测试速度比包围体更新速度快! 对于可变形物体更一般的方法 计算出进行碰撞测试的两个物体的最小AABB 如果彼此重叠,则计算出重叠的AABB区域,即AABB的相交体积。 创建该区域内的所有三角形列表,建立包含这些场景的八叉树。 在八叉树节点中插入三角形,如果两个物体的三角形在同一个叶节点中,则对这些三角形进行相交测试。 使用BSP树进行动态碰撞检测 Melax的碰撞检测算法: 对用BSP树描述的几何体进行碰撞检测,其中碰撞体可以是 球体 圆柱体(可以用来近似人物几何体) 物体凸包 算法可以进行动态碰撞检测 已经用于商业游戏 球体碰撞体 几何体 一个点从p0移动到p1,可以用线段p0 p1表示。线段和标准的BSP树之间的相交测试可以高效地进行。这里可能会有多个交点,但只有第一个相交点表示这个点与几何体之间的碰撞。 扩展到球体:将BSP树向外扩展园的半径长度 对p和扩展后的BSP树进行相交测试 拐角应该是圆形,因此是这种算法引入的一种近似形式?? 测试平面从π:n.x+d≥0调整为 π’:n.x+d±r≥0(±符号取决于碰撞搜索在平面的哪一侧) 平面/圆柱体的相交测试 在游戏中,球体往往不能很好地对人物进行近似 人物的凸包或包围人物的圆柱体相对来说更好 目标:对BSP树和由一组顶点S形成的运动凸包进行相交测试 圆柱体在游戏中更接近人体,对圆柱体进行的相交测试也较快 平面/圆柱体的相交测试 对平面π移动使其刚好接触到圆柱体,计算从p0到移动之后平面的距离e 半径为r 高为h p0为参照点 希望解决的问题:圆柱体和平面π进行相交测试 用距离e将平面π移动到新位置π’ 最终结果:将平面π与圆柱体之间的相交测试转换为点p0与新平面π’之间的测试 例外情形 方法会产生不精确性 引入额外的倒角面来解决 如果相邻平面间的外角大于90度,就插入一个额外平面 不能去掉所有的错误 缺点:所花费的代价要比不使用调整平面高出2.5至3.5倍。但由于碰撞检测所耗费的时间(66us)相对于绘制画面的时间(33000us)并不多,因此由此引入的代价可以忽略。 额外的倒角面引起的BSP树变化 一个正常的单元和对应的BSP树 在单元中增加了倒角面,BSP树相应发生了改变 一般层次碰撞检测 一般层次碰撞检测算法的三个特点 使用包围体为每个模型创建一个层次表示形式 不论采用何种包围物体,用于碰撞检测的高层代码总是类似的 可用一个简单的代价函数(Cost Function)对性能进行修剪、计算、比较 层次创建 模型是由很多图元表示的。超过3个顶点的多边形可以转化为三角形。 在碰撞检测算法中,模型常用的层次结构为k叉树数据结构,每个节点最多有k个子节点。 很多算法采用最简单的二叉树数据结构。每个内部子节点有一个包围体,它包含所有的子节点;在每个叶节点,存在一个或多个图元(三角形)。 将任意节点的包围体A(内部节点或叶节点)表示为Abv,将属于A的子节点表示为Ac 。 层次创建的三种形式 为了创建一个高效紧凑的结构,需尽可能将包围体的体积最小化。层次创建有的三种形式: 自下而上 渐进树插(Incremental Tree-insertion) 自上而下 自下而上方式 首先将大量图元组合起来并找到它们的包围体,图元应紧密地靠在一起,可利用图元之间的距离来确定。 然后,用同样的方法创建一个新的包围体,或者组合现有的包围体。 直到只剩下唯一的包围盒,把它作为根节点。 Incremental Tree-i

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档