随笔分类 -  ogre3d

摘要:以上一节为基础,废话不多说。 首先新增一个节点,用于比较显示//新增一个节点 ent = mSceneMgr->createEntity("Quad"); ent->setMaterialName("MyMaterial9"); node = mSceneMgr->getRootSceneNode()->createChildSceneNode("Node2",Ogre::Vector3(15,0,0)); node->attachObject(ent); 我们改变下纹理坐标显示的比例为 0.2 manu 阅读全文
posted @ 2013-10-17 15:21 struggle_time 阅读(1188) 评论(0) 推荐(0) 编辑
摘要:这一节以基础16为基础,练习材质的使用。 第一,看看框架 1 //material 2 3 #include "ExampleApplication.h" 4 5 class TutorialApplication : public ExampleApplication 6 { 7 protected: 8 public: 9 TutorialApplication()10 {11 }12 13 ~TutorialApplication() 14 {15 }16 protected:17 void createScene(void)... 阅读全文
posted @ 2013-10-16 15:38 struggle_time 阅读(1148) 评论(0) 推荐(1) 编辑
摘要:这个问题很奇怪啊,不明白什么原因? 打开VS2010,打开项目,运行,就提示”无法启动此程序,因为计算机中丢失OgreMain_d.dll。尝试重新安装该程序以解决此问题。“ 然后就去配置环境变量,包含库文件,再运行,还是不行。 然后去Google ,发现大神们厉害,找到问题所在了,是打开方式不对。可又不明白什么原因。 正确的打开方式是: 直接打开项目文件夹,双击*.sln文件就没有问题了。 向大牛们致敬。 阅读全文
posted @ 2013-10-11 10:41 struggle_time 阅读(2070) 评论(0) 推荐(0) 编辑
摘要:建立自己的Ogre程序一直以来都是使用ExampleApplication.h来写程序,现在来看看它到底有什么神奇的地方。 首先,我们新建一个win32空项目 然后配置环境 最后新建define.cpp、define.h、main.cpp具体过程如下第一,在define.h中包含头文件,这里需要Orge.h文件,然后添加如下代码#include "Ogre.h"class MyApplication{public:MyApplication();~MyApplication();void go();protected:bool setup();//设置环境void setu 阅读全文
posted @ 2013-09-23 17:22 struggle_time 阅读(2539) 评论(1) 推荐(3) 编辑
摘要:这一节练习一下手动创建实体,用到了对象(ManualObject) 第一,依然是模板#include "ExampleApplication.h"class Example1 : public ExampleApplication{public: void createScene() { }protected:private:};#include INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ){ Example1 app; app.go(); ret... 阅读全文
posted @ 2013-09-22 15:31 struggle_time 阅读(1696) 评论(0) 推荐(1) 编辑
摘要:BSP(binary-space partitioning) Scene Manager(二叉空间分割)场景管理器比较适合用于室内场景。第一,添加框架代码如下 1 #include "ExampleApplication.h" 2 class Example1 : public ExampleApplication 3 { 4 public: 5 void createScene() 6 { 7 } 8 protected: 9 private:10 };11 12 #include 13 INT WINAPI WinMain( HINSTANCE hInst... 阅读全文
posted @ 2013-09-22 12:52 struggle_time 阅读(1281) 评论(0) 推荐(0) 编辑
摘要:今天按照网上的教程配置CEGUI, 一直运行不了,不明白原因,而后又出现了错误LNK1104: 无法打开文件“OgreGUIRenderer_d.lib”,经过反复检查,排除包含目录问题。 不过可能是教程有点老,我在CEGUI的lib文件夹下发现根本没有这个文件,倒是有个类似的文件CEGUIOgreRenderer_d.lib。原来不同的版本,生成的文件也不同,真是害苦了我们初学者啊总结如下: 首先添加包含目录 .......\include\CEGUI 然后添加 .......\Samples\Common\CEGUIRenderer\include 最后添加.......\S... 阅读全文
posted @ 2013-09-18 10:25 struggle_time 阅读(448) 评论(0) 推荐(0) 编辑
摘要:前几天设置天空盒时一直出问题,现在问题终于解决了,问题来的莫名其妙,走的也莫名其妙。 第一,还是框架,我们依然使用ExampleApplication文件,框架如下 1 #include "ExampleApplication.h" 2 3 class TutorialApplication : public ExampleApplication 4 { 5 protected: 6 public: 7 TutorialApplication() 8 { 9 }10 11 ~TutorialApplication() 12 {13 }14 p... 阅读全文
posted @ 2013-09-17 13:07 struggle_time 阅读(2148) 评论(0) 推荐(0) 编辑
摘要:以上一节为蓝本,这里增加一点难度,添加了四个节点,增加键盘控制移动速度,使用bool变量控制是否移动。 第一,要增加键盘控制,那就使用OIS::KeyListener,在监听器里添加一个父类KeyListener,添加成员变量并初始化 其中构造函数的ExampleFrameListener(win,cam,true,false);第三个参数改为true,表示使用带缓冲的键盘输入。 1 MoveDemoListener(RenderWindow *win,Camera *cam,SceneNode *sn,Entity *ent,std::deque &walk) 2 ... 阅读全文
posted @ 2013-09-13 17:47 struggle_time 阅读(1001) 评论(1) 推荐(1) 编辑
摘要:学了那么长时间,才学会跑起来。My Ogre,动起来。 第一,还是要把框架搭起来,这里我们用到双端队列deque,前面已经简单介绍过,头文件如下:#include "ExampleApplication.h"#include "deque"using namespace std; 第二,是我们的监听器,继承至ExampleFrameListener,构造函数我们使用五个参数,分别为渲染窗口,摄像机,场景节点,实体,行走路线上的位置坐标。1 MoveDemoListener(RenderWindow *win,Camera *cam,SceneNode * 阅读全文
posted @ 2013-09-12 18:08 struggle_time 阅读(1907) 评论(0) 推荐(1) 编辑
摘要:这一节,练习一下前几次学习的内容,功能很简单,就是建立两个不同的场景管理器,当按下键盘上某个键时切换镜头。 基本框架不变,这个监听器继承了两个父类,一个是我们的老朋友ExampleFrameListener,另一个我们也刚学过KeyListener。 好吧,开始。 首先我们声明一个宏,#define CAMERA_NAME "SceneCamera" ,这是我们要使用的摄像机常量,下面要多次使用。 然后我们定义两个全局函数,void setupViewport(RenderWindow *win, SceneManager *curr){ win->removeAll 阅读全文
posted @ 2013-09-09 23:35 struggle_time 阅读(961) 评论(0) 推荐(0) 编辑
摘要:用文件来记录 Ogre 系统初始化、运行、结束以及调试信息。使用日志便于我们调试程序。Ogre 日志系统由两个类组成:Log 类与 LogManager。 1、Log类 Log 类的一个对象对应于一个日志文件,log类中含有成员函数logMessage()负责向文件中填入信息。1 void logMessage(const String& message, LogMessageLevel lml = LML_NORMAL); // 第一个参数就是要写入的信息,第二个参数代表这条信息的重要程度,分三种参数值重要程度LML_TIVIAL最低LML_NORMAL一般LML_CRITI... 阅读全文
posted @ 2013-09-06 15:38 struggle_time 阅读(929) 评论(0) 推荐(0) 编辑
摘要:带缓冲的鼠标、键盘操作,这里的鼠标、按键事件会被各自的监听器捕获。其中OIS中定义的两个类MouseListener,KeyListener负责对事件的处理。我们需要使用这两个类的接口。 当一个键被按下时,会触发一个 KeyListener::keyPressed 事件,而当这个键被释放(不再按下)时,KeyListener::keyReleased 事件被触发给所有已注册的KeyListener 类。 鼠标键被按下/释放的函数: MouseListener::mousePressed 和MouseListener::mouseReleased. 它还包含一个 mouseMoved ... 阅读全文
posted @ 2013-09-05 16:50 struggle_time 阅读(1545) 评论(0) 推荐(0) 编辑
摘要:要实现键盘,鼠标对场景的控制,首先要帧监听,就是在每一帧的渲染前后对它进行操作。这里的操作没有用到缓冲区,只是简单的直接获取。 1、这些步骤和前面的一样,直接上代码,操作还是在createScene函数里。代码如下: 1 void createScene() 2 { 3 //载入实体 4 mSceneMgr->setAmbientLight(ColourValue(0.25,0.25,0.25));//设置环境色 5 Entity *ent1 = mSceneMgr->createEntity("ninja","ninja.me... 阅读全文
posted @ 2013-09-04 22:58 struggle_time 阅读(1554) 评论(0) 推荐(1) 编辑
摘要:这一章练习一下光源的使用,光源分为三种:点光源,聚光源,有向光。具体内容前面说过,这里就不解释了。 继续在上一章的程序的基础上实现。 1、创建摄像机(Camera) createCamera()函数是继承自ExampleApplication的虚函数,把它实现了。 1 class Example1:public ExampleApplication 2 { 3 public: 4 //..........其他代码 5 virtual void createCamera() 6 { 7 mCamera = mSceneMgr->createCam... 阅读全文
posted @ 2013-09-04 11:07 struggle_time 阅读(1344) 评论(0) 推荐(2) 编辑
摘要:资源管理 可管理的资源有: 材质资源:在.material文件中包含的材质脚本定义(技术、通路、纹理单元等数据的定义)。 模型资源:经过优化的二进制网格模型文件,扩展名为.mesh。包含几何信息和一些动画数据。 骨骼资源:经过优化的二进制骨骼文件,扩展名为.skeleton。包含骨骼动的数据以及相应帧动画的信息。 字体资源:字体的配置信息,扩展名为.fontdef的文件,其中包括TrueType字体的引用以及其他字体配置数据。 GPU程序资源:在.program中对GPU程序的声明信息,与材质脚本.material文件有类似的结构,但Ogre保证所有.program文件都会在处理材... 阅读全文
posted @ 2013-09-03 10:40 struggle_time 阅读(1242) 评论(0) 推荐(0) 编辑
摘要:接着上篇写http://www.cnblogs.com/songliquan/p/3294902.html 旋转这里有必要看一下关于旋转的源代码: virtual void pitch(const Radian& angle, TransformSpace relativeTo = TS_LOCAL); virtual void yaw(const Radian& angle, TransformSpace relativeTo = TS_LOCAL); virtual void roll(const Radian& angle, TransformSpace rela 阅读全文
posted @ 2013-09-02 17:03 struggle_time 阅读(3617) 评论(0) 推荐(1) 编辑
摘要:SDK安装以及编译1、下载SDK,地址如下 http://www.ogre3d.org/download/sdk2、安装SDK,直接解压到相应目录,如D:/ogreSDK3、我用的是1.8版本,打开SDK安装目录,如图: D:\Program Files\OgreSDK_vc10_v1-8-1 用VS2010打开ogre.sln对其进行生成解决方案,过程有点慢,如果没有出问题,那就可以进行下一步了。 4、打开D:\Program Files\OgreSDK_vc10_v1-8-1\bin\debug下面的SampleBrowser_d.exe,就可以进入Sample 创建项目并... 阅读全文
posted @ 2013-09-02 09:48 struggle_time 阅读(3652) 评论(0) 推荐(0) 编辑
摘要:物体着色的基础 --- 四种不同光照作用 1、环境反射 近似的模拟了场景中的全局辐射,也就是用来近似模拟所有光在场景中不断散射的结果。材质中有相应的属性来代表这种环境反射颜色。 2、漫反射 这种颜色是接收到直接从光源发射的光之后产生的,“漫反射”和现实中的意思一样,就是描述光被物体反射到多个方向的效果。 3、放射 指的是自发光物体所拥有的颜色。具体意思就是放射光只能照亮自己却不能对周围任何物体产生影响。这种光很奇怪的,现实中没有的。 4、镜面反射 描述了物体对被光照后的“高光”效果。这个也比较抽象。纹理贴图(Texture Mapping) 可以用程序把纹理通过一个独立的坐标... 阅读全文
posted @ 2013-09-01 18:01 struggle_time 阅读(1495) 评论(0) 推荐(0) 编辑
摘要:场景管理器的使用 最常使用的坐标系统空间(同时也是Ogre程序所能提供的)即是世界空间(World)、父节点空间(Parent)以及本地空间(Local)。1、世界空间 就是物体所存在的地方,当我们把一个模型放进世界模型里面去,那么它就有了一个世界坐标,这个世界坐标是用来标记世界中不同的模型所处的位置的。在世界空间里,世界的中心就是远点(0,0,0)。而在ogre中,这个也相当于场景根节点的位置,所以世界空间在ogre中也可以理解为“相对于场景根节点”。世界空间也意味着用全局的X,Y,Z坐标。 父节点空间变换是相对于一个节点的父节点,也就是把父节点的坐标作为变换空间的矩阵原点。本地空间变... 阅读全文
posted @ 2013-08-31 23:11 struggle_time 阅读(1635) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示