• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
APS-叶童
博客园    首页    新随笔    联系   管理    订阅  订阅

3D游戏的碰撞检测是如何实现的?

只要学习一下四叉树和八叉树,一切问题都很明了啦~~

碰撞计算本身也有可优化空间,但是并不是重点。利用四叉树可以成千上万倍的缩小检测规模,是最首要的。

来张图解释思想原理。截图来自:空间索引 - 四叉树 - 枕边书 - 博客园:

我们的步骤是:

1、快速批量排除大量毫无关系的物体。

2、在小范围内查找或者检测具体某个物体。

看图具体来说,主角在大地图上,有可能和如此之多的物体发生碰撞……但是有一点是显然的,如果主角和物体不处于同一个格子内,那么肯定不会碰到……好了,这一棍子打死好大一片,如果我们给空间分好了格子(有层次的划分,就是四叉树),那么瞬间绝大部分物体就被我们跳过了。

接下来一个最小的小格子里最多也就那么几个物体,依次判断即可。

 

重要的技术往往有一个非常简单的内核。只要理解了上图,再去学习四叉树的具体实现应该就不难了。

 

 

摘自知乎

posted @ 2022-01-22 21:33  所念所想亦如是  阅读(355)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3