碰撞检测

一. 简单碰撞检测(一般针对粒子和球体对象)

1. 惩罚方案--基于弹力(胡克定律)

2. 冲量方案--基于动量守恒定理


二. 复杂碰撞检测--多边形网格相交测试

分为两个阶段:

1. 泛碰撞测试:将位于碰撞边界外部的对象各部分排除在外,剩余内容视为潜在碰撞集(PCS)。

 1) 基于包围体(BV)如AABB、包围球进行测试。但这样得到的PCS内包含了大量的多边形,计算性能消耗大

 2)采用包围体层次结构(BVH)。如下图,A和B两个网格对象均可以划分为两个子对象(类似于树)

然后,遍历两个BVH,并重复进行BV相交测试,最终得到潜在碰撞集PCS,如下图


2. 精细碰撞测试:在PCS内执行三角形-三角形测试。主要进行碰撞点和碰撞法线的计算。

如下图,计算三角形U和V的碰撞点和碰撞法线。(右图为结果)


        

1)碰撞点近似为相交的边pq的中点,因此首先计算点p和点q的位置信息。

点p可以通过三角形U的平面方程和V的两个点v1、v2计算,点q类似。

2)碰撞法线为三角形U和V的法线。

PS:进行三角形测试时,需要经过某些预测试和后处理操作。

比如,V的顶点全部位于U的半空间内,则无需进行上述计算过程。这就是预测试。

而当计算出p、q后,还要测试它们与U的位置关系,这是因为我们计算采用的平面是U所处的无限平面。这就是后处理。

碰撞检测后的数据传入碰撞处理模块,碰撞处理主要计算碰撞后对象的速度(线速度和角速度)



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值