Ogre切换摄像头
来源:互联网 发布:vb中case是什么意思 编辑:程序博客网 时间:2024/05/16 17:50
Ogre切换摄像头
先看代码
class TutorialApplication : public BaseApplication{public: TutorialApplication(void); virtual ~TutorialApplication(void);protected: virtual void createScene(void);virtual bool frameRenderingQueued(const Ogre::FrameEvent& fe);virtual bool keyPressed(const OIS::KeyEvent& ke);virtual bool keyReleased(const OIS::KeyEvent& ke);virtual bool mouseMoved(const OIS::MouseEvent& me);virtual bool mousePressed(const OIS::MouseEvent& me, OIS::MouseButtonID id);virtual bool mouseReleased(const OIS::MouseEvent& me, OIS::MouseButtonID id);Ogre::Real mRotate;Ogre::Real mMove;Ogre::SceneNode* mCamNode;Ogre::Vector3 mDirection;};
TutorialApplication::TutorialApplication(void):mRotate(.13),mMove(250),mCamNode(0),mDirection(Ogre::Vector3::ZERO){}//---------------------------------------------------------------------------TutorialApplication::~TutorialApplication(void){}//---------------------------------------------------------------------------void TutorialApplication::createScene(void){ // Create your scene here :)mSceneMgr->setAmbientLight(Ogre::ColourValue(.2,.2,.2));Ogre::Entity* tudorEnity = mSceneMgr->createEntity("tudorhouse.mesh");Ogre::SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode("Node");node->attachObject(tudorEnity);Ogre::Light* light = mSceneMgr->createLight("Light1");light->setType(Ogre::Light::LT_POINT);light->setPosition(Ogre::Vector3(250,150,250));light->setDiffuseColour(Ogre::ColourValue::White);light->setSpecularColour(Ogre::ColourValue::White);node = mSceneMgr->getRootSceneNode()->createChildSceneNode("CamNode1",Ogre::Vector3(1200,-370,0));node->yaw(Ogre::Degree(90));mCamNode = node;node->attachObject(mCamera);node = mSceneMgr->getRootSceneNode()->createChildSceneNode("CamNode2",Ogre::Vector3(-500,-370,1000));node->yaw(Ogre::Degree(-30));//mCamera->setPosition(0,-370,1000);}bool TutorialApplication::frameRenderingQueued(const Ogre::FrameEvent& fe){bool ret = BaseApplication::frameRenderingQueued(fe);mCamNode->translate(mDirection*fe.timeSinceLastFrame,Ogre::Node::TS_LOCAL);return ret;}bool TutorialApplication::keyPressed(const OIS::KeyEvent& ke) { switch (ke.key){case OIS::KC_ESCAPE:mShutDown = true;break;case OIS::KC_1:mCamera->getParentSceneNode()->detachObject(mCamera);mCamNode = mSceneMgr->getSceneNode("CamNode1");mCamNode->attachObject(mCamera);break;case OIS::KC_2:mCamera->getParentSceneNode()->detachObject(mCamera);mCamNode = mSceneMgr->getSceneNode("CamNode2");mCamNode->attachObject(mCamera);break;case OIS::KC_UP:case OIS::KC_W:mDirection.z = -mMove;break;case OIS::KC_DOWN:case OIS::KC_S:mDirection.z = mMove;break;case OIS::KC_LEFT:case OIS::KC_A:mDirection.x = -mMove;break;case OIS::KC_RIGHT:case OIS::KC_D:mDirection.x = mMove;break;case OIS::KC_PGDOWN:case OIS::KC_E:mDirection.y = -mMove;break;case OIS::KC_PGUP:case OIS::KC_Q:mDirection.y = mMove;break;default:break;}return true; }bool TutorialApplication::keyReleased(const OIS::KeyEvent& ke) { switch (ke.key){case OIS::KC_UP:case OIS::KC_W:mDirection.z = 0;break;case OIS::KC_DOWN:case OIS::KC_S:mDirection.z = 0;break;case OIS::KC_LEFT:case OIS::KC_A:mDirection.x = 0;break;case OIS::KC_RIGHT:case OIS::KC_D:mDirection.x = 0;break;case OIS::KC_PGDOWN:case OIS::KC_E:mDirection.y = 0;break;case OIS::KC_PGUP:case OIS::KC_Q:mDirection.y = 0;break;default:break;}return true; }bool TutorialApplication::mouseMoved(const OIS::MouseEvent& me) { if (me.state.buttonDown(OIS::MB_Right)){mCamNode->yaw(Ogre::Degree(-mRotate * me.state.X.rel), Ogre::Node::TS_WORLD);mCamNode->pitch(Ogre::Degree(-mRotate * me.state.Y.rel), Ogre::Node::TS_LOCAL);}return true; }bool TutorialApplication::mousePressed(const OIS::MouseEvent& me, OIS::MouseButtonID id) { Ogre::Light* light = mSceneMgr->getLight("Light1");switch (id){case OIS::MB_Left:light->setVisible(!light->isVisible());break;default:break;}return true; }bool TutorialApplication::mouseReleased(const OIS::MouseEvent& me, OIS::MouseButtonID id) { return true; }通过重载虚方法,来获得按钮点击。
通过node->attchobject(mcamera)来切换摄像头位置。
0 0
- Ogre切换摄像头
- android camera 摄像头切换
- android camera 摄像头切换
- win8.1 摄像头切换
- iOS实现切换摄像头
- iOS 切换摄像头
- iphone 4 摄像头前后切换
- Android 如何切换前后摄像头
- QML切换多个摄像头
- QCamera切换多个摄像头
- Ogre中实时切换多个模型
- 模拟摄像头和cmos数字摄像头的切换
- android+unity游戏开发之摄像头切换
- iphone 4 摄像头是前后切换
- ios开发之设备前后摄像头切换
- unity3d 中控制手机前后摄像头切换
- 实现android 前后摄像头切换效果
- 高通AR之动态摄像头切换
- C++宽字符串转字符串
- 实现的效果:EditText提示文本字体大小和输入文本字体大小不同
- Java中的Hashtable实现方法
- Android UI 之 SeekBar
- Android 实现能够暂停的录音功能
- Ogre切换摄像头
- Spring实例学习
- OC笔记-学习self时候2个target然后修改名字出现linker command failed with exit code 1 (use -v to see invocation)
- linux Centos iptables 8080
- Maven--要点笔记
- 解析XML文件的两种方法
- 推荐Eclipse插件:Eclipse Color Theme
- 最大子序列和问题
- #笔记#圣思园 JavaWeb 第57讲——JS继承:对象冒充、call方法、apply方法、原型链方式、混合方式