ogre 入门教程
来源:互联网 发布:淘宝上磁疗贴商品标题 编辑:程序博客网 时间:2024/06/03 23:41
ogre 入门教程
先来看第一个ogre程序。
void TutorialApplication::createScene(void){<span style="white-space:pre"></span>// Create your scene here :)<span style="white-space:pre"></span>mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));<span style="white-space:pre"></span><span style="white-space:pre"></span>Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");<span style="white-space:pre"></span>Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();<span style="white-space:pre"></span>headNode->attachObject(ogreHead);<span style="white-space:pre"></span>Ogre::Light* light = mSceneMgr->createLight("MainLight");<span style="white-space:pre"></span>light->setPosition(20, 80, 50);}
第一步设置环境光。
第二步载入模型。
第三步打灯光。
我们还可以通过设置摄像机来使显示不同。
void TutorialApplication::createScene(void){// Create your scene here :)mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));mCamera->setPosition(0, 47, 222);Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();headNode->attachObject(ogreHead);Ogre::Light* light = mSceneMgr->createLight("MainLight");light->setPosition(20, 80, 50);}对于entity我们可以对它附加到的节点进行缩放。
void TutorialApplication::createScene(void){// Create your scene here :)mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));mCamera->setPosition(0, 47, 222);Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();headNode->setScale(2,1.2,1);headNode->attachObject(ogreHead);Ogre::Light* light = mSceneMgr->createLight("MainLight");light->setPosition(20, 80, 50);}ogre的所有操作都是针对节点的,entity必须attachObject到节点上才能渲染。
cocos2dx 的sprite却是从node派生。感觉ogre的这种写法比较干净,但是实际使用上却必须冗余。
再来看旋转。
void TutorialApplication::createScene(void){// Create your scene here :)mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));mCamera->setPosition(0, 47, 222);Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();headNode->roll(Ogre::Degree(-90));//z轴headNode->yaw(Ogre::Degree(-90));//y轴headNode->pitch(Ogre::Degree(-90));//x轴headNode->attachObject(ogreHead);Ogre::Light* light = mSceneMgr->createLight("MainLight");light->setPosition(20, 80, 50);}最后,我们多放几个模型到屏幕上。
void TutorialApplication::createScene(void){ // Create your scene here :)mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));mCamera->setPosition(0, 47, 222);Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();headNode->attachObject(ogreHead);Ogre::Entity* ogreEntity2 = mSceneMgr->createEntity("ogrehead.mesh");Ogre::SceneNode* ogreNode2 = mSceneMgr->getRootSceneNode()->createChildSceneNode(Ogre::Vector3(84, 48, 0));ogreNode2->attachObject(ogreEntity2);Ogre::Entity* ogreEnity3 = mSceneMgr->createEntity("ogrehead.mesh");Ogre::SceneNode* ogreNode3 = mSceneMgr->getRootSceneNode()->createChildSceneNode();ogreNode3->setPosition(0,104,0);ogreNode3->setScale(2,1.2,1);ogreNode3->attachObject(ogreEnity3);Ogre::Entity* ogreEnity4 = mSceneMgr->createEntity("ogrehead.mesh");Ogre::SceneNode* ogreNode4 = mSceneMgr->getRootSceneNode()->createChildSceneNode();ogreNode4->setPosition(-84,48,0);ogreNode4->roll(Ogre::Degree(-90));ogreNode4->attachObject(ogreEnity4);Ogre::Light* light = mSceneMgr->createLight("MainLight");light->setPosition(20, 80, 50);}
0 0
- ogre 入门教程
- Ogre
- ogre
- OGRE
- OGRE
- ogre
- OGRE
- ogre
- 入门教程
- OGRE乱记二
- OGRE乱记三
- 关于OGRE
- 学习OGRE~~
- Ogre介绍
- Ogre网站
- ogre+mfc
- 学习Ogre
- 初涉 OGRE
- 设计一个好的游戏世界观需要哪些必备要素?
- poj 2421 Constructing Roads(kruskal)(基础)
- redis数据丢失及解决
- 内部类和匿名内部类
- Linux中软链接与硬链接
- ogre 入门教程
- 一个对SIP协议栈封装的Demo
- About enterprisedb密码
- linux 查看系统信息命令(比较全)
- android 基本控件
- linux下vi编辑器回格不能删除内容,并且使用方向键也会有问题
- hdu5289-multi-university contest 1 -1002
- 7.22
- 黑马程序员——第八天(String类)