#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char** argv) { osg::ArgumentParser arguments(&argc, argv); // construct the viewer. osgViewer::Viewer viewer; double x = 0.0; double y = 0.0; double w = 1.0; double h = 1.0; osg::ref_ptr terrain = new osgTerrain::TerrainNode; osg::ref_ptr locator = new osgTerrain::EllipsoidLocator(-osg::PI, -osg::PI*0.5, 2.0*osg::PI, osg::PI, 0.0); bool readParameter = false; do { readParameter = false; std::string filename; if (arguments.read("-e",x,y,w,h)) { // define the extents. locator = new osgTerrain::EllipsoidLocator(x,y,w,h,0); readParameter = true; } if (arguments.read("--hf",filename)) { readParameter = true; osg::notify(osg::NOTICE)<<"--hf "< hf = osgDB::readHeightFieldFile(filename); if (hf.valid()) { osg::ref_ptr hfl = new osgTerrain::HeightFieldLayer; hfl->setHeightField(hf.get()); hfl->setLocator(locator.get()); terrain->setElevationLayer(hfl.get()); osg::notify(osg::NOTICE)<<"created osgTerrain::HeightFieldLayer"< image = osgDB::readImageFile(filename); if (image.valid()) { osg::ref_ptr imageLayer = new osgTerrain::ImageLayer; imageLayer->setImage(image.get()); imageLayer->setLocator(locator.get()); terrain->setElevationLayer(imageLayer.get()); osg::notify(osg::NOTICE)<<"created Elevation osgTerrain::ImageLayer"< geometryTechnique = new osgTerrain::GeometryTechnique; terrain->setTerrainTechnique(geometryTechnique.get()); if (!terrain) return 0; // return 0; // add a viewport to the viewer and attach the scene graph. viewer.setSceneData(terrain.get()); return viewer.run(); }