From Jason Beverage, added option to control whether simplification of

tiles is done during osgdem builds.
This commit is contained in:
Robert Osfield
2005-12-15 16:30:31 +00:00
parent 4b269ba9da
commit 72554ca27e
4 changed files with 24 additions and 6 deletions

View File

@@ -189,6 +189,7 @@ int main( int argc, char **argv )
arguments.getApplicationUsage()->addCommandLineOption("--RGB-16","Use 16bit RGBA destination imagery");
arguments.getApplicationUsage()->addCommandLineOption("--RGBA","Use 32bit RGBA destination imagery");
arguments.getApplicationUsage()->addCommandLineOption("--max-visible-distance-of-top-level","Set the maximum visible distance that the top most tile can be viewed at");
arguments.getApplicationUsage()->addCommandLineOption("--no-terrain-simplification","");
arguments.getApplicationUsage()->addCommandLineOption("--radius-to-max-visible-distance-ratio","Set the maximum visible distance ratio for all tiles apart from the top most tile. The maximum visuble distance is computed from the ratio * tile radius.");
arguments.getApplicationUsage()->addCommandLineOption("--no-mip-mapping","Disable mip mapping of textures");
arguments.getApplicationUsage()->addCommandLineOption("--mip-mapping-hardware","Use mip mapped textures, and generate the mipmaps in hardware when available.");
@@ -300,6 +301,12 @@ int main( int argc, char **argv )
dataset->setRadiusToMaxVisibleDistanceRatio(radiusToMaxVisibleDistanceRatio);
}
while (arguments.read("--no_terrain_simplification") ||
arguments.read("--no-terrain-simplification"))
{
dataset->setSimplifyTerrain(false);
}
std::string image_ext;
while (arguments.read("--image-ext",image_ext))
{

View File

@@ -1044,6 +1044,9 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced
void setUseLocalTileTransform(bool flag) { _useLocalTileTransform = flag; }
bool getUseLocalTileTransform() const { return _useLocalTileTransform; }
void setSimplifyTerrain(bool flag) { _simplifyTerrain = flag; }
bool getSimplifyTerrain() const { return _simplifyTerrain; }
void setDecorateGeneratedSceneGraphWithCoordinateSystemNode(bool flag) { _decorateWithCoordinateSystemNode = flag; }
bool getDecorateGeneratedSceneGraphWithCoordinateSystemNode() const { return _decorateWithCoordinateSystemNode; }
@@ -1159,6 +1162,8 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced
std::string _comment;
bool _writeNodeBeforeSimplification;
bool _simplifyTerrain;
osg::ref_ptr<osg::Node> _rootNode;
osg::ref_ptr<osg::State> _state;

View File

@@ -3023,14 +3023,15 @@ osg::Node* DataSet::DestinationTile::createPolygonal()
osgDB::writeNodeFile(*geode,"NodeBeforeSimplification.osg");
}
#if 1
unsigned int targetMaxNumVertices = 2048;
float sample_ratio = (numVertices <= targetMaxNumVertices) ? 1.0f : (float)targetMaxNumVertices/(float)numVertices;
if (_dataSet->getSimplifyTerrain())
{
unsigned int targetMaxNumVertices = 2048;
float sample_ratio = (numVertices <= targetMaxNumVertices) ? 1.0f : (float)targetMaxNumVertices/(float)numVertices;
osgUtil::Simplifier simplifier(sample_ratio,geometry->getBound().radius()/2000.0f);
osgUtil::Simplifier simplifier(sample_ratio,geometry->getBound().radius()/2000.0f);
simplifier.simplify(*geometry, pointsToProtectDuringSimplification); // this will replace the normal vector with a new one
#endif
simplifier.simplify(*geometry, pointsToProtectDuringSimplification); // this will replace the normal vector with a new one
}
osgUtil::TriStripVisitor tsv;
tsv.setMinStripSize(3);
@@ -3743,6 +3744,8 @@ DataSet::DataSet()
_writeNodeBeforeSimplification = false;
_simplifyTerrain = true;
setEllipsoidModel(new osg::EllipsoidModel());
}

View File

@@ -128,6 +128,8 @@ BEGIN_OBJECT_REFLECTOR(osgTerrain::DataSet)
I_Method0(osgTerrain::DataSet::MipMappingMode, getMipMappingMode);
I_Method1(void, setUseLocalTileTransform, IN, bool, flag);
I_Method0(bool, getUseLocalTileTransform);
I_Method1(void, setSimplifyTerrain, IN, bool, flag);
I_Method0(bool, getSimplifyTerrain);
I_Method1(void, setDecorateGeneratedSceneGraphWithCoordinateSystemNode, IN, bool, flag);
I_Method0(bool, getDecorateGeneratedSceneGraphWithCoordinateSystemNode);
I_Method1(void, setDecorateGeneratedSceneGraphWithMultiTextureControl, IN, bool, flag);
@@ -175,6 +177,7 @@ BEGIN_OBJECT_REFLECTOR(osgTerrain::DataSet)
I_Property(float, MaximumVisibleDistanceOfTopLevel);
I_Property(osgTerrain::DataSet::MipMappingMode, MipMappingMode);
I_Property(float, RadiusToMaxVisibleDistanceRatio);
I_Property(bool, SimplifyTerrain);
I_Property(float, SkirtRatio);
I_Property(osg::State *, State);
I_Property(osgTerrain::DataSet::TextureType, TextureType);