游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2551|回复: 4

编辑器程序中应该使用哪种数据结构进行场景管理?

[复制链接]

29

主题

157

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2008-4-27 08:50:00 | 显示全部楼层 |阅读模式
静态场景常使用空间八叉树进行场景管理,以进行快速的碰撞检测和鼠标拾取。

但是如果是编辑器呢?就像3DMax之类的,里面的物体可能会频繁的创建、删除、移动,总之坐标会经常变化,这种时候为了加快鼠标拾取判断,应该使用什么方法进行场景管理呢?使用八叉树的话,总不能每次移动物体后,都重新进行场景划分,建立八叉树吧?

如果不使用八叉树的话,那么只能每次都对通过了Frustum Cull的对象一个个的进行拾取判断了,即使使用了包围盒,如果物体很多,拾取的代价依然会比较昂贵,更别提要是进行更精确的点、线的拾取了。

不知道如今主流的做法是什么?有没有高效且成熟的方法?

注:鼠标拾取判断是使用判断射线与三角形相交的方法实现的,并先假设只精确到对象一级的拾取(即不拾取点、线、面)。

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2008-4-28 21:01:00 | 显示全部楼层

Re:编辑器程序中应该使用哪种数据结构进行场景管理?

非实时的计算,应该不需要吧?

以前做过五万个顶点的模型顶点拾取,直接暴力计算,没有感觉有延迟。
虽然效率确实还可以提高,但是具体问题具体分析,这种代价也完全可以接受。

你的场景即使有1万个物体,我想也应该不会是太大问题(主要的问题应该是绘制)。

至于点线,你可以将点,线的拾取限制在已选定的物体上。即先选择了物体,才能在当前物体上选择更小的单位。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-4-28 22:10:00 | 显示全部楼层

Re: 编辑器程序中应该使用哪种数据结构进行场景管理?

刚做完场景对象的编辑器,一般来说,如果是地形四叉够用了
所有场景对象的拖放都模仿了3dmax的方式
sf_2008428221025.jpg

29

主题

157

帖子

163

积分

注册会员

Rank: 2

积分
163
 楼主| 发表于 2008-4-28 23:22:00 | 显示全部楼层

Re:编辑器程序中应该使用哪种数据结构进行场景管理?

哈,二楼说的有道理,是我把问题搞复杂了,那天和一个朋友讨论了一下,在编辑模式下,并不需要不停的高速刷新,而且利用包围盒做视锥剔除后,剩下的物体确实可以直接暴力检测。

点和线的检测我还真没想到可以这样处理,不过想一想,3DMax也是需要先选中物体,在进行点和线的选择的。

多谢诸位了。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-4-28 23:31:00 | 显示全部楼层

Re: 编辑器程序中应该使用哪种数据结构进行场景管理?

场景如果按tile结构划分了,可以在一定的范围进行检测
是不需要暴力的,可以做到很强大,但不需要很暴力
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 16:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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