您的位置:首页 > 其它

DirectX 框架(二)-- bsp场景管理

2010-03-16 22:45 393 查看


翻来覆去的考虑最终还是选用了bsp碰撞检测,由于之前对bsp不太了解,所以研究起来特别吃力,可是结果是可喜的!说“bsp格式的地图”不太准确,应该说是“bsp方式的场景管理”。之所以这样讲是因为一个bsp文件不仅承载了场景顶点位置、纹理坐标等信息,它还可以存储场景各个部分的可视信息、lightmap等数据。一旦你成功载入了bsp文件,你可以继续读取里面的信息来优化你的程序:
1、可以利用里面可视信息来决定场景中的哪一部分顶点渲染,哪一部分(不再视野范围内的顶点)没有必要渲染;
2、可以利用里面的lightmap数据生成光照阴影图,然后与原纹理混合,产生“零”性能损耗的光影效果!
3、可以利用里面的实体信息来识别那些物体有特殊的属性。比如门是可以旋转的,梯子是可以攀爬的等。

关于bsp有很多版本,cs使用的vbsp,雷神之锤系列使用的ibsp,而ibsp又分46、47等几个版本。不同公司不同引擎,不同引擎又使用不同的bsp版本格式,但总的来说都叫bsp是因为他们使用的技术都是一样的,既二叉分割树!

我在网上找了很多教程最终还是选用了ibsp47版本。现在推荐几个教程,国内资料少的可怜。。

(1)首先是了解bsp文件格式的数据结构:
http://dev.yesky.com/470/8067970.shtml
(2)了解bsp文件的生成原理:
http://hi.baidu.com/ouyang80/blog/item/6bb72aca04b64680c817684a.html
(3)用现成的编辑器制作bsp文件,我推荐使用q3radiant,使用简介如下:
http://cnmod.5d6d.com/thread-448-1-1.html
(4)更详细的使用教程可以去csdn下载:
http://download.csdn.net/source/2060194

之前我用过gtkradiant,但是由于自定义纹理不能导入所以放弃了。
在使用q3radiant之前要下载游戏quake3(雷神之锤3)游戏包,安装后将q3radiant的路径关联起来才可使用,具体步骤看教程。

注意:使用q3radiant导入自定义纹理时,要把你想要的纹理放入M:/Quake III Arena1.17 /Quake III Arena/baseq3/textures/tool
下,如果textures文件夹没有的话要自己建一个!而且纹理的尺寸格式也是有要求的!放好之后点菜单Textures--Load directies 然后弹出浏览框,不要管它直接点确定! 然后按t呼出纹理预览框就可以看到你tool文件夹里所有符合要求的纹理了。只支持tga,jpg。

另一个注意:在导出bsp文件的时候,点菜单栏中的bsp,然后任选一个选项都可以,发现并没有什么反应。我的bsp文件输出到哪了?其实是默认的存放到了M:/Quake III Arena1.17 /Quake III Arena/baseq3/maps文件夹下!但是看一下还是没有。为什么?因为你没有目标文件。意思是说编译器在导出的时候不能找到数据将要写入哪个文件,我们需要做的是:
(1)点另存为,随便起一个名字,比如"11.map"然后确定,这是maps文件夹下就会生成一个11.map的文件,这不是我们要的。
(2)点菜单栏中的bsp菜单,随便点一个,然后听到一个信号声,这时你在去maps文件夹下看一下会出现一个"11.bsp"的文件,That's it.

另一个另一个注意:
当你随便建一个盒子,然后把它挖空,按理说,四面墙加上天花板和地板,总共的顶点也不过几十个。可是当你调试的时候查看一下顶点个数会发现有几百个。原因??最后我发现,当往盒子里加上光源的时候,再到处bsp文件顶点个数就正常了。最后嘱咐一下坐场景的时候先做个大的空盒子,千万不要有缝隙!如果你想露出天空,可以往天花板上贴上一个透明纹理,然后打开alphatest,这样就可以了。

开始是我做的一个小场景,起名叫dust2 B : )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: