Changeset 863
- Timestamp:
- 01/28/08 18:03:19
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/applications/vpbheightfieldmapping/vpbheightfieldmapping.cpp
r805 r863 14 14 #include <osg/CoordinateSystemNode> 15 15 #include <osg/Material> 16 #include <osg/PolygonOffset> 16 17 17 18 #include <osg/Vec4> … … 97 98 arguments.getApplicationUsage()->addCommandLineOption("--DrawThreadPerContext","Select DrawThreadPerContext threading model for viewer."); 98 99 arguments.getApplicationUsage()->addCommandLineOption("--CullThreadPerCameraDrawThreadPerContext","Select CullThreadPerCameraDrawThreadPerContext threading model for viewer."); 100 arguments.getApplicationUsage()->addCommandLineOption("-hf or --HeightField <height field>","Load the height field."); 101 arguments.getApplicationUsage()->addCommandLineOption("-shp <shape file>","The geometry to reproject."); 99 102 100 103 // if user request help write it out to cout. … … 171 174 // osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFiles(arguments); 172 175 std::string modelFile("/home/ledocc/Work/VPB/data/lines.shp"); 173 osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile(modelFile); 174 if (!loadedModel) 176 osg::ref_ptr<osg::Group> loadedModel; 177 while (arguments.read("-shp",modelFile)) { 178 osg::ref_ptr<osg::Node> shp = osgDB::readNodeFile(modelFile); 179 if (shp.valid()) { 180 if (!loadedModel.valid()) { 181 loadedModel = new osg::Group; 182 osg::StateSet *sset = loadedModel->getOrCreateStateSet(); 183 sset->setRenderBinDetails(sset->getBinNumber()+1, sset->getBinName()); 184 sset->setAttributeAndModes(new osg::PolygonOffset(-1.0, -2.0)); 185 } 186 loadedModel->addChild(shp.get()); 187 } 188 } 189 if (!loadedModel->getNumChildren()) 175 190 { 176 191 std::cout << arguments.getApplicationName() <<": No data loaded" << std::endl; … … 179 194 180 195 std::string heightFieldFile("/home/ledocc/Work/VPB/data/dtm_200m.tif.gdal"); 196 if (!arguments.read("-hf", heightFieldFile)) 197 arguments.read("--HeightField", heightFieldFile); 198 181 199 osg::ref_ptr<osg::HeightField> hf = osgDB::readHeightFieldFile(heightFieldFile); 182 200 if (!hf.valid()) { 201 osg::notify(osg::FATAL)<<"Unable to load the height field <"<<heightFieldFile<<">"<<std::endl 202 <<"NB: The .gdal pseudo loader might be useful..."<<std::endl; 203 return -1; 204 } 205 183 206 // ** map loaded model on HeightField 184 207 vpb::HeightFieldMapper hfm(*hf.get()); … … 199 222 osg::ref_ptr<osg::Geode> geode = new osg::Geode; 200 223 geode->addDrawable(new osg::ShapeDrawable(hf.get())); 224 osg::StateSet *sset = geode->getOrCreateStateSet(); 225 sset->setRenderBinDetails(sset->getBinNumber()-1, sset->getBinName()); 226 sset->setAttributeAndModes(new osg::PolygonOffset(1.0, 2.0)); 227 201 228 202 229 osg::ref_ptr<osg::Group> group(new osg::Group);
