Axiom3D学习日记 2.介绍SceneManager,SceneNode,Entity

SceneManager(场景管理类)

所有出现在屏幕里的东西都受SceneManager管理(最好是这样),当你放置对象在场景里,SceneManager就会跟踪他们的位置,当你为场景创建一个相机,

SceneManager也会追踪他们,等等.

SceneManager有多种不同类型,如:渲染BSP地图,渲染地形等等.

Entity(实体类)

实体是能在场景里渲染的对象中的一种.他可以是一个3DMesh(模型),一个机器人,一条鱼,你的游戏角色所走的地形也是一个大的实体.

这些就不属于实体,如:灯光,广告板,粒子,相机等等

特别需要说明的是:在Axiom中,不能将一个entity直接添加到场景中,需要将entity绑定到一个ScreenNode上,这个ScreenNode作为场景节点将包含

坐标,方向等信息.

SceneNode(场景节点)

再次强调,ScreenNode是一个包含位置,方向信息的节点类,它不能被渲染,只有当ScreenNode绑定了Entity,才能正确显示.

ScreenNode可以绑定多个物体,例如:一个角色周围环绕着多个灯光.他们一起在场景里移动.

ScreenManager有一个Root节点,而所有ScreenNode的位置都受其父节点影响.

下面是创建一个基本物体的代码

_scene.AmbientLight = new ColorEx(1, 1, 1);
Entity ent = _scene.CreateEntity("Penguin", "penguin.mesh");
SceneNode node = _scene.RootSceneNode.CreateChildSceneNode("PenguinNode");

node.AttachObject(ent);
Entity ent2 = _scene.CreateEntity("Penguin2", "penguin.mesh");
SceneNode node2 = _scene.RootSceneNode.CreateChildSceneNode("Penguin2", new Vector3(100, 0, 0));
node2.AttachObject(ent2);

创建一个指定位置的物体.

时间: 2024-10-11 05:17:24

Axiom3D学习日记 2.介绍SceneManager,SceneNode,Entity的相关文章

学习日记-----存储过程介绍

SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. ? 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储

Axiom3D学习日记 3.Cameras, Lights, and Shadows

Camera 相机: 相机基础知识不写了,需要注意的是:axiom目前不支持同时操作多个相机. 创建,设置位置基本操作. _camera = _scene.CreateCamera("MainCamera"); _camera.Position = new Vector3(0, 10, 200); _camera.LookAt(Vector3.Zero); _camera.Near = 5;决定了相机可视范围. ViewPort(视口) 当要显示多个窗口时候用,这个我不怎么需要,就不写

Axiom3D学习日记 0.Axiom基础知识

程序基本步骤: Create the Root object. Define the resources that the application will use. Choose and set up the render system (that is, DirectX, OpenGL, etc). Create the render window (the window which Axiom will render onto). Initialize the resources that

【转载】Ogre:Beginner Tutorial 1: SceneNode, Entity,和SceneManager 结构

原文:Beginner Tutorial 1: SceneNode, Entity,和SceneManager 结构 先决条件 这个教程假设你有C++编程的基础并且可以配置并编译OGRE应用程序 (如果你在配置环境方面有问题,请看OGRE + MinGW + Code::Blocks环境的搭建). 除了配置环境之外,你不需要有任何关于OGRE的知识. 介绍 在这个教程中,我会介绍给你OGRE中最基本的结构: SceneManager, SceneNode, 还有Entity 对象.我们不会涉及大

学习日记之迭代器模式和Effective C++

迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示. (1),当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑迭代器模式. (2),你需要对聚集有多种方式遍历时,可以考虑用迭代器模式. (3),当遍历不同的聚集结构,应提供如开始.下一个.当前项等统一的接口. (4),迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器来负责,这样即可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据. Effec

学习日记-----ORM

ORM ORM(Object Relation Mapping)对象关系映射 实质:将数据库中 的业务数据用对象的形式表现出来,使用ORM在业务逻辑层和数据访问层之间充当桥梁 核心原则: 简单性 传达性 精确性 优点: 面向对象 提高效率 方便转移数据库 缺点: A.       不够灵活,对于复杂的查询,ORM还是力不从心 B.        执行效率低于直接的SQL语句 C.        性能损耗,ORM 的映射和关系管理是以牺牲性能为代价的 D.       提高学习成本 可使用场合:

Android Gradle编译学习日记之二(使用 Gradle 编译 Eclipse,引入依赖资源以及迁移 Android Studio)

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 Android Gradle编译学习日记(基于 Android Studio 1.0): Android Gradle编译学习日记之一(搭建 Gradle 环境以及编译 Android 应用) 在上一篇文章中,我简单介绍了一个 Gradle 环境变量的搭建,以及如何使用 Gradle 编译 Android

面向对象程序设计学习日记

面向对象程序设计学习日记 持续更新(可能),更新时间不限,催更不管,腰斩就跑(逃-) Date:2018.5.1(Elevator_V1.1) 前言 五一节每年都过得相当委屈,全国劳动者放假,学生虽然跟着放假却因为劳动者都不足,不少服务不是暂停就是加价,所以放假也只能老实呆在家里宅着. 但是!今年五一节是我这一生过得最憋屈的一次,QQ列表里的人几乎全去玩了,就我一个没人约,孤独的宅在家里刷空间??然而打开空间就又是一股满满的现充之风铺面而来,还给不给死宅留条活路了(心碎.jpg). 五一没人约,

学习日记之状态模式和Effective C++

状态模式(State):当一个对象内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类. (1),状态模式主要负责解决的是当控制一个对象转换的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化. (2),状态模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来. (3),将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和