游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5182|回复: 11

场景中有多个运动的动态物体,如何处理碰撞检测和响应

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-8-29 10:50:00 | 显示全部楼层 |阅读模式
请教高手:
当场景中有多个基于物理运动的动态物体时,如何处理它们的碰撞检测和响应?
一个方法是检测到有多个物体发生相交时,将仿真步长减半回溯,直到其中的若干个物体之间的表面距离小于接触距离(例如:0.01),这时可以认为它们刚好发生接触,然后计算其接触位置和接触法线,进行碰撞响应。但是,这种回溯的方法太慢,请问有无高手知道有什么方法不用回溯,又能较准确地计算出接触位置和接触法线,还望告知,不胜感谢!!

29

主题

421

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
发表于 2004-8-29 12:16:00 | 显示全部楼层

Re: 当场景中有多个基于物理运动的动态物体时,如何处理

关注!别掉下来了。

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-8-29 14:24:00 | 显示全部楼层

Re:当场景中有多个基于物理运动的动态物体时,如何处理

直接求碰撞点嘛,为什么要回溯?

28

主题

685

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2004-9-2 08:59:00 | 显示全部楼层

嗯,假如场景是基于BSP或者什么叉树的,直接用这种方法

rt

8

主题

553

帖子

560

积分

高级会员

Rank: 4

积分
560
发表于 2004-9-2 10:48:00 | 显示全部楼层

Re:场景中有多个运动的动态物体,如何处理碰撞检测和响应

楼主的意思当然是自己实现一个物理引擎(刚体),直接用第三方的物理引擎就没有此问了。
bsp适合的情况是一个动态物体与静态物体的碰撞检测。而楼主的问题是多个动态物体间的碰撞检测。
由于计算机在模拟刚体运动时,物体的运动(位置)变化是离散的,如果在某一时刻检测到两物体发生了碰撞,并不意味着碰撞就发生在此刻,多数情况下是比此刻要早,也就是说,当检测到碰撞发生时,两物体往往已经相互嵌入到对方里去了(显然是错误的位置),所以需要“回朔”,找到碰撞的最初点(或面)。
我也不知道答案,感觉如果要弄出一个general solution的话不是那么简单的,对于简单物体,如球盒子等到是可以有很快的“回朔”方法(自己实现也不难),复杂点的,如凸物体(convex hull)目前很多物理引擎也支持了,但自己实现的话,还是要看不少东西的。

0

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2004-9-3 03:26:00 | 显示全部楼层

Re:场景中有多个运动的动态物体,如何处理碰撞检测和响应

use bounding box to check if two objects are close first. then check only these possible objects.

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-9-3 10:15:00 | 显示全部楼层

Re:场景中有多个运动的动态物体,如何处理碰撞检测和响应

物理引擎是不会所谓回溯的,因为引擎需要这个碰撞深度来给刚体加上反力

8

主题

553

帖子

560

积分

高级会员

Rank: 4

积分
560
发表于 2004-9-3 11:07:00 | 显示全部楼层

Re:场景中有多个运动的动态物体,如何处理碰撞检测和响应

什么叫做“深度”?两个一般的凸的封闭物体的“碰撞深度”是怎么定义的?

14

主题

283

帖子

293

积分

中级会员

Rank: 3Rank: 3

积分
293
QQ
发表于 2004-9-3 11:20:00 | 显示全部楼层

Re:场景中有多个运动的动态物体,如何处理碰撞检测和响应

要用第3方物理引擎我推荐个tokmak物理引擎,很不错的

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-9-3 17:10:00 | 显示全部楼层

Re:场景中有多个运动的动态物体,如何处理碰撞检测和响应

碰撞深度,就是碰撞点离物体质心的距离,比如一个球碰向一个面,球的速度越大,那么碰撞检测的时候,深入到平面内的距离越大,也就是碰撞深度也就越大,那么平面加给球的反力也就越大,也就是球就会弹得越远,当然这是基于最基本的刚性碰撞了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-18 01:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表