//---------------------------- Stereo tuning ------------------------ void StereoManager::setFocalLength(Ogre::Real l) { if(l == std::numeric_limits<Ogre::Real>::infinity()) { setFocalLengthInfinite(true); } else { setFocalLengthInfinite(false); Ogre::Real old = focal_length_; focal_length_ = l; if( camera_ ) { camera_->setFocalLength(focal_length_); if(focal_plane_fixed_) updateCamera(focal_length_ - old); else if(debug_plane_) updateDebugPlane(); } } }
//---------------------------- Stereo tuning ------------------------ void StereoManager::setFocalLength(Ogre::Real l) { if(l == std::numeric_limits<Ogre::Real>::infinity()) { setFocalLengthInfinite(true); } else { setFocalLengthInfinite(false); Ogre::Real old = mFocalLength; mFocalLength = l; if( mCamera ) { mCamera->setFocalLength(mFocalLength); if(mIsFocalPlaneFixed) updateCamera(mFocalLength - old); else if(mDebugPlane) updateDebugPlane(); } } }
void StereoManager::createDebugPlane(Ogre::SceneManager *sceneMgr, const Ogre::String &leftMaterialName, const Ogre::String &rightMaterialName) { if(debug_plane_) return; sceneMngr_ = sceneMgr; Ogre::Plane screenPlane; screenPlane.normal = Ogre::Vector3::UNIT_Z; Ogre::MeshManager::getSingleton().createPlane("Stereo/Plane", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, screenPlane,1,1,10,10); debug_plane_ = sceneMgr->createEntity( "Stereo/DebugPlane", "Stereo/Plane" ); if(leftMaterialName == "") { left_mat_name_ = "Stereo/Wireframe"; } else { left_mat_name_ = leftMaterialName; } if(rightMaterialName == "") { right_mat_name_ = "Stereo/Wireframe"; } else { right_mat_name_ = rightMaterialName; } debug_plane_node_ = static_cast<Ogre::SceneNode*>(sceneMgr->getRootSceneNode()->createChild("Stereo/DebugPlaneNode")); debug_plane_node_->attachObject(debug_plane_); enableDebugPlane(true); updateDebugPlane(); }