TEST(OsgViewElementRenderTest, StereoView) { std::shared_ptr<Runtime> runtime = std::make_shared<Runtime>(); std::shared_ptr<OsgManager> manager = std::make_shared<OsgManager>(); runtime->addManager(manager); runtime->addManager(std::make_shared<SurgSim::Framework::BehaviorManager>()); std::shared_ptr<Scene> scene = runtime->getScene(); /// Add a graphics component to the scene std::shared_ptr<OsgViewElement> viewElement = std::make_shared<OsgViewElement>("view"); auto boxElement = std::make_shared<SurgSim::Framework::BasicSceneElement>("box"); RigidTransform3d pose = makeRigidTransform(Vector3d(1.0, 1.0, 1.0), Vector3d(0.0, 0.0, 0.0), Vector3d(0.0, 1.0, 0.0)); viewElement->setPose(pose); scene->addSceneElement(viewElement); auto box = std::make_shared<OsgBoxRepresentation>("box"); box->setSizeXYZ(0.1, 0.1, 0.2); boxElement->addComponent(box); RigidTransform3d from = makeRigidTransform(Vector3d(0.2, 0.0, 0.0), Vector3d(0.0, 0.0, 0.0), Vector3d(0.0, 1.0, 0.0)); RigidTransform3d to = makeRigidTransform(Vector3d(-0.2, 0.0, 0.0), Vector3d(0.0, 0.0, 0.0), Vector3d(0.0, 1.0, 0.0)); auto interpolator = std::make_shared<SurgSim::Blocks::PoseInterpolator>("interpolator"); interpolator->setDuration(2.0); interpolator->setStartingPose(from); interpolator->setEndingPose(to); interpolator->setPingPong(true); interpolator->setTarget(boxElement); boxElement->addComponent(interpolator); scene->addSceneElement(boxElement); auto osgView = std::static_pointer_cast<OsgView>(viewElement->getView()); osgView->setStereoMode(View::STEREO_MODE_HORIZONTAL_SPLIT); osgView->setDisplayType(View::DISPLAY_TYPE_MONITOR); osgView->setEyeSeparation(0.06); osgView->setScreenWidth(0.486918); osgView->setScreenHeight(0.273812); osgView->setScreenDistance(1.0); runtime->start(); boost::this_thread::sleep(boost::posix_time::milliseconds(1000)); runtime->stop(); }
void Camera::setToDefaults( void ) { GeometricalTransformation::setToDefaults(); ProjectionTransformation::setToDefaults(); setProjectionLeft( vgm::MatrixR(vgm::MatrixR::getIdentity()) ); setLookAtLeft( vgm::MatrixR(vgm::MatrixR::getIdentity()) ); setProjectionRight( vgm::MatrixR(vgm::MatrixR::getIdentity()) ); setLookAtRight( vgm::MatrixR(vgm::MatrixR::getIdentity()) ); setViewport( vgm::Rectangle2i(0, 0, 1600, 1200) ); setFovy( (45.f) ); setMode( (MONOSCOPIC) ); setEyeSeparation( (0.f) ); setImageShift( (0.f) ); setRightEye( (true) ); }
ViewData::ViewData( seq::View& view, Model* model ) : Super( view ) , _initialModelMatrix( model->getModelMatrix( )) , _model( model ) , _view( view ) { view.setModelUnit( EQ_MM * 10.f ); setModelMatrix( _initialModelMatrix ); const auto& observer = _view.getObserver(); if( !observer ) return; const auto& leftEye = observer->getEyePosition( eq::EYE_LEFT ); const auto& rightEye = observer->getEyePosition( eq::EYE_RIGHT ); setEyeSeparation( rightEye.x() - leftEye.x( )); }
OculusView::OculusView(const std::string& name) : OsgView(name) { SURGSIM_ADD_SERIALIZABLE_PROPERTY(OculusView, std::shared_ptr<SurgSim::Framework::Component>, InputComponent, getInputComponent, setInputComponent); // Default Settings of Oculus DK2 setFullScreen(true); setDisplayType(View::DISPLAY_TYPE_HMD); setStereoMode(View::STEREO_MODE_HORIZONTAL_SPLIT); setScreenWidth(0.0631); setScreenHeight(0.071); setEyeSeparation(0.06); setScreenDistance(0.10); setTargetScreen(1); // Assume Oculus HMD has ID '1'. std::array<int, 2> dimensions = {1920, 1080}; setDimensions(dimensions); }