游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5802|回复: 20

今天看一个关于碰撞的文章,其中有一段让我很不能理解

[复制链接]

36

主题

197

帖子

197

积分

注册会员

Rank: 2

积分
197
发表于 2005-2-23 14:38:00 | 显示全部楼层 |阅读模式
就是这段:

现在假设我们已经有了OBB或者AABB树。那么我们该怎么进行碰撞检测呢?我们先检测最大的包围盒是否相交,如果相交了,他们可能发生了碰撞,接下来我们将进一步地递归处理它们(不断地递归用下一级进行处理)。如果我们沿着下一级,发现子树并没有发生相交,这时我们就可以停止并得出结论没有发生碰撞。如果我们发现子树也相交了,那么要进一步处理它的子树直到到达叶子节点,并最终得出结论。进行相交测试时,我们可以把包围盒投影到空间坐标轴上并检查它们是否线性相交。这种给定的坐标轴称为分离坐标轴(separating axis)如图8所示。

http://www.gamasutra.com/features/20000330/bobic_08.gif

Figure 8. Separating axis (intervals
A and B don’t overlap).


  为了快速地判断相交性,我们使用一种叫分离坐标的方法。这种方法告诉我们,只有15条潜在的分离坐标。如果跌交的情况在每一条分离坐标上都发生了,那么包围盒是相交的。因此,很容易就能判断出两个包围盒是否相交。

  有趣的是,前面提到的时间片大小的问题用分离坐标技术很容易就能解决。回忆一下关于在两个给定时间内是否发生碰撞的问题。如果我们把速度加上,并且在所有15条坐标轴上的投影都跌交,说明会发生碰撞。我们可以用类似于AABB树那样的数据结构区分碰撞物和受碰物,并判断他们是否有可能发生碰撞。这种运算可以快速地排除在场景中的大多数情况,产生一个接近理想的O次幂(N logN)的效率。


===================================================

我的问题是他所说的15条潜在的分离坐标是什么意思?怎么个15条?又怎么解决了时间的问题?

原文:http://bbs.gameres.com/showthread.asp?threadid=13431
[em4] [em4] [em4]

36

主题

197

帖子

197

积分

注册会员

Rank: 2

积分
197
 楼主| 发表于 2005-2-24 14:26:00 | 显示全部楼层

Re:今天看一个关于碰撞的文章,其中有一段让我很不能理

怎么?难道没有人知道么?还是知道不想说啊?

55555555555555555555555555555555555555

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-2-24 18:53:00 | 显示全部楼层

Re:今天看一个关于碰撞的文章,其中有一段让我很不能理

因为网络游戏不需要这种碰撞监测,所以大家都不知道。

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-2-24 18:57:00 | 显示全部楼层

Re:今天看一个关于碰撞的文章,其中有一段让我很不能理

并且我觉得,不同的应用环境会有不同的分离方法。这是15条潜在的得看具体情况来用,在实际情况中可能还有更多的潜在方法。如果脱离具体应用,意义应该不是非常大。

36

主题

197

帖子

197

积分

注册会员

Rank: 2

积分
197
 楼主| 发表于 2005-2-25 10:57:00 | 显示全部楼层

Re:今天看一个关于碰撞的文章,其中有一段让我很不能理

不是阿,我现在是不知道这分离法是什么?
按照坐标分离应该只有3个啊x,y,z,怎么出来的15条呢?

网游一般用什么碰撞?

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-2-25 14:04:00 | 显示全部楼层

Re:今天看一个关于碰撞的文章,其中有一段让我很不能理

网游也有很多类型,像星际online,他是第一人称射击的,用的方法肯定和别人不同。
但是,服务器端肯定得有碰撞监测。在服务器肯定有一个2D的地图,就根据地图来判断。一半矩形合可能就可以了。
但是,在客户端的进行地面高度的监测。我是通过调用DX的Mesh.Intersect 函数来实现的。

50

主题

992

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
发表于 2005-2-25 20:20:00 | 显示全部楼层

Re:今天看一个关于碰撞的文章,其中有一段让我很不能理

两个OBB的座标轴一共6条,再加上各取两座标系的轴向量的组合(3X3=9条),一共15条:)

36

主题

197

帖子

197

积分

注册会员

Rank: 2

积分
197
 楼主| 发表于 2005-2-27 19:03:00 | 显示全部楼层

Re: Re:今天看一个关于碰撞的文章,其中有一段让我很不

QiKi: Re:今天看一个关于碰撞的文章,其中有一段让我很不能理解,那位大虾给我解释解释

两个OBB的座标轴一共6条,再加上各取两座标系的轴向量的组合(3X3=9条),一共15条:)


请问,obb 6个坐标轴,两两比较,就可以判断是否重复
可是x乘以后得到9个坐标轴是如何比较的?

50

主题

992

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
发表于 2005-2-28 08:43:00 | 显示全部楼层

Re:今天看一个关于碰撞的文章,其中有一段让我很不能理

这9个座标轴是为了解决两OBB的边相对时的叠交判断,9条 separating axis 是这样生成的:取这两条相对的边求其所在平面的法向量,这条法向量就是我们要的 separating axis了,这样的axis一共有9条,因为两OBB相对的边有9种可能的情况。

36

主题

197

帖子

197

积分

注册会员

Rank: 2

积分
197
 楼主| 发表于 2005-2-28 11:02:00 | 显示全部楼层

Re: Re:今天看一个关于碰撞的文章,其中有一段让我很不

QiKi: Re:今天看一个关于碰撞的文章,其中有一段让我很不能理解,那位大虾给我解释解释

这9个座标轴是为了解决两OBB的边相对时的叠交判断,9条 separating axis 是这样生成的:取这两条相对的边求...


可是x乘以后,是9个向量啊,都是o点出发,那他们在x,y,z上的投影,肯定会相交啊?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 10:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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