• 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插件。

  • 相关阅读:
    express中间件原理 && 实现
    vue、react、angular三大框架对比 && 与jQuery的对比
    javascript数据基本类型和引用类型区别详解
    HTML页面的重绘(repaint)和重流(reflow)
    web worker原理 && SSE原理
    C++ STL 初探
    JavaScript模块化 --- Commonjs、AMD、CMD、es6 modules
    nodejs(三) --- nodejs进程与子进程
    数学图形之海螺与贝壳
    数学图形之螺旋管
  • 原文地址:https://www.cnblogs.com/fks143/p/4335841.html
Copyright © 2020-2023  润新知