博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ogre 2011-11-23
阅读量:5967 次
发布时间:2019-06-19

本文共 1922 字,大约阅读时间需要 6 分钟。

先贴点代码

#include "http://www.cnblogs.com/include/ogre/ExampleApplication.h"class MyApplication :public ExampleApplication{public:	void createScene()	{		Ogre::Entity* ent = mSceneMgr->createEntity("myentity", "Sinbad.mesh");		Ogre::SceneNode* node = mSceneMgr->createSceneNode("node");		node->setPosition(10, 10, 0);		mSceneMgr->getRootSceneNode()->addChild(node);		node->attachObject(ent);		Ogre::Entity* ent2 = mSceneMgr->createEntity("myentity2", "Sinbad.mesh");		Ogre::SceneNode* node2 = mSceneMgr->createSceneNode("node2");		node->addChild(node2);		node2->setPosition(10, 0, 0);		node2->pitch(Ogre::Radian(Ogre::Math::HALF_PI));		node2->attachObject(ent2);		Ogre::Entity* ent3 = mSceneMgr->createEntity("myentity3", "Sinbad.mesh");		Ogre::SceneNode* node3 = mSceneMgr->createSceneNode("node3");		node3->setPosition(20, 0, 0);		node->addChild(node3);		node3->yaw(Ogre::Degree(90.0f));		node3->attachObject(ent3);		Ogre::Entity* ent4 = mSceneMgr->createEntity("myentity4", "Sinbad.mesh");		Ogre::SceneNode* node4 = mSceneMgr->createSceneNode("node4");		node4->setPosition(30, 0, 0);		node->addChild(node4);		node4->roll(Ogre::Radian(Ogre::Math::HALF_PI));		node4->attachObject(ent4);	}private:};int main(){	MyApplication app;	app.go();	return 0;}

  

ogre启动时需要载入3个.cfg文件:ogre.cfg, plugins.cfg, resources.cfg。其中ogre.cfg保存了启动ogre时弹出对话框时我们选择的配置信息;plugins.cfg保存了ogre需要载入的插件信息;resources.cfg保存了一些orge启动时需要载入的资源。

mSceneMgr->createEntity(const String& entityName, const String& meshName, const String& groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME );

第一个参数是实体的名字,不能重复。

创建的实体要渲染出来的话,必须将其挂接到场景节点上。

 

The Ogre Scene Graph

场景图类似于一个树,有一个根节点,然后这个根节点有很多子节点,子节点又可以有很多子节点。若要渲染实体,需将其挂载到根节点或者根节点的子节点上去。

Ogre用的是右手坐标系。

场景节点的操作有位置变换(triple(x,y,z)),旋转(四元数quaternion),缩放(triple(x,y,z))。

需要注意的是:场景节点的变换是相对其父节点的,在其父节点的坐标空间里进行变换的。如果我们对一个父节点进行了变换,那么其所有的子节点都要受这个变换的影响。如果我们把父节点在x轴上移动10个单位,那么其所有的子节点也在x轴上移动10个单位。子节点的最终位置是用其所有父节点的坐标计算出来的。

你可能感兴趣的文章
【trie树】HDU4825 Xor Sum
查看>>
服务器搭建4 安装其它库
查看>>
CAD绘制栏杆5.10
查看>>
自动化学习
查看>>
JS中的!=、== 、!==、===的用法和区别。
查看>>
vs2017 增加平台集
查看>>
Kinect+OpenNI学习笔记之10(不需要骨骼跟踪的人体多个手部分割)
查看>>
spring mvc(4)处理模型数据
查看>>
JS 判断当前使用浏览器名及版本
查看>>
【Kernal Support Vector Machine】林轩田机器学习技术
查看>>
CSS+DIV学习笔记——页面布局
查看>>
让所有浏览器支持HTML5 video视频标签
查看>>
Socket 详解
查看>>
[Android Pro] Java进阶学习:jar打包详解
查看>>
xampp-apache配置
查看>>
Linux平台Cpu使用率的计算
查看>>
fiddler(二)、配置抓取https协议
查看>>
php环境配置
查看>>
zabbix专题:第十二章 zabbix proxy分布式监控配置
查看>>
tar 命令的详解
查看>>