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