摘要:
资源组命名组可以作为一个整体加载与卸载。在加载,卸载,初始化时把把组中的所有资源作为一个执行单位来看待,而不是逐个进行处理。资源组管理纯粹是了为了管理上的方便,是否使用组的方式与性能无关。假如向资源组管理器中加入了资源位置而没有指定组名,那么这些资源位置被放入"General"组中。资源组与世界几何缺省情况下,ogre把加载的世界几何放入"General"组。也可以覆盖(override)这种方式,使得对世界几何的管理像其他资源的管理方式一样。统一的场景管理器可以提供关于装载世界总步骤的线索,这样就可以在关卡加载时,提供精确的以进度条显示的反馈信息。资源 阅读全文
摘要:
材质复制如果新的脚本只是对某个已经存在的脚本进行小部分的变化,那么可进行从旧脚本复制,而不是C&P。新材质可以修改特定technique,pass,texture,或是添加新项。格式: material <NewUniqueChildName> : <ReferanceParentMaterial>当材质脚本被加载到ogre中,这种继承关系不再维系,假如父材质在运行时被修改,不会影响到子材质。如果在一个technique中有5个pass,而我们只想修改第5个pass,我们可以用pass指定或是它的索引(从0计)meterial test2: test1{ techniq 阅读全文
摘要:
基本对象着色材质,简单的来讲就是定义了被赋于此材质的对象如何反射光。ogre中的光照采用局部光照模型,这意味着,对计算有影响的因素有:光照的角度与光的颜色,相机的视角,对象的材质。ogre支持四种类型用来描述材质的颜色,表述了光照对它的影响:环境光,漫反射,发散,镜面反射。环境光是对全局光照的近似,漫反射是指当物体被光照射后在物体各方向上反射的光的颜色。发散指物体本身自发光的颜色。镜面反射,指的是在某个视角看到的被光反射出的“高光”。镜面高光有两个参数可以控power,shininess.power用来控制“加亮点”的尺寸(影响的范围越大)。而shininess值越大的表面,高光越容易聚集。纹 阅读全文
摘要:
概述动画,总的来讲,在计算机发展的各个阶段,与艺术家们快速浏览一系列彼此稍微不同的图片从而产生运动的幻觉的行为没有什么不同。1872年,Eadweard Muybridge给奔跑的马拍了一组连续的照片,从而证明了马在奔跑时会四脚同时离地。这是一系列的图片流可以产生运动幻觉的最早的文档化的记录。现在在Ogre中,不必小题大作地装配一些设备来创造这种运动幻觉了。只需要每帧少量地移动或变形场景中的数据,幻觉就产生了。它确实只是幻觉。ogre不跟踪对象的速度,加速度,或是角色的胳膊是在抬起或是叉着腰。ogre逐帧来处理位置与朝向。ogre能为你做的是帮你重新播放这些动画。这些动画可以是用离线工具制作的 阅读全文
摘要:
OGRE渲染对象Ogre中的render target 只是共享AGP内存或显存的某个区域的抽象,这个区域中保存着全部或部分场景2D渲染结果。最普通的render target是主渲染窗口,这是应用程序的主窗口。使用这个render target不需要做太多另外的努力,ogre可以帮我们创建它。还可以把场景中的全部或部分(甚至是场景中不可见的部分)渲染到一个纹理,这个纹理可以被场景中的其他多边形使用。目标硬件缓冲在ogre中抽象为render target,它的物理显示可以为主渲染窗口,也可以是副窗口,也可以是非可视的:纹理。渲染对象也是事件源,假如程序注册了这事件,ogre会在pre- 和 阅读全文
摘要:
布告板(Billboard)Ogre中的布告板简单的来讲就是场景中的一个四边形,但它的朝向与相机有关。通常布告板随着相机的视方向旋转以便与相机的视线方向对齐。把布告板放在场景的任何地方,它将会朝向相机。为了效率考虑,布告板与相机的视线方向对齐,而不是与从布告板到相机的向量对齐。大部分情况下两者没有明显的区别。如果想使用后一种的对齐形式,也可以办到,但在性能会有所降低。布告板集(Billboard Sets)布告板不能独立存在,他们也不能自我渲染。他们必须属于某个布告板集。布告板集可认为是一组布告板的管理器,布告板集内的所有布告板有相同的尺寸,使用相同的材质。相同的尺寸,相同的纹理会带来计算与渲 阅读全文
摘要:
阴影技术Ogre支持两种主流的动态阴影技术,模板(stencil)阴影与纹理(texture)阴影,每一种都有两个变体:modulative 与additive。这四种技术完全兼容固定函数图形流水线,因此不需要可编程GPU支持。然而,可利用GPU程序进行加速。在场景中只有使用一种阴影技术,应该在场景渲染这前进行阴影技术相关设置(最好是在创建场景管理器之间)。通过调用SceneManager::setShadowTechnique()来设置技术,参数指定技术的具体类型。阴影技术缺省情况下被关闭。对于物体,投射与接收阴影可以在材质中控制,也可以控制物体自己对自己投射。由于模板阴影算法的本质特征,透 阅读全文
摘要:
粒子系统ogre中的粒子系统既可用脚本描述,也可用代码完成。用粒子脚本定义的粒子系统实际上是个模板,因此它定义的粒子系统可在程序中方便地重用。粒子系统与场景粒子系统会被挂到场景结点上,因此,结点的平移,缩放,旋转会关联到粒子系统,影响粒子反射的向。粒子会被发射到世界空间中,这意味着当场景移动时,它会牵连到发射器,但已经发射出去的粒子不受影响。假如需要这些粒子受结点的影响,可以把粒子发射到本地空间(local space)中。粒子系统不能无限制的发射粒子,它有一个限额(quota)。一旦到达限额,粒子系统不会再发射粒子,直到已经存在的粒子消亡。缺省的限额是10。粒子系统约束(Bounds)粒子系 阅读全文
摘要:
Ogre中的地形使用terrain.cfg WorldTexture=terrain_texture.jpg //地形纹理DetailTexture=terrain_detail.jpg //细节纹理DetailTile=3 //细节纹理在一个地形小块中的平铺数PageSource=Heightmap //高度图数据源Heightmap.image=terrain.png //高度图名称,符合2^n+1PageSize=513 //高度图大小TileSize=65 //地形小块大小MaxPixelError=3 //决定使用层次细节时充许误差PageWorldX=1500 //地形在世界中的范 阅读全文
摘要:
场景查询创建查询的代价比较大,而执行不是。SceneQueryResualt只定义了两种成员:movables与worldFragments.掩码也需要自己定义,自己解释。在一个轴对齐盒子中查询灯光的例子如下:const unsigned int LIGHT_QUERY_MASK = 0x00000001; //掩码定义Light* light1 = mSceneMgr->createLight("Light1");Light* light2 = mSceneMgr->createLight("Light2");light1->setP 阅读全文
摘要:
场景对象创建场景中的所有对象,包括可移动与不可移动的:lights, cameras, entities,particle system,billboards, skyboxes, static geometry , world geometry.都由场景管理器来创建。场景中的任何东西都由场景管理器来管理。任何通过场景管理器得到的东西,都必须由场景管理器来销毁。用户不能delete通过由场景管理器得到的指针。场景结点只有一个父结点,可能有多个子结点。可以随意的attach 和 detach 这些场景中的结点。在明确告诉场景管理器销毁这些结点前,它们总是存在。如果不想渲染场景中的某些结点上的内容 阅读全文
摘要:
Ogre 场景管理 每个3D引擎都会用scene graph 来组织它的可渲染对象。scene graph 总是会为了更快地搜索与查询做优化,提供给用户查找目标对象附近特定对象的功能,允许查找,排序,剔除多边形,以实现更高效的渲染。偶尔,scene graph也用于碰撞检测。有时,一个单独的scene graph可被用于程序中的所有子系统,包括音效与物理。Ogre使用插件机制来实现场景管理功能。ScenceManager只是接口,他可以有很多具体的实现。Ogre允许在同一时刻同一场景中使用多个Scene Manager,这样在不同的场景类型切换时带来好处。场景管理器的责任1,创建,放置场景中的 阅读全文
摘要:
日志系统:日志记录了基于ogre的程序每次运行时的所有事件,系统初始化,状态,性能信息。输出的内容被放在磁盘文件上,文件缺省名是ogre.log。也可以手动显示创建日志系统,这需要在创建Root对象之前实施。// create an instance of LogManager prior to using LogManager::getSingleton()LogManager* logMgr = new LogManager;Log *log = LogManager::getSingleton().createLog("mylog.log", true, true, 阅读全文
摘要:
子系统概览 Root Object Root 是程序进入点,它是一个façade 类,提供了访问子系统的方便的方法。通过它可以开启ogre,也可能通过它关闭ogre。 资源管理 在渲染场景中使用的任何东西都被视为资源。所有的资源最终都被一个单个类对象管理:ResourceGroupManager,它负责定位资源,初始化资源(不真正装载)。 在缺省情况下,Ogre认识以下类型的资源: Mesh: 二进制格式,它也可包含 morph 和 pose 动画数据 Skeleton: 可以被Mesh文件引用,也可单独使用,包含骨骼层次结构信息,关键帧信息。 Material: 定义了渲染一组几何 阅读全文
摘要:
设计哲学 传统上,使用 Direct3D 或 OpenGL 来渲染场景和对象,需要遵循一系列程序处理流的步骤:调用 API 设置渲染状态,调用 API 发送几何体信息,通知 API 或 GPU 去渲染几何体。对每个几何体都是如此返复,直到当前帧被完全渲染。在一下帧同样如此。 使用面向对象的方法来渲染几何体简化了上述过程。通过处理组成场景的各种对象而不是原始的几何体。这些对象包括:可运动对象,静态对象(构成世界布局),光,相机等。那些 3D API 则不再需要:只是把这些对象放到场景中, Ogre 负责处理琐碎的细节。而且,可以用更加直观的方法来操纵对象,而不是使用矩阵。总的说来,我们可以处理对 阅读全文
摘要:
OGRE(面向对象的图形渲染引擎)是用C++开发的面向对象且使用灵活的3D引擎。它的目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库(如:Direct3D和OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。OGRE特点 效率特性l 简单、易用的面向对象接口设计使你能更容易地渲染3D场景,并使你的实现产品独立于渲染API(如Direct3D/OpenGL/Glide等等)。l 可扩展的程序框架(framework)使你能更快的编写出更好的程序。l 为了节省你的宝贵时间,OGRE会自动处理常见的需求,如渲染状态管理,hi 阅读全文