QtOGRE-Qt中使用OGRE3d图形库

       OGRE3d的官方网站为 https://www.ogre3d.org/ ,使用该开源3D引擎的项目也很多了,我们知道在机器人模拟器中和三维游戏中使用的比较多,像Gazebo 机器人模拟器就是用的OGRE,这个开源引擎定位为三维图形引擎,不是完整功能的游戏引擎概念,做科学计算可视化或者图形图像研究等方面的也很多,它是基于插件机制在下面包装了DX和OpenGL图形API,向上抽象了场景,节点,摄像机,材质等图形对象,总体上具有研究价值,细节复杂,文档和国内研究者都太少,不适合入门或者游戏集成开发商选型,基本上是别人做的很棒到自己运行都可能出错,唯有花大量时间研究代码和摸索,可能是该库作者的初衷吧!今天抽空把QtOgre及相关笔记整理了一下。

       主要是参考的OGRE 的WIKI的QtOgre文章 http://wiki.ogre3d.org/QtOgre ,但是也是改了很多,工程源代码 qtogre0.zip 的链接放在百度网盘上 https://pan.baidu.com/s/1Qqi-0x-UsQCpYBlL5n4YHA。基于 Qt4.8.6 和 OGRE1.8.1  步骤如下:

1.下载预编译的 OgreSDK1.8.1 https://www.ogre3d.org/download/archives,选择 OGRE 1.8.1 SDK for Visual C++ 2010 (32-bit),链接为

https://sourceforge.net/projects/ogre/files/ogre/1.8/1.8.1/OgreSDK_vc10_v1-8-1.exe/download

下载的 OgreSDK_vc10_v1-8-1 解压到 D:\mclib ,用notepad++打开 D:\mclib\OgreSDK_vc10_v1-8-1\bin\debug\plugins_d.cfg

将 Plugin=RenderSystem_Direct3D11_d 前加 # 注掉,如下

 

 即我们缺省用OpenGL作为渲染API,免得还要安装DX11

 

2.Qt4.8.6及VC2010环境保证也已经安装,然后打开下载的 qtogre0.zip解压,VC2010打开工程

这里OgreWidget类即上面wiki页面的代码,主要添加了:

a.构造函数设置了OgreSDK的路径,我们是解压在D:/mclib/OgreSDK_vc10_v1-8-1

OgreWidget::OgreWidget(QWidget *parent):
QGLWidget( parent ),
mOgreWindow(NULL)
{
// mOgreSdkPath 是OgreSDK解压后的路径
mOgreSdkPath = "D:/mclib/OgreSDK_vc10_v1-8-1";

...

b.bool OgreWidget::loadResource()中是加载材质相关的资源

 

c. void OgreWidget::initializeGL()中初始化了资源,似乎只能在initializeGL()中初始化资源才能成功,应该跟OpenGL上下文有关。

创建了灯光,加载了ogrehead.mesh作为测试场景模型

void OgreWidget::initializeGL()
{
...
    Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);
    Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
...

   Ogre::Light* l = mSceneMgr->createLight("MainLight");
   l->setPosition(20,80,50);
...
   Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
   Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
}

 

3.编译运行,在

Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups

会花一点时间,最后就是下面的运行结果,左边的widget是UI,右边的是OgreWidget是3D视图

 

 

  

posted @ 2019-11-03 15:12  abcstar  阅读(1611)  评论(0编辑  收藏  举报