1、SceneGraph(场景图) 的概念

  SceneGraph一般以树型结构组织,反映了场景中对象的逻辑关系,这里一定要把用于空间分割的二叉树、八叉树算法区别开来,场景图只是逻辑关系而已。以下是组织高效的场景图的一些准则:

    1)不要用场景图来进行可见性检测。

    2) 不要用场景图来进行碰撞查询。

    3) 不要以空间关系建立场景图,应该以逻辑关系建立。

2 OGRE  SceneGraph特色

   在OGRE的特色在于场景内容和场景节点分离,这样也就解耦场景内容和场景节点,使得场景管理器可以以插件的形式加载,与场景内容无关,大大的增加了场景管理的灵活性。

3OGRE场景管理器

     OGRE的场景管理器是以插件的形式载入的,不同的场景管理器插件代表不同的场景管理器类型。Ogre自身提供三个场景管理器类型:OctreeSceneManagerTerrainSceneManagerBSPSceneManagerOctreeSceneManager是一个通用的基于八叉树空间划分的场景管理器。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

posted on 2012-06-13 10:20  Just a Programer  阅读(2433)  评论(0编辑  收藏  举报