diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 135478a4c..64d327ed6 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -119,6 +119,7 @@ IF(DYNAMIC_OPENSCENEGRAPH) ADD_SUBDIRECTORY(osgstereomatch) ADD_SUBDIRECTORY(osgterrain) ADD_SUBDIRECTORY(osgthreadedterrain) + ADD_SUBDIRECTORY(osgtransferfunction) ADD_SUBDIRECTORY(osgtext) ADD_SUBDIRECTORY(osgtext3D) ADD_SUBDIRECTORY(osgtexture1D) diff --git a/examples/osgtransferfunction/CMakeLists.txt b/examples/osgtransferfunction/CMakeLists.txt new file mode 100644 index 000000000..e67a4a9ec --- /dev/null +++ b/examples/osgtransferfunction/CMakeLists.txt @@ -0,0 +1,6 @@ +SET(TARGET_SRC osgtransferfunction.cpp ) + +SET(TARGET_ADDED_LIBRARIES osgVolume osgManipulator) + +#### end var setup ### +SETUP_EXAMPLE(osgtransferfunction) diff --git a/examples/osgtransferfunction/osgtransferfunction.cpp b/examples/osgtransferfunction/osgtransferfunction.cpp new file mode 100644 index 000000000..f8c08781d --- /dev/null +++ b/examples/osgtransferfunction/osgtransferfunction.cpp @@ -0,0 +1,115 @@ +/* OpenSceneGraph example, osggeometry. +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ + +#include +#include +#include + +#include +#include +#include + +#include + +#include + + + +osg::TransferFunction1D* readTransferFunctionFile(const std::string& filename, float colorScale=1.0f) +{ + std::string foundFile = osgDB::findDataFile(filename); + if (foundFile.empty()) + { + std::cout<<"Error: could not find transfer function file : "<> value >> red >> green >> blue >> alpha; + if (fin) + { + std::cout<<"value = "<assign(colorMap); + + return tf; +} + + +int main(int argc, char ** argv) +{ + osg::ArgumentParser arguments(&argc, argv); + + osgViewer::Viewer viewer(arguments); + + osg::ref_ptr tf; + std::string filename; + if (arguments.read("--tf",filename)) + { + tf = readTransferFunctionFile(filename); + } + + osg::ref_ptr layer; + + osg::ref_ptr model = osgDB::readNodeFiles(arguments); + + osgVolume::VolumeTile* volumeTile = dynamic_cast(model.get()); + if (!volumeTile) + { + OSG_NOTICE<<"Please specify volume dataset on command line."<getLayer(); + + if (!layer) + { + OSG_NOTICE<<"No layer loaded."< imageLayer = dynamic_cast(layer.get()); + + osg::ref_ptr image = imageLayer.valid() ? imageLayer->getImage() : 0; + + if (!image) + { + OSG_NOTICE<<"No image found."<