一个更加丰富的世界
刚才创建的程序中空荡荡的,除了数值和Logo什么也没有。现在我们添加一些代码让这个世界丰富起来。在刚才的代码中找到TutorialApplication::createScene成员函数,今天后面的代码都是添加在这个函数中的。
为了能看清楚我们将要做的事情,首先要设置场景的光线。
mSceneMgr->setAmbientLight(ColourValue(1,1,1));
然后创建一个物体。
Entity *ent1 = mSceneMgr->createEntity("Robot","robot.mesh");
对了,还要有与之关联的SceneNode。
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("RobotNode");
最后,把它们关联在一起。
node1->attachObject(ent1);
好了,就是它了!编译运行你的程序,你会看到一个机器人站在屏幕上。如果你想了解这几个函数的具体用法请查看"OGRE API Reference",你可以在开始菜单中找到,作用相当于OGRE的MSDN。
坐标和向量
在继续深入之前,我们需要讨论一下屏幕坐标和Ogre向量对象。和许多图形引擎一样,Ogre使用x和z轴表示水平面,y轴作垂直轴。现在看着你的显示器,x轴是从你显示器的左边到右边,向右为x的正方向。y轴是从你显示器的底部到顶部,向上为y的正方向。z轴是从你的显示器屏幕内部向外延伸,向外为z的正方向。如图:
我们的机器人为什么是朝向x轴正方向的?这是mesh自身的属性,取决于它是如何设计的。Ogre不对你如何确定你模型的方向作任何假设。你所加载的每一个mesh都有它自己的开始方向。
Ogre使用向量(Vector)类而不是点(Point)类来描述位置和方向。向量的定义分2个向量(Vector2)、3个向量(Vector3)和4个向量(Vector4),其中Vector3最常用。如果你不熟悉向量,我建议你在开始用Ogre做任何事前先复习一下(向量),这对你将来复杂的编程会很有帮助。
下面我们再添加一个物体。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
跟刚才的代码很像,只是多了几个参数。我们为node2指定了坐标Vector3(50,0,0)。编译运行,你会看到有两个机器人排排站,哈哈。
简介:Basic Tutorial 1最后的1/3是大段的理论,是使用Ogre开发的必备知识,但恰恰是网络上诸多译本所不涉及的范围。在这里我将使用最简练的语言向你介绍它们,当然我会砍掉部分内容,但那都是无关紧要的。本教程基于Ogre Wiki上的Basic Tutorial系列,并依据笔者使用的vs2005+sp1+OgreSDK1.4.3开发环境简化整理而来,其中穿插着笔者自己的理解。这是教程的第一部分,也是我的学习笔记。
正文:
The Ogre Environment
本文提到的大部分文件(.DLL/.CFG)都可以在OgreSDK的"/bin/debug"或"/bin/release"文件夹下找到。
DLLs and Plugins
首先我来解释一下Ogre library是如何工作的。
在Ogre中存在着各式各样的共享库,它们被分到了不同的组里。其中第一组就是Ogre库本身以及它所依赖的库。Ogre库完全保存在OgreMain.dll中。这个dll又需要像cg.dll之类的其他的库。Ogre程序无一例外地需要这些DLL文件。
第二组是插件。Ogre将许多功能放在了插件里面,因此可以根据你程序的需要添加或删除它们。Ogre中的基础插件都使用"Plugin_"前缀。如果你的程序需要,你也可以自己创建新的插件。Ogre的渲染系统(OpenGL, DirectX等等)同样使用了插件技术。这些插件以"RenderSystem_"为名字的前缀。你可以为你的程序添加或删除渲染系统,这非常的有用。例如,你想在一个非标准的平台上使用Ogre,不能用OpenGL了,也不能用DirectX了,你就需要自己写一个RenderSystem插件。
第三组就是第3方的共享库和辅助库。Ogre本身只是一个图像渲染引擎,它没有GUI没有输入控制更没有物理引擎。你必须用别的库来完成这些。Ogre的demo和SDK中包含一些第3方库。例如,CEGUI轻松地将一个GUI系统融入了Ogre,键盘和鼠标的输入则是由OIS(一个输入系统)完成的。
Configuration Files
Ogre程序的运行需要几个配置文件,他们控制着哪些插件被加载,程序的资源又在哪里等等。我们将简要地看一下这些配置文件都是做什么用的。
plugins.cfg包含插件的使用情况。如果想要删除某个插件,只需简单的删除对应的行或者在行首添加"#"将其注释掉。添加控件则需要按照"Plugin=[PluginName]"的形式增加一行。注意,pluginname不需要以.DLL结尾,也不一定要以"RenderSystem_"或"Plugin_"开头。你也可以修改"PluginFolder"的值来定义Ogre寻找插件的路径,绝对路径和相对路径都可以,但是不能用系统的环境变量。
resources.cfg包含着Ogre搜寻资源文件的路径列表。资源包括scripts, meshes, textures等等。同样是只能使用绝对路径和相对路径,不能用系统的环境变量。注意,Ogre是不搜寻子目录的,所以如果有多层目录的话,你必须手动输入他们。例如,你有像"res/meshes"和"res/meshes/"这样的目录树,你就必须添加2个两个路径。
media.cfg包含了更多的资源细节信息,关于这个文件的更多信息请查看手册或Ogre的论坛。(我也没有找到关于这个文件的信息,以后找到了会补上的)
ogre.cfg文件由Ogre's configuration screen根据你的电脑和图形设置生成。发布你的程序时这个文件不需要一起打包。注意,你不能直接地编辑这个文件,你应该使用configuration screen配置。
quake3settings.cfg文件应同BSPSceneManager一起使用。如果你没有使用BSPSceneManager,那么你就可以忽略此文件,当然也就不需要发布它。
这些就是Ogre使用的全部配置文件。在稍后的教程里我们将涉及这些文件的更多信息,比如如何改变它们的位置,如何使用它们完成更多的事情等等。