Exemple #1
0
    //---------------------------- 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();
            }
        }
    }
Exemple #2
0
//---------------------------- 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();
		}
	}
}
Exemple #3
0
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);
}
Exemple #4
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);
    }