
OGRE
文章平均质量分 84
pizi0475
这个作者很懒,什么都没留下…
展开
-
用OgreOde创建一个会走动的角色
我相信我不是第一人自问如何用OgreOde创建一个运动角色。搜索论坛和wiki后,我意识到这是一个很有用的信息。这个教程解释了如何创建一个可以在地形上行走的运动角色(包括其它meshes,如树和房屋)。创建物理模型我按照在Monster的方法用下图代表一个角色:下面,我假设你对Ogre的SceneNodes, meshes 和AlignedBoxes都有所了解,并且会用SceneMan转载 2009-06-06 10:25:00 · 2461 阅读 · 0 评论 -
OGRE中OIS与CEGUI的屏幕坐标转换
在OGRE中文Wiki的中级教程四中,提到了OGRE中OIS与CEGUI的鼠标屏幕坐标转换的问题。由于wiki上没有给出详细的图,看起来不是很直观,自己画个来明确一下这个坐标转换吧。OIS屏幕坐标取值范围为[0, 1],而CEGUI屏幕坐标的取值范围为[-1, 1]。相应的坐标换算为:Xc = Xg * 2 - 1;Yc = 1 - Yg * 2;Xg = ...转载 2009-06-06 10:26:00 · 1967 阅读 · 0 评论 -
骨骼动画导论
先说明,这篇文章由我翻译自Evan Pipho的>一书的内关于骨骼动画第五章的内容,去掉了前面的说明和最后的Demo说明,包含了所有的理论内容,转载请注明出处,谢谢!理解骨骼动画骨骼动画是使用”骨头”来运动一个模型而不是通过手动编辑和移动每个顶点或面而实现的动画.每个顶点被附着到一根骨头(或有时是多根骨头).一根骨头或一个关节只是一组顶点的一个控制点.这些概念类似于我们身体里的关节,例如我们的膝关转载 2009-06-09 11:12:00 · 3218 阅读 · 0 评论 -
OgreFrameWork
//mygame.h#include "Ogre.h"#include "OgreConfigFile.h"#include "OIS/OIS.h"using namespace Ogre;class mygame : public FrameListener{public: /// Standard constructor mygame() {转载 2009-06-06 10:24:00 · 2084 阅读 · 0 评论 -
在Ogre中载入OgreMax场景文件的方法
在ogre中加在 ogremax场景文件方法发布: 2009-2-10 21:54 | 作者: webmaster | 来源: 本站原创 | 查看: 27次看到很多人对ogremax在ogre中怎么加载不大熟悉,其实作者有一篇文章有介绍的,我把我自己在我的ogreview中用ogremax的方法写下来,供各位参考。(1)首先下载最新的ogremax. (2)找到图片中列出转载 2010-02-01 15:43:00 · 3571 阅读 · 2 评论 -
OGRE中用到的设计模式
1. 单例模式(Singleton) 2. 工厂方法(Factory Method) 3. 适配器模式(Adapter) 4. 桥接模式(Bridge) 5. 职责链模式(Chain of Responsibility) 6. 迭代器模式(Iterator)Ogre::VectorIterato转载 2010-02-01 15:50:00 · 1699 阅读 · 0 评论 -
让OGRE支持中文3
让OGRE支持中文3 ——中文输入-1.前言中文输入终于实现了,这并不是一个轻松的过程,足足用了几个月时间才搞定,真正负责中文输入处理的就是一个简单的类,不过为了实现这个类需要的接口对OGRE进行了大量的改动,在此期间读了相当多的OGRE源码,改写尽量保持OGRE自身的风格,零零碎碎改写的地方相当多,这篇文章难免有疏漏的地方,如果各位真的希望了解真正的改写,还是看看源码比较好,这篇文章能做一个转载 2010-02-04 15:21:00 · 1931 阅读 · 0 评论 -
OGRE 渲染 到 MFC
网上睇到一个OGRE——MFC的代码就是在mfc 单文挡架构下 cview 里面 onpait 这个消息函数加个settimer 刷新UI 然后 嗯 无了我在这个之上 将CView继成 用个MFC 多线程UI的东东 这样 旁边再加个停靠窗口 用CJ60LibCVIEW插入一个 ogreappliction 不过 这个监听器呢 用OIS OIS 一定要绑定主窗口句柄的 即CMainWND 而渲染那个转载 2010-02-21 14:14:00 · 2538 阅读 · 0 评论 -
Ogre与MFC结合时的内存泄漏问题
刚开始使用Ogre时总是碰到内存泄露,而且往往是一泄千里,等半分钟才能打完日志,我想这和Ogre中的大量大对象很有关系。下面就来分析一下内存泄露的产生原因。1. MFC中使用Ogre时发生的内存泄露这个问题比较有意思,其实并没有发生泄露,而是MFC自作主张的认为发生了内存泄露,实际上内存并不是没有释放,而是在VC报内存泄露之后释放,先来看一看MFC报内存泄露时的调用堆栈:msvcr71转载 2010-02-20 16:02:00 · 2340 阅读 · 0 评论 -
OIS鼠标在游戏窗口内外切换(non-exclusive input)
useful for non fullscreen mode, especially when debugging) 如果想鼠标在游戏窗口和其它应用程序间自动切换,或键盘在游戏之外使用,可在OIS中加入下面代码:// insert the following right before calling mInputSystem = OIS::InputManager::createInput转载 2010-02-21 15:01:00 · 2155 阅读 · 1 评论 -
OGRE+CEGUI+OIS 完美解决鼠标非独占使用
最近在用Ogre+CEGUI+OIS做游戏。在开发的过程出现了种种问题,现将问题一一整理,并将解决方案释出,供同好参阅。OIS默认鼠标占用模式是鼠标独占使用,表现为鼠标指针无法移除当前窗口。那么如果想把鼠标指针移除窗体怎么解决呢?让OIS使用鼠标协作模式啊!代码如下: //创建设备OIS::ParamList pl;size_t windowHnd = 0;std::ost转载 2010-02-21 15:05:00 · 1858 阅读 · 0 评论 -
OGRE中对象的内存分配[转]
如果看OGRE代码比较深入的话,你会发现在OGRE里定义的每一个类几乎都继承一个类似***Alloc的基类。例如类ConfigFile类继承自ConfigAlloc、类Root继承自RootAlloc等等。其实如果你打开OgreMemoryAllocatorConfig.h文件仔细看看就会发现,这些所谓千奇百怪的Alloc类其实都是一样的,都是继承自相同的类——StdAllocPolicy,只是作转载 2010-02-23 15:20:00 · 1552 阅读 · 1 评论 -
OGRE地形配置文件解析
既然你已经做出决定要使用地形场景管理器,那么下面介绍的一些东西是你需要知道的。 场景中地形的形状和着色是由高度图、地形纹理和地形细节纹理共同计算而得的。高度图是一张简单的灰阶图,其中每个像素点代表一个高度值,0代表这个地形的地面,255代表最高点。例子中有一个叫做terrain.png的高度图,可以供大家实验用。 一张纹理图伸展开来覆盖整个儿地形。纹理图一般都是棕、绿、白原创 2010-02-23 15:25:00 · 1749 阅读 · 0 评论 -
OGRE根据高度图创建Terrain地形流程分析
OGRE可以通过两个接口来生成地形,分别是void TerrainSceneManager::setWorldGeometry( const String& filename )以及void TerrainSceneManager::setWorldGeometry(DataStreamPtr& stream, const String& typeName ),两者的根本区别就是一个是传递地形信息转载 2010-02-23 15:26:00 · 1705 阅读 · 0 评论 -
Ogre中查询器Mask类型
使用场景查询时还有一件事要考虑。假设你在场景里加入了一个公告板或者粒子系统,并且想要移动它。你会发现查询不会返回你点击的公告板。这是因为SceneQuery还存在另外一个Mask,查询类型Mask(QueryTypeMask),它限制了你只能选择这个标记指定的类型。默认情况是,当你作一个查询时,它只返回实体类型的物体。 在你的代码里,如果想要查询返回公告板或者粒子系统,则你要在原创 2010-02-23 15:27:00 · 1313 阅读 · 0 评论 -
Ogre、Shadow Map、和其他
Ogre的影子分为两类:模版阴影和基于纹理的阴影。(1)模版阴影 SHADOWTYPE_STENCIL 分MODULATIVE,ADDITIVE两种。 不过模版阴影我不太care,没有太仔细看。大致基于闭合多边形的影子,我猜可能类似于Shadow Volume的实现(d3d sdk的那个例子我就没看懂过,干), 但是奇怪的是, Ogre的这种模版阴影的效率居然还相当高。 目测市面上一些O转载 2010-02-23 15:31:00 · 1987 阅读 · 0 评论 -
Ogre场景树更新过程
好久没写Blog,哎,还是有点偷懒了,今天就把原来做过的一个分析整理出来吧,主要关于Ogre场景树的更新过程。 Node的更新是分两个阶段的: 1:当前帧设置节点局部SRT(缩放、旋转、平移) 2:下一帧计算节点的世界SRT 也就是说Ogre不赞成你依赖他的场景树,试试运行这个例子:SceneNode *root = mSceneMgr->getRootSceneNode();Sc转载 2010-02-23 15:31:00 · 1809 阅读 · 0 评论 -
基于实时3D引擎计算角度的基本方法
最近给单位做几何算法时,突然发现单位以前做的图形核心算法,和我以前做过的算法。真的很不一样。不过如果我以前没做过计算角度的话,那么我现在肯定要花很多时间去研究几何算法。而现在是轻车熟路了。细想一下,计算角度要算一个算法领域的大门槛,自己如果不能很好的理解和运用角度知识,那么随便什么图形引擎都是用不好的。如果你算过角度。那么我提醒一点,我指的是图形上的角度标准定义,和自己的角度标准定义,以及换算转载 2010-02-23 15:32:00 · 1729 阅读 · 0 评论 -
ogre的主要渲染流程
很早以前就想写一些关于OGRE的文章了,一直没机会。 理解一个渲染引擎,我觉得最重要的是先抓住了它的主架构,它的主线,渲染流程,不然的话,一个引擎几万行,甚至几十万行的代码,光是打开solution就能吓你一跳了,OGRE也有十几万行的代码量,我一开始看它的时候也是无从下手,感觉代码太多了,不知道从哪开始看好,这个class看看,那个class看看,由于对整个引擎没有一个清晰的认识,看过了也印象不转载 2010-02-23 15:33:00 · 1845 阅读 · 0 评论 -
Ogre API 抽象层
OGRE通过一个抽象层,实现了API无关性。现在有RenderSystem_Direct3D9和RenderSystem_GL两个实现。下面主要通过考察RenderSystem_Direct3D9来分析一下API抽象层及其实现。API抽象层有两个核心的类:RenderSystem和HardwareBufferManager,另外还有一系列的HardwareVertexBuffer、Hardwa转载 2010-02-23 15:33:00 · 1805 阅读 · 0 评论 -
3D Engine 的设计架构
Introduction (简介)让咱们谈谈你如何撰写一份提供优雅性能的3D引擎。你的引擎需要提供的包括:曲面(curved surfaces)、动态光线(dynamic lighting)、体雾(volumetric fog)、镜面(mirrors)、入口(portals)、天空体(skyboxes)、节点阴影(vertex shaders)、粒子系统(particle systems)、静转载 2010-02-23 15:34:00 · 2315 阅读 · 1 评论 -
OGRE中的四元数与旋转
OGRE中的四元数与旋转 收藏 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://stdsoft.blogbus.com/logs/35987602.html 想象一个物体在3D空间中移动的过程,该物体必然会涉及到旋转。例如一个怪物,他的运动方向会改变,要改变其方向只需要对其进行旋转即可。旋转的方式大致分为三种:Euler旋转,矩阵旋转,以及四元数旋转转载 2010-02-23 15:35:00 · 1642 阅读 · 0 评论 -
与OGRE相关的概念
Viewport(视口) 某个Camera将要用来展示其场景的区域。 RenderWindow是所有物体展示的基本窗口;SceneManager可以用来创建和管理Camera。我们必须告知RenderWindow哪些Camera正在展示它们的场景,这些场景将要画在窗口的哪个部分。 这个我们要告诉RenderWindow的,某个Camera将要用来展示其场景的区域,就是转载 2010-02-23 15:38:00 · 1467 阅读 · 0 评论 -
Ogre实现场景动态装载卸载
常玩日本游戏的朋友们应该都知道。日本RPG中经常有一些场景切换的画面。比如在角色走动过程中,突然进入战斗状态,他会先把先前的场景渲染成一张图片,然后移开这张图片,在渲染另一个场景,譬如是战斗场景。最近在休闲网络游戏时,也碰到一个这样的需求。就是在一局游戏中动态的切换场景。这个项目时间比较紧迫,场景直接用了解析OFusion的OSM文件来做。但是我遇到一些问题是OfusionLoader这个转载 2010-02-23 15:39:00 · 1581 阅读 · 1 评论 -
Singleton模式与在Ogre中的实现
Singleton模式的用意是对于一个Class全局只能创建一个实例。常规的做法是把构造函数藏起来,然后通过静态方法返回唯一的一个静态实例。class Singleton{private: static Singleton *ms_Instance; public: Static Singleton* GetInstance() {转载 2010-02-23 15:39:00 · 1355 阅读 · 0 评论 -
OGRE疑问解答
1. 缓冲(buffered)输入方式和非缓冲(unbuffered)输入有什么区别? unbuffered:不断的响应按键信息,直到按键放开。例如,按下上下左右,使得角色持续移动。 一般来讲适合于3D场景漫游过程,当在每帧渲染之前,系统捕获输入设备状态,并根据这些状态对场景中的物体和摄象机进行控制。 buffered:在一个按键放开之前,只处理一次输入信转载 2010-02-23 15:40:00 · 1472 阅读 · 0 评论 -
OGRE资源相关分析
ResourceResource的类继承体系如下: Resource代表着一类可以被载入的资源,比如Mesh,Texture等。每个资源有其唯一的Name,根据Name可以定位到某个资源,这样也确保了资源只能被载入一次。并且Resource必须在一段时间不使用的时候要被删除。要实现为Resource子类有以下要求:1. 构造函数和Resorce有转载 2010-02-23 15:40:00 · 2215 阅读 · 0 评论 -
Ogre场景管理之Octree源代码分析
由于本人的引擎ProjectGaia服务于08年创新杯的游戏项目 – 3D太空游戏,所以理所应当加入Octree(八叉树 – 已经周宁学长发帖介绍过)场景管理器.参考了无数Octree的代码,发现还是我们可爱的Ogre写的最好,于是狂看n千行代码,把精髓提取出来给大家共享. 鉴于我们游戏版教程又n久没有更新了,今天发一篇我对Ogre场景管理器之Octree源代码分析的笔记. 所有代码采用伪转载 2010-02-23 15:42:00 · 3807 阅读 · 1 评论 -
Ogre中的多窗口渲染方法
最近由于工作的关系,希望用一个3D图形引擎实现棋牌类的2D游戏桌面。为了提供尽可能好的兼容性,选择了Ogre作为后台渲染引擎,因为它的评价在开源3D引擎中很不错,而且同时支持Opengl和D3D,所以没有多想就选择了它。到后期才发现,Ogre虽然是号称“Object Oriented Graphics Render Engine”,而且确实在场景,相机,窗口等等的三维对象的建模上做得相当不错,但是转载 2010-02-23 15:46:00 · 3454 阅读 · 1 评论 -
Ogre1.6和MFC内存泄露冲突
第一步,是卸载dll先后顺序的问题,让OgreMain_d.dll在mfc80d.dll之前析构,老外早就有分析了: i) in the General tab, switch "Use MFC in a shared DLL" to "Use Standard Windows Libraries" ii) in the C/C++/Preprocessor tab, add _AFXDLL t转载 2010-02-26 15:33:00 · 1465 阅读 · 0 评论 -
OGRE疑问
1. 缓冲(buffered)输入方式和非缓冲(unbuffered)输入有什么区别? unbuffered:不断的响应按键信息,直到按键放开。例如,按下上下左右,使得角色持续移动。 一般来讲适合于3D场景漫游过程,当在每帧渲染之前,系统捕获输入设备状态,并根据这些状态对场景中的物体和摄象机进行控制。 buffered:在一个按键放开之前,只处理一次输入信息。转载 2010-03-01 10:03:00 · 1297 阅读 · 0 评论 -
典型开源3D引擎分类比较
新一篇: 游戏引擎列表常见的3D引擎有:Unreal,Quake,Lithtech,OGRE,Nebula,Irrlicht,Truevision3D...等,其中开源免费的有:orge,irrlicht,fly3d, NeoEngine, revolution3d, Nebula2,Genesis3d等。OGRE 在免费、开源的引擎中评价最高,一个原因是作为一个图形渲染引擎,它支持的图形特性转载 2010-03-01 10:04:00 · 2658 阅读 · 0 评论 -
Ogre中SceneManager分析
SceneManager分析最近以为写引擎,需要研究ogre,以下是研究场景管理的结果。Ogre使用插件机制来实现场景管理功能。ScenceManager只是接口,他可以有很多具体的实现。Ogre允许在同一时刻同一场景中使用多个Scene Manager,这样在不同的场景类型切换时带来好处。(v1.4版本后加了一个SceneManagerEnumerator)。 场景管理主要工作包转载 2010-03-01 13:22:00 · 3202 阅读 · 0 评论 -
OgreODE入门
既然用了Ogre,那么一定是要有一个物理引擎的。最后选择了ODE,因为ODE在持续更新,文档稍微要多一些。但是中文文档基本没有,为了以后能快速阅读,只好自己先翻一下了。这只是一个介绍性的文档,其中的代码并不能形成一个完整的可执行程序。如果结合着OgreODE的Demo的代码看这篇文章,效果会很好的。原文:http://www.ogre3d.org/wiki/index.php/Firs原创 2010-03-03 13:24:00 · 2519 阅读 · 1 评论 -
ogre实现加入物理效果terrain
view plaincopy to clipboardprint?//------------------------------------------------------------------------------------------------ void TriangleMeshData::addVertexData(const VertexData *vertex_data原创 2010-03-04 15:04:00 · 1969 阅读 · 1 评论 -
OGRE高度图创建Terrain地形流程
转自:http://blog.youkuaiyun.com/gelu1231/archive/2009/02/20/3914189.aspx OGRE可以通过两个接口来生成地形,分别是void TerrainSceneManager::setWorldGeometry( const String& filename )以及void TerrainSceneManager::setWorldGeom原创 2010-03-04 15:05:00 · 1716 阅读 · 0 评论 -
天龙的地形实现技术
天龙的场景主文件为.Scene文件,其中定义了一个场景的灯光,天空,地面,以及所有的实体偷了两张图片来说明文件格式:;scene文件的实际格式 terrain是由和Scene文件同名扩展名为.Terrain的文件定义的 地形的信息保存在heightmao中,实际上是一个193X193的raw格式的文件;前八位标识版本号,后八位中,前四位为宽,后四位为高;FILE转载 2010-03-04 15:08:00 · 1930 阅读 · 0 评论 -
用OgreOde创建一个会走动的角色
第一版 by SuperMegaMau 这个教程包括的代码和算法是作者自己的经验,也许不正确或不怎么准确,如果发现问题请纠正。 内容1 介绍 2 创建物理模型 2.1 创建角色 2.2 获取 AABB 2.3 创建新空间 2.4 创建球 2.5 创建椭球 2.6 创建关节 3 移动角色转载 2010-03-03 13:05:00 · 1353 阅读 · 0 评论 -
Overlay中文显示
近日很多朋友咨询Overlay中文显示问题,回答的多了想索性再写个文档算了,放在网上共享,于是就有了本篇。 在Ogre1.2.5版本中,通过与Ogre官方论坛的开发者讨论实现了Overlay的中文显示,当初的实现非常的怪异,具体的实现可以参见Ogre官方论坛。随着Ogre的更新,现在Ogre已经发布了1.4.7,1.4系列版本有一个重要的改进,就是加入了UTFString,这为转载 2010-03-03 13:39:00 · 1577 阅读 · 0 评论 -
让Ogre支持中文路径与中文文件名
Ogre中路径与文件名不支持中文,这是VS2005之后版本的std::fstream对中文路径处理不正确的原因,所以加载中文路径或文件名不成功,解决办法: 在主函数开始加入 setlocale(LC_ALL,"Chinese-simplified"); 例如: view plaincopy to clipboardprint?virtual v转载 2010-03-01 14:08:00 · 3315 阅读 · 0 评论