Ogre学习笔记(6):BspSceneManager

Ogre学习笔记(6):BspSceneManager

ID:40568121

大小:33.50 KB

页数:5页

时间:2019-08-04

Ogre学习笔记(6):BspSceneManager_第1页
Ogre学习笔记(6):BspSceneManager_第2页
Ogre学习笔记(6):BspSceneManager_第3页
Ogre学习笔记(6):BspSceneManager_第4页
Ogre学习笔记(6):BspSceneManager_第5页
资源描述:

《Ogre学习笔记(6):BspSceneManager》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Ogre学习笔记(6):BspSceneManager【1.概览】Ogre支持Quake3的bsp格式。相关的代码在“Plugin_BSPSceneManager”工程中。主要的类有以下几个:ClassBspSceneNode:BspSceneNode是SceneNode的派生类,是专门提供给BSPSceneManager使用的。主要是提供针对于BSPtree的可见性判断。这个类并不是BSPtree的node,BSPtree中的node使用BspNode。BspSceneNode会放入BSPtree的leaf节点中。由于SceneNo

2、de使用包裹盒的方法,不可分割,所以一个BspSceneNode可能放入多个Bsptree的leaf节点中。从类的定义看,BspSceneNode并没有额外的保存什么数据。重写的几个虚函数主要是用来通知BspSceneMapager,BspSceneNode::_update()会调用BspSceneManager::_notifyObjectMoved(),detachobjcect会调用BspSceneManager::_notifyObjectDetached()。ClassBspSceneManager:粗略的看BspScen

3、eManager与OctreeSceneManager类似。首先保存了一个BspLevel的指针,然后使用一个walkTree()函数,用来遍历tree结构。由于Quake使用BSPleaftree,所以多了一个processVisibleLeaf()函数。另外一个明显的不同是有一个renderStaticGeometry()函数,“RendersthestaticlevelgeometrytaggedinwalkTree”。此函数渲染“mMatFaceGroupMap”中的所有数据。BSP一个好处是不透明面可以front-back的

4、顺序来渲染,而透明面back-front来渲染,OGRE是如何将此特性保存到MaterialFaceGroupMap的呢?ClassBspLevel:这是一个核心的class。他存储了BSP的所有数据,关键的数据有:1.“BspNode*mRootNode;”――BSPtree的根节点2.“VertexData*mVertexData;”――整个level的所有顶点;3.“StaticFaceGroup*mFaceGroups;”――faces4.“BspNode::Brush*mBrushes;”――用来做碰撞检测的Brush,是QuakeBSP除了渲染以外的另外一个精华!Brush的名字有点怪,其实就是一个convexvolume,可以减少CD的运算量。5.“VisDatamVisDat

6、a;”――PVS数据,是又一个Quake中的精华!当初Carmark在设计Quake的时候还使用软件渲染,hidensurfaceremoval和减少overdraw是最另他头痛的问题。BSP的思想应该是他从网上看来的,不过PVS应该是他所创。PVS大大减少了overdraw。(见《MichaelAbrash'sGraphicsProgrammingBlackBook》)6.“PatchMapmPatches;”――Quake3支持贝赛尔曲面关键的函数:

7、-[if!supportLists]-->1.boolisLeafVisible(constBspNode*from,constBspNode*to)const;使用PVS来检测可见性。2.void_notifyObjectMoved(constMovableObject*mov,constVector3&pos);void_notifyObjectDetached(constMovableObject*mov);àvoidtagN

8、odesWithMovable(BspNode*node,constMovableObject*mov,constVector3&pos);把MovableObject(注意:不是SceneNode)挂到BSP的leav

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。