//---------------------------- 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::init(Ogre::Viewport* leftViewport, Ogre::Viewport* rightViewport) { if(mStereoMode == SM_NONE) return; if(!leftViewport) OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS, "At least left viewport must be provided", "StereoManager::init"); mCamera = leftViewport->getCamera(); if(!mCamera && rightViewport && !rightViewport->getCamera()) OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS, "Viewports must have cameras associated", "StereoManager::init"); if(rightViewport && mCamera != rightViewport->getCamera()) OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS, "Left and right viewports must have the same camera associated", "StereoManager::init"); if(mAvailableModes[mStereoMode].mUsesCompositor) { Ogre::Viewport *newLeft, *newRight; initCompositor(leftViewport, mAvailableModes[mStereoMode].mMaterialName, newLeft, newRight); leftViewport = newLeft; rightViewport = newRight; } initListeners(leftViewport, rightViewport); RenderTargetList::iterator it; RenderTargetList::iterator end = mRenderTargetList.end(); for(it = mRenderTargetList.begin(); it != end; ++it) { it->first->setAutoUpdated(false); } bool infinite = mFocalLengthInfinite; setFocalLength(mFocalLength); // setFocalLength will erase the infinite focal length option, so backup it and restore it setFocalLengthInfinite(infinite); if(mIsFocalPlaneFixed) updateCamera(0); }
void StereoManager::init(Ogre::Viewport* leftViewport, Ogre::Viewport* rightViewport) { if(stereo_mode_ == SM_NONE) return; if(!leftViewport) OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS, "At least left viewport must be provided", "StereoManager::init"); camera_ = leftViewport->getCamera(); if(!camera_ && rightViewport && !rightViewport->getCamera()) OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS, "Viewports must have cameras associated", "StereoManager::init"); if(rightViewport && camera_ != rightViewport->getCamera()) OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS, "Left and right viewports must have the same camera associated", "StereoManager::init"); if(available_nodes_[stereo_mode_].uses_compositor_) { Ogre::Viewport *newLeft, *newRight; initCompositor(leftViewport, available_nodes_[stereo_mode_].mat_name_, newLeft, newRight); leftViewport = newLeft; rightViewport = newRight; } initListeners(leftViewport, rightViewport); RenderTargetList::iterator it; RenderTargetList::iterator end = rendertarget_list_.end(); for(it = rendertarget_list_.begin(); it != end; ++it) { it->first->setAutoUpdated(false); } bool infinite = infinite_focal_length_; setFocalLength(focal_length_); // setFocalLength will erase the infinite focal length option, so backup it and restore it setFocalLengthInfinite(infinite); if(focal_plane_fixed_) updateCamera(0); }