1、SceneGraph(场景图) 的概念
SceneGraph一般以树型结构组织,反映了场景中对象的逻辑关系,这里一定要把用于空间分割的二叉树、八叉树算法区别开来,场景图只是逻辑关系而已。以下是组织高效的场景图的一些准则:
1)不要用场景图来进行可见性检测。
2) 不要用场景图来进行碰撞查询。
3) 不要以空间关系建立场景图,应该以逻辑关系建立。
2 、OGRE SceneGraph特色
在OGRE的特色在于场景内容和场景节点分离,这样也就解耦场景内容和场景节点,使得场景管理器可以以插件的形式加载,与场景内容无关,大大的增加了场景管理的灵活性。
3、OGRE场景管理器
OGRE的场景管理器是以插件的形式载入的,不同的场景管理器插件代表不同的场景管理器类型。Ogre自身提供三个场景管理器类型:OctreeSceneManager、TerrainSceneManager和BSPSceneManager。OctreeSceneManager是一个通用的基于八叉树空间划分的场景管理器。TerrainSceneManager是一个为高度场场景优化的场景管理器。
在通常的情况下,Ogre的场景管理器会负责处理以下事情:
1)在场景中创建和放置活动物体、灯光以及摄像机,并维护他们的在场景图中的周游和变换。
2)载入和布置世界地图(World geometry,与活动实体不同,世界地图是巨大且可以延伸的,通常情况下是不可移动的,比如一个完整的BSP地图)。
3)对场景查询(Scene Queries)的支持,比如回答“在世界的某个原型空间内,都包含了那些物体”。
4)剔除不可见物体并且将可见物体放入渲染队列。
5)根据当前和渲染物体的透视图,对无方向的光源(Nondirectional Light)进行组织和排序(按由近到远)。
6)设置并且渲染场景中的阴影。
7)渲染场景中的其他物体,如背景和天空盒
8)发送组织好的内容到渲染系统执行渲染
4、场景节点(SceneNode)
场景管理器用场景节点来定义场景图的结构。这些场景节点以层次的结构组织在场景管理器中:一个场景节点可以有一个父节点和任意数量的子节点。在场景管理器创建的时候,会给整个场景提供一个总的父节点:场景的根节点(Root Scene Node)——场景中唯一没有父节点的场景节点。
5、场景内容节点
场景内容节点才是真正的场景对象,包括以下一些类型:
以资源为基础的物体(Resource-Based Objects)
以四边形为基础的物体(Quad-Based Objects)
天空面(Skyplane)
穹顶(Skydome)
天空盒(Skybox)
摄象机(Camera)
灯光(Light)
世界地图(World Geometry)
静态几何体(Static Geometry)
转载于:https://www.cnblogs.com/cxrs/archive/2012/06/13/2547401.html