Ogre: 建立一个简单的框架——添加模型

[转载请保证内容的完整性和正确性]

建立一个简单的框架——添加模型

大多数Ogre安装教程后面都会附加一段代码,通过一个ExampleApplication来测试是否正确安装,如果看到一个Ogre的头就说明正确安装了,但我们不能做任何修改。我们需要重写其中的一些方法,才能构建自己的游戏。

这里的Listener和Application继承自ExampleListener/Application,当然你也可以独立实现,但是我觉得实在没必要,因为绝大多数内容在今后都会用到。

我的编程环境:Windows8.1 ;Visual Studio 2012 ;Ogre 1.8.1

建立一个Application类

 Application可以说是游戏的入口,继承自ExampleApplication类。

1 //DemoApplication.h
2  class DemoApplication : public ExampleApplication {
3  public:
4      DemoApplication(void);
5      ~DemoApplication(void);
6  protected:
7      void createScene(void);
8  };

修改main为:

1  int main() {
2      DemoApplication app;
3      app.go();
4      return 0;
5  }

这时运行代码,可以看到黑色的窗口,并且能够按ESC键退出。

在场景中添加一个模型

在这里首先要说明两个概念:实体和场景节点。

一个实体可以理解为一个3D模型,我们将要添加的机器人是一个实体,但是灯光、摄像机等不是一个实体。

一个实体只有与一个场景节点绑定后才会被渲染,场景节点可以绑定多个实体,或者非实体(如光照模型),个人认为它的作用类似于 OpenGL 中的 pushMatrix() 和 popMatrix() 。关于场景节点会在后面的章节详细叙述。

接下来我们实现添加灯光和一个机器人。在 createScene 方法中添加以下代码:

 1 //DemoApplication.cpp
 2  //添加灯光效果
 3  mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
 4  Light* l = mSceneMgr->createLight("MainLight");
 5  l->setPosition(20, 80, 50);
 6 
 7  //在当前场景管理器中创建一个对象
 8  Entity* ent = mSceneMgr->createEntity("Robot", "robot.mesh");
 9  //在场景管理器的根节点下创建一个名为“RobotNode”的场景节点
10  SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode("RobotNode");
11  //将实体绑定到场景节点上
12  node->attachObject(ent); 

这时运行代码,可以看到一个机器人,并且可以用WASD移动摄像机,鼠标旋转视角。这些是ExampleFrameListener的方法实现的。

关于mesh文件

mesh文件和obj、fbx一样,是3D模型的一种格式。OgreSDK中自带一些mesh文件,我们也可以将普通的3D模型文件通过3DMAX或者MAYA转换为mesh文件,只需要安装相应的插件即可。

如3DMAX中应安装OgreMax插件。

posted on 2015-03-13 19:56  FKS143  阅读(546)  评论(0编辑  收藏  举报

导航