碰撞检测
文章平均质量分 88
loverszhaokai
海到尽头天作岸,
山登绝顶我为峰。
展开
-
变换AABB的快速算法
最近一段时间一直在重写引擎,设计和实现都有不少改变,自我感觉比以前的版本在易用性上有一定提高,除去了一些不太实用的设计。另外在一些实现细节上也有一些改进。 前几天翻看老外的一本"3D Math Primer for Graphics and Game Development",发现里面提到的一种变换AABB的快速算法,比我以前的实现要好的多。再查看Ogre和nnebula的代码,都没转载 2012-03-16 21:18:38 · 1185 阅读 · 0 评论 -
碰撞检测技术简介
无论是 PC 游戏,还是移动应用,碰撞检测始终是程序开发的难点,甚至可以用碰撞检测作为衡量游戏引擎是否完善的标准。好的碰撞检测要求人物在场景中可以平滑移动,遇到一定高度的台阶可以自动上去,而过高的台阶则把人物挡住,遇到斜率较小的斜坡可以上去,斜率过大则会把人物挡住,在各种前进方向被挡住的情况下都要尽可能地让人物沿合理的方向滑动而不是被迫停下。在满足这些要求的同时还要做到足够精确和稳定,防止转载 2012-03-16 21:19:23 · 2167 阅读 · 1 评论 -
建立2D AABB
AABB是游戏中经常用的包围盒。本文提出一种2D空间内自动生成AABB的算法,读者也可在此基础上开发出基于3D的AABB自动生成算法。 本算法可以用来在一个给定区域内进行AABB的自动挖掘产生。如:场景内各建筑的阻挡点包围框;纹理贴图上小图标的包围框……算法描述:创建一个AABB空列表aabbList循环给定空间内的每一个点pt 如果pt为不感兴趣的点,则跳转载 2012-03-16 21:20:05 · 784 阅读 · 0 评论 -
碰撞检测 小结
貌似Tri-Mesh之间的CD好像不是很容易实现(尤其是三角形求交),而且时间也不多了,就这样,从头总结一下。另外放个演示程序,由于Tri-Mesh之间的CD未完成,没法放入那些物体,所以只有球和静态物体:纯属无聊摆的……演示里没有用broad-phase碰撞检测(因为以后打算加上GraphicEngine的场景树),直接mid-phase下载地址:http://files.cnblo转载 2012-03-16 21:20:34 · 2042 阅读 · 0 评论 -
AABB包围盒、OBB包围盒、包围球的比较
1) AABB 包围盒: AABB 包围盒是与坐标轴对齐的包围盒, 简单性好, 紧密性较差(尤其对斜对角方向放置的瘦长形对象, 采用AABB, 将留下很大的边角空隙, 导致大量没必要的包围盒相交测试)。当物体旋转之后需对AABB 进行同样的旋转并更新; 当物体变形之后只需对变形了的基本几何元素对应的包围盒重新计算; 然后可以自下向上由子结点的AABB 合成父结点的AABB, 最后进行包围盒树的更新转载 2012-03-16 21:17:19 · 1489 阅读 · 0 评论 -
AABB和OBB包围盒简介
一、AABB立方体边界框检测用球体去近似地代表物体运算量很小,但在游戏中的大多数物体是方的或者长条形的,应该用方盒来代表物体。另一种常见的检测模型是立方体边界框,如图10-31展示了一个AABB检测盒和它里面的物体。坐标轴平行(Axially-aligned)不仅指盒体与世界坐标轴平行,同时也指盒体的每个面都和一条坐标轴垂直,这样一个基本信息就能减少转换盒体时操作的次数。AABB技术在当今转载 2012-03-16 21:17:49 · 1239 阅读 · 0 评论 -
理解AABB包围盒算法
这两天在弄引擎的碰撞检测模块,弄的纠结死,资料出奇的少,大牛们的代码又不加注释,唉。1.aabb包围盒由一个max坐标和一个min坐标组成。可以看成一个点集。 下面这段代码是关于两个包围盒碰撞的检测,看成点集的话很好理解 bool cheTouch(const AABB& aabb1, const AABB& aabb2) { if (转载 2012-03-16 21:18:14 · 3473 阅读 · 1 评论