OGRE 场景管理(Scene Management)
场景管理(Scene Management)主要包括对场景物体增删改查、变换、遍历、剔除、渲染等操作。OGRE中与场景管理相关的类有SceneManager, Node, SceneNode, MovableObject, Entity, OctreeSceneManager, PCZSceneManager
类关系分析
Node类是抽象基类,表示场景图中一种general purpose的点,拥有3类坐标转换:本地坐标,父坐标,世界坐标
SceneNode 场景树的节点,包含包围盒属性,使用attachObject可将物体包含。
MovableObject 抽象基类,定义可包含节点的可移动对象
Entity 继承MovableObject, 场景实体,包含mesh模型
SceneManager 场景管理类,组织和渲染场景
octreescenemanager 八叉树场景管理类,SceneManager派生类
PCZSceneManager SceneManager派生类
类关系图
设计模式解析
- 抽象工厂模式,SceneManger提供与场景管理相关的对象接口,而无需指定他们具体的类,具体工厂负责实现具体的实例
- 组合设计模式,场景节点与实体的组合关系,实现场景节点和场景内容的分离,节点记录几何变换信息,实体成功创建可包含在多个节点,提高复用和实现解耦
- 可扩展性好,SceneManager没有提供场景图遍历算法,以继承方式支持扩展场景管理算法
场景管理流程
- root创建SceneManager
- SceneManager创建SceneNode
- SceneManager创建Entity
- SceneNode关联entity