From 45de7a5815e17d6720f82d698c2a4b9bc3c2c077 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sun, 17 Mar 2002 18:44:47 +0000 Subject: [PATCH] Added new osgstereoimage demo which loads two stero paired images to create a 3D via of photographed scene. --- VisualStudio/VisualStudio.dsw | 24 ++++ src/Demos/Makefile | 2 +- src/Demos/osgstereoimage/Makefile | 27 ++++ src/Demos/osgstereoimage/osgstereoimage.cpp | 140 ++++++++++++++++++++ src/osg/Image.cpp | 5 +- 5 files changed, 196 insertions(+), 2 deletions(-) create mode 100644 src/Demos/osgstereoimage/Makefile create mode 100644 src/Demos/osgstereoimage/osgstereoimage.cpp diff --git a/VisualStudio/VisualStudio.dsw b/VisualStudio/VisualStudio.dsw index 443ed1f85..1c9356c9f 100644 --- a/VisualStudio/VisualStudio.dsw +++ b/VisualStudio/VisualStudio.dsw @@ -648,6 +648,30 @@ Package=<4> ############################################################################### +Project: "osgtexture"=".\Demos\osgstereo\osgstereo.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name osg + End Project Dependency + Begin Project Dependency + Project_Dep_Name osgUtil + End Project Dependency + Begin Project Dependency + Project_Dep_Name osgDB + End Project Dependency + Begin Project Dependency + Project_Dep_Name osgGLUT + End Project Dependency +}}} + +############################################################################### + Project: "tga"=".\osgPlugins\tga\tga.dsp" - Package Owner=<4> Package=<5> diff --git a/src/Demos/Makefile b/src/Demos/Makefile index 5b7c5126c..9d8606ed6 100644 --- a/src/Demos/Makefile +++ b/src/Demos/Makefile @@ -1,7 +1,7 @@ #!gmake SHELL=/bin/sh -DIRS = sgv osgconv osgcube osgscribe osgreflect osgtexture osgimpostor osgviews osgcopy osgbillboard hangglide +DIRS = sgv osgconv osgcube osgscribe osgreflect osgtexture osgimpostor osgviews osgcopy osgbillboard osgstereoimage hangglide # comment out if you don't have the freetype and GLU1.3 library installed. DIRS += osgtext diff --git a/src/Demos/osgstereoimage/Makefile b/src/Demos/osgstereoimage/Makefile new file mode 100644 index 000000000..4ebcb2761 --- /dev/null +++ b/src/Demos/osgstereoimage/Makefile @@ -0,0 +1,27 @@ +#!gmake +include $(OSGHOME)/Make/makedefs + +C++FILES = \ + osgstereoimage.cpp + +TARGET = $(OSGHOME)/bin/osgstereoimage + +TARGET_BIN_FILES = osgstereoimage + +#note, use this library list when using the Performer osgPlugin. +#LIBS = ${PFLIBS} -losgGLUT -losgUtil -losgDB -losg $(GLUTLIB) -lGLU -lGL -lm -lXmu -lX11 -lXi + +#note, standard library list. +LIBS = -losgGLUT -losgUtil -losgDB -losg $(GLUTLIB) $(GL_LIBS) $(X_LIBS) + +#under Darwin we have to use the framework stuff to get GLUT OpenGL etc. +MACOSXLIBS = -losgGLUT -losgUtil -losgDB -losg -lm -ldl -lstdc++ -lobjc + + +C++FLAGS += -I$(OSGHOME)/include +LDFLAGS += -L$(OSGHOME)/lib + +include $(OSGHOME)/Make/makerules + +test : + osgstereoimage Images/dog_left_eye.jpg Images/dog_right_eye.jpg diff --git a/src/Demos/osgstereoimage/osgstereoimage.cpp b/src/Demos/osgstereoimage/osgstereoimage.cpp new file mode 100644 index 000000000..93f8422a4 --- /dev/null +++ b/src/Demos/osgstereoimage/osgstereoimage.cpp @@ -0,0 +1,140 @@ +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + + + + +void write_usage(std::ostream& out,const std::string& name) +{ + out << std::endl; + out <<"usage:"<< std::endl; + out <<" "< commandLine; + for(int i=1;isetStereo(true); + + // configure the viewer from the commandline arguments, and eat any + // parameters that have been matched. + viewer.readCommandLine(commandLine); + + // configure the plugin registry from the commandline arguments, and + // eat any parameters that have been matched. + osgDB::readCommandLine(commandLine); + + + if (commandLine.size()<2) + { + osg::notify(osg::NOTICE) << "Please specify two images required for stereo imaging."<s()+imageRight->s())*0.5f; + float average_t = (imageLeft->t()+imageRight->t())*0.5f; + + osg::Geode* geodeLeft = osg::createGeodeForImage(imageLeft,average_s,average_t); + geodeLeft->setNodeMask(0x01); + + osg::Geode* geodeRight = osg::createGeodeForImage(imageRight,average_s,average_t); + geodeRight->setNodeMask(0x02); + + + osg::Group* rootNode = new osg::Group; + rootNode->addChild(geodeLeft); + rootNode->addChild(geodeRight); + + + // add model to viewer. + osgUtil::SceneView* sceneview = new osgUtil::SceneView; + sceneview->setDisplaySettings(viewer.getDisplaySettings()); + sceneview->setDefaults(); + sceneview->setCullMask(0xffffffff); + sceneview->setCullMaskLeft(0x00000001); + sceneview->setCullMaskRight(0x00000002); + sceneview->setSceneData(rootNode); + viewer.addViewport( sceneview ); + + // register trackball. + viewer.registerCameraManipulator(new osgUtil::TrackballManipulator); + + viewer.open(); + + viewer.run(); + } + else + { + osg::notify(osg::NOTICE) << "Unable to load two images required for stereo imaging."<max_size) new_s = max_size; if (new_t>max_size) new_t = max_size;