From 7a18876c5b2d5ca623764a0c401c90ac10d53d61 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 3 Jul 2014 13:01:05 +0000 Subject: [PATCH] Changed enum usage to use the new osgVolume::VolumeSettings versions and added support for reading a VolumeSettings file. git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14349 16af8721-9629-0410-8352-f15c8da7e697 --- .../deprecated/SlideShowConstructor | 24 ++++++------------- src/osgPlugins/p3d/ReaderWriterP3D.cpp | 22 +++++++++++------ .../deprecated/SlideShowConstructor.cpp | 14 +++++------ 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/include/osgPresentation/deprecated/SlideShowConstructor b/include/osgPresentation/deprecated/SlideShowConstructor index 941d278d7..b78d1ba9a 100644 --- a/include/osgPresentation/deprecated/SlideShowConstructor +++ b/include/osgPresentation/deprecated/SlideShowConstructor @@ -30,7 +30,7 @@ #include #include -#include +#include #include #include @@ -284,23 +284,11 @@ public: struct VolumeData { - enum ShadingModel - { - Standard, - Light, - Isosurface, - MaximumIntensityProjection - }; - - enum Technique - { - FixedFunction, - RayTraced, - MultiPass - }; + typedef osgVolume::VolumeSettings::ShadingModel ShadingModel; + typedef osgVolume::VolumeSettings::Technique Technique; VolumeData(): - shadingModel(Standard), + shadingModel(osgVolume::VolumeSettings::Standard), useTabbedDragger(false), useTrackballDragger(false), region_in_pixel_coords(false), @@ -311,12 +299,14 @@ public: sampleRatioValue("1.0"), colorSpaceOperation(osg::NO_COLOR_SPACE_OPERATION), colorModulate(1.0f,1.0f,1.0f,1.0f), - technique(RayTraced) + technique(osgVolume::VolumeSettings::RayTraced) { hullPositionData.position = osg::Vec3(0.0,0.0,0.0); hullPositionData.frame = osgPresentation::SlideShowConstructor::MODEL; } + osg::ref_ptr volumeSettings; + std::string options; ShadingModel shadingModel; osg::ref_ptr transferFunction; diff --git a/src/osgPlugins/p3d/ReaderWriterP3D.cpp b/src/osgPlugins/p3d/ReaderWriterP3D.cpp index a62a89d33..a96f25250 100644 --- a/src/osgPlugins/p3d/ReaderWriterP3D.cpp +++ b/src/osgPlugins/p3d/ReaderWriterP3D.cpp @@ -1428,23 +1428,31 @@ void ReaderWriterP3DXML::parseVolume(osgPresentation::SlideShowConstructor& cons } } + std::string vs; + if (getProperty(cur, "vs", vs) || getProperty(cur, "VolumeSettings", vs)) + { + volumeData.volumeSettings = osgDB::readFile(vs); + OSG_NOTICE<<"VolumeSetting read "<setActiveProperty(0); break; - case(VolumeData::Light): sp->setActiveProperty(1); break; - case(VolumeData::Isosurface): sp->setActiveProperty(2); break; - case(VolumeData::MaximumIntensityProjection): sp->setActiveProperty(3); break; + case(osgVolume::VolumeSettings::Standard): sp->setActiveProperty(0); break; + case(osgVolume::VolumeSettings::Light): sp->setActiveProperty(1); break; + case(osgVolume::VolumeSettings::Isosurface): sp->setActiveProperty(2); break; + case(osgVolume::VolumeSettings::MaximumIntensityProjection): sp->setActiveProperty(3); break; } layer->addProperty(sp.get()); switch(volumeData.technique) { - case(VolumeData::FixedFunction): + case(osgVolume::VolumeSettings::FixedFunction): tile->setVolumeTechnique(new osgVolume::FixedFunctionTechnique); break; - case(VolumeData::RayTraced): + case(osgVolume::VolumeSettings::RayTraced): tile->setVolumeTechnique(new osgVolume::RayTracedTechnique); break; - case(VolumeData::MultiPass): + case(osgVolume::VolumeSettings::MultiPass): tile->setVolumeTechnique(new osgVolume::MultipassTechnique); break; }