游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4895|回复: 14

lod场景做碰撞,第一部分:如何剔除障碍物,也按照四叉

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-5-3 14:35:00 | 显示全部楼层 |阅读模式
如题,不是如何检测碰撞的问题,而是那些障碍物需要参与检测的问题,我想被剔除的对象不需要参加检测。
如何管理障碍物和地形之间的关系?

还望高人指路 [em24]

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-5-4 14:52:00 | 显示全部楼层

Re:lod场景做碰撞,第一部分:如何剔除障碍物,也按照四

被剔除的也要做碰撞检测的,比如你向后退,撞到墙,但看不到,是吧。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-5-4 20:04:00 | 显示全部楼层

Re:lod场景做碰撞,第一部分:如何剔除障碍物,也按照四

我想我还有一部分内容没做,还是决定把碰撞问题再延后,那就是剪裁做的很不全面,我只做了地形的剪裁,还没做场景对象的剪裁,场景对象的剪裁 HRS算法,查了查资料包含四个部分:
backface culling、frustum culling、portal culling、occlusion culling
第一种zbuffer做了,现在不用考虑,最后一种也比较复杂,好像要用什么IDirect3DQuery9暂时也不考虑
室内用的portal culling现在还开始做室内暂时放放。

那么最常见的剪裁就是frustum culling,我做四叉地形剪裁的时候已经使用过了,可是对象如何通过视锥进行剪裁呢?做一个AABB或OBB包围盒,然后判断时候有顶点在视锥内?

那么有一种情况,摄像头和一个很长的盒子的某个线段相交,而四个顶点都不在视锥内怎么判断?

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-5-4 20:04:00 | 显示全部楼层

Re:lod场景做碰撞,第一部分:如何剔除障碍物,也按照四

场景那么大,每个对象都需要和视锥进行判断吗?能不能借助地形的四叉结构?

3

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2007-5-6 09:50:00 | 显示全部楼层

Re:lod场景做碰撞,第一部分:如何剔除障碍物,也按照四

lod场景?你是说terrain?

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-5-6 11:36:00 | 显示全部楼层

Re:lod场景做碰撞,第一部分:如何剔除障碍物,也按照四

终于有人回帖了,就是terrain场景,我用的四叉,没用八叉,暂时不考虑y轴分割的问题

3

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2007-5-6 12:07:00 | 显示全部楼层

Re:lod场景做碰撞,第一部分:如何剔除障碍物,也按照四

场景就是terrain+实体吧。。。。。。。。
terrain只要读出当前所在位置在高度图中的Y值就可以了。
实体也用四叉树组织,运行时先找到人物在四叉树的哪个叶子里,再对这个叶子里的实体进行碰撞检测。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-5-7 08:29:00 | 显示全部楼层

Re:lod场景做碰撞,第一部分:如何剔除障碍物,也按照四

我现在已经开始这样做了,不过有个问题,就是实体可能交叉几个叶子.也就是同时属于几个叶子,还要排除,有点麻烦

3

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2007-5-7 09:22:00 | 显示全部楼层

Re:lod场景做碰撞,第一部分:如何剔除障碍物,也按照四

属于多个叶子就把它分别加到那些叶子里。
每个实体再弄个变量标记是否已经画过了。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-5-7 18:30:00 | 显示全部楼层

Re:lod场景做碰撞,第一部分:如何剔除障碍物,也按照四

恩,尽管被实体被Block叶子管理了,我的Block是33x33的,我想还是要做AABB盒的frustum culling吧,否则应该会有很多不需要被渲染的Entity被渲染了.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-12 01:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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