zoukankan      html  css  js  c++  java
  • 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插件。

  • 相关阅读:
    用友U8 | 【存货管理】存货模块中采购入库单生成凭证的关联单据
    用友U8 | 【应收款管理】手工核销时提示:某某客户被其他用户锁定
    SQL Profiler 跟踪器工具使用说明
    转载--form表单的默认提交行为
    转载--c# chart控件基本使用方法(柱状图和饼图)
    转载--C#使用chart绘制实时折线图,波形图
    控件的InvokeRequired方法
    转载--浅析前端安全之 XSS
    转载--mysql语句如何插入含单引号或反斜杠的值详解
    转载--C#实现WinForm下DataGridView控件的拷贝和粘贴
  • 原文地址:https://www.cnblogs.com/fks143/p/4335841.html
Copyright © 2011-2022 走看看