26 #include <osgTerrain/TerrainTile>
27 #include <osgEarth/LandCoverLayer>
28 #include <osgEarth/Profile>
29 #include <osgEarth/TileKey>
30 #include <osgEarth/MapNode>
31 #include <osgEarth/TerrainTileModel>
32 #include <osgEarthProcedural/LifeMapLayer>
39 #include <boost/ptr_container/ptr_vector.hpp>
41 #include <tbb/spin_rw_mutex.h>
42 #include <tbb/task_arena.h>
51 class DtGeodeticCoord;
68 class OsgEarthTileDataCallback;
69 typedef boost::ptr_vector<TileSpatialIndex>
TileRoots;
77 osgEarth::MapNode* mapNode);
86 unsigned getHighestLodForLandCover()
const;
95 virtual boost::optional<DtTerrainIntersectOptions::Fidelity>
intersectFidelity()
const;
99 virtual unsigned maxLOD()
const;
100 virtual void setMaxLOD(
unsigned);
107 virtual void setMaxLODForBilinearIntersection(
unsigned);
117 virtual void setTriangleOutputMergeTolerance(
double tol);
119 virtual void setIntersectionTriangleMergeTolerance(
double tol);
125 virtual void setMinElevationIndexLOD(
unsigned);
127 virtual void setMaxElevationIndexLOD(
unsigned);
132 virtual double maxChordLengthBeforeSplitSquared()
const;
133 virtual void setMaxChordLengthBeforeSplit(
double);
138 virtual unsigned maxElevationChordSplitTestLOD()
const;
139 virtual void setMaxElevationChordSplitTestLOD(
unsigned);
143 virtual unsigned tileCount()
const;
146 virtual unsigned cellCount()
const;
154 virtual void addPagedInTile(
155 const osgEarth::TileKey& tilekey,
156 const boost::shared_ptr<DtTileData>& tileData);
159 virtual void removePagedInTile(
const osgEarth::TileKey tileKey);
175 virtual bool findHeightFieldIntersections(
185 virtual bool halveChordAndFindHeightFieldIntrx(
194 virtual bool splitChordAt180AndFindHeightFieldIntrx(
203 virtual void processTriangles(
238 virtual osgEarth::TileKey
getBestTileKey(
const osgEarth::TileKey&)
const;
244 void findPagedInTilesWithinExtent(std::vector<osgEarth::TileKey> & tileKeysPagedIn,
const osgEarth::GeoExtent & extent)
const;
246 void findPagesAtLodWithinExtents(std::vector<osgEarth::TileKey> &tileKeysFound,
const osgEarth::GeoExtent & extent,
unsigned lod)
const;
252 virtual bool writeIndexLayers(
IndexInterface&,
unsigned precision)
const;
259 static std::auto_ptr<IndexInputInterface> Create(
const DtFilename&);
263 virtual bool read(
unsigned& lod,
unsigned& x,
unsigned& y,
double& min,
double& max,
bool& valid) = 0;
281 virtual std::vector<IndexConfig> getIndexConfigInfoForLayer(
282 const osgEarth::ElevationLayer& layer)
const;
285 virtual void readIndex(
287 unsigned layerNumber,
292 virtual bool readIndexLayers();
302 virtual bool aboveAllTerrain(
303 const DtChord& geocentricChord,
304 const DtChord& geodeticCoord)
const;
308 virtual bool shortEnoughForIntersection(
309 const DtChord& geocentricChord,
311 double chordLengthSq)
const;
315 virtual bool crosses180Lon(
const DtChord& geodeticChord)
const;
317 virtual bool findData(
319 std::vector< boost::shared_ptr<DtTileData> >& data,
321 OsgEarthTileDataCallback* callback = 0)
const;
323 virtual bool findData(
325 std::vector< boost::shared_ptr<DtTileData> >& data,
326 OsgEarthTileDataCallback* callback)
const;
328 virtual void findMissing(
332 virtual boost::shared_ptr<DtTileData> findOldest()
const;
333 virtual boost::shared_ptr<DtTileData> findOldestUnlocked()
const;
400 explicit OsgEarthTileDataCallback();
402 virtual bool operator()(
const boost::shared_ptr<DtTileData>& tile) = 0;
boost::ptr_vector< TileSpatialIndex > TileRoots
Definition: osgEarthTerrainSourceTracker.h:68
boost::weak_ptr< DtTileData > myOldestData
cached pointer to oldest tile data
Definition: osgEarthTerrainSourceTracker.h:384
virtual unsigned minElevationIndexLOD() const
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
std::list< osgEarth::TileKey > DtTileKeyList
Definition: tileSpatialIndex.h:32
DtBoost::shared_ptr< DtTerrainPagingGeometry > DtTerrainPagingGeometryPtr
Definition: terrainPagingGeometry.h:46
A terrain paging geometry which defines the paging area to be along a given shape.
Definition: terrainPagingShape.h:19
unsigned myMaxElevationIndexLOD
Definition: osgEarthTerrainSourceTracker.h:366
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords. This is useful for followi...
Definition: vrfChordIntersectRecordList.h:31
makVrf::RTree< boost::shared_ptr< osgEarth::DataExtent >, double, 2 > DtLayerExtentTree
Definition: osgEarthTerrainSourceTracker.h:393
double myTriangleOutputMergeTolerance
max error tolerances used to decide when it's not necessary triangle elevation to full resolution ...
Definition: osgEarthTerrainSourceTracker.h:361
Definition: osgEarthCommands.h:45
double myMaxChordLengthBeforeSplitSquared
max chord length squared before chords are split
Definition: osgEarthTerrainSourceTracker.h:369
std::map< std::string, boost::shared_ptr< DtLayerExtentTree > > myLayerExtentTrees
Definition: osgEarthTerrainSourceTracker.h:394
A terrain paging geometry which defines the paging area to be along a given set of local vertices...
Definition: terrainPagingSphere.h:20
virtual unsigned getMaxLODForBilinearIntersection() const
unsigned myMaxElevationChordSplitLOD
max lod used for estimated max elevation under chord for spliting chords
Definition: osgEarthTerrainSourceTracker.h:372
unsigned minlod
Definition: osgEarthTerrainSourceTracker.h:273
virtual bool useLandCoverData() const
Return true if the current tracker use land cover data.
unsigned long long DtTerrainIntersectIDType
Definition: terrainInterfaceDefines.h:28
double minTolerance
Definition: osgEarthTerrainSourceTracker.h:272
unsigned myMinElevationIndexLOD
range of LODs where elevation from index will be used
Definition: osgEarthTerrainSourceTracker.h:365
virtual bool init(DtTerrainSourcePager &)
Called after options are set. Returns false if error.
virtual void pageInData(DtPagingMetaDataPtr metaData, DtTerrainPagingGeometryPtr geometry)=0
Page in data within geometry. Determines which tiles are within the geometry and adds a page in comma...
double myIntersetionTriangleMergeTolerance
Definition: osgEarthTerrainSourceTracker.h:362
const bool myUseRawElevation
use elevation (if false old geometry system will be used)
Definition: osgEarthTerrainSourceTracker.h:349
const double myWorldWidth
width of world in osgearth coord sys, used for wrapping coords
Definition: osgEarthTerrainSourceTracker.h:378
bool isDefault
Definition: osgEarthTerrainSourceTracker.h:271
virtual void pageOutOldestData(const int priority)=0
Adds a page out command for the least-recently-used tileID to myCommandQueue.
Definition: surface.h:181
std::string name
Definition: osgEarthTerrainSourceTracker.h:269
tbb::concurrent_queue< DtTerrainPagerCommand * > DtPagerCommandQueue
Definition: vantageTerrainImplementationUtil.h:41
virtual bool useRawElevation() const
Return true if the current tracker use raw elevation.
virtual unsigned maxLOD() const
Return the max lod.
virtual void getSoilFromString(const std::string &soilType, DtSurface &surface) const
DtTerrainIntersectOptions::Fidelity myFidelity
intersect fidelity for this layer
Definition: osgEarthTerrainSourceTracker.h:381
virtual bool dataAvailable(DtPagingMetaDataPtr metaData, DtTerrainPagingGeometryPtr geometry)=0
unsigned int myMaxLOD
max LOD of the whole system
Definition: osgEarthTerrainSourceTracker.h:355
Definition: surfaceCharacteristicMap.h:27
unsigned int myMaxLODForBilinearIntersection
max LOD which will use exact intersection with bilinear surface
Definition: osgEarthTerrainSourceTracker.h:358
Definition: osgEarthTerrainSourceTracker.h:65
osgEarth::ElevationLayerVector myFlattenedElevationLayers
flattens composite layers
Definition: osgEarthTerrainSourceTracker.h:339
DtTerrainIntersectOptions Passed to terrain intersect functions to modify how intersect acts...
Definition: terrainIntersectOptions.h:15
Definition: surfaceCharacteristicsMap.h:46
std::vector< osg::ref_ptr< osgEarth::Procedural::LifeMapLayer > > myLifeMapLayers
Definition: osgEarthTerrainSourceTracker.h:344
bool myWarnedAboutCsType
Remember if a warning about CS type was given;.
Definition: osgEarthTerrainSourceTracker.h:391
virtual osgEarth::TileKey getBestTileKey(const osgEarth::TileKey &) const
Return the best tile key to use (based on the tracker) for a pass tilekey.
virtual double intersetionTriangleMergeTolerance() const
Base class for Terrain Source trackers. Determines if the necessary data To perform an intersection i...
Definition: terrainSourceTracker.h:75
File I/O helper class, look below for implementation and notes.
Definition: RTree.h:58
virtual bool operator()(const boost::shared_ptr< DtTileData > &tile)=0
makVrf::DtSurfaceCharacteristicMap * myLandCoverCharacteristicsMap
Definition: osgEarthTerrainSourceTracker.h:341
Information about each individual index file.
Definition: osgEarthTerrainSourceTracker.h:267
virtual boost::optional< DtTerrainIntersectOptions::Fidelity > intersectFidelity() const
Fidelity that this tracker is configured for. The default returns an empty optional which means that ...
Definition: terrainSourceTracker.h:247
tbb::task_arena myArena
Tbb arena to limit number of threads.
Definition: osgEarthTerrainSourceTracker.h:388
Generic interface for writing to index.
Definition: indexOutputInterface.h:16
osgEarth::GeoExtent extent
Definition: osgEarthTerrainSourceTracker.h:274
virtual unsigned maxElevationIndexLOD() const
Definition: osgEarthCommands.h:20
Abstract base class for defining geometric areas for paging of terrain. Subclasses of this class will...
Definition: terrainPagingGeometry.h:24
virtual double triangleOutputMergeTolerance() const
bool myUseLandCover
Definition: osgEarthTerrainSourceTracker.h:351
Fidelity
Allows the system to use differently fidelity data for intersecting against. Currently only implement...
Definition: terrainIntersectOptions.h:76
A terrain paging geometry which defines the paging area to be along a given chord.
Definition: terrainPagingChord.h:19
#define DT_DLL_vantageTerrainImplementation
This file is used to determine how to build.
Definition: vantageTerrainImplementationDefines.h:28
osgEarth::URI file
Definition: osgEarthTerrainSourceTracker.h:270
std::vector< osg::ref_ptr< osgEarth::LandCoverLayer > > myLandCoverLayers
Definition: osgEarthTerrainSourceTracker.h:343
unsigned myHighestLodForLandCover
Definition: osgEarthTerrainSourceTracker.h:346
boost::weak_ptr< DtTileData > myOldestLandData
Definition: osgEarthTerrainSourceTracker.h:385
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea. This object should always be created on the stack.
Definition: terrainProcessPolygonsBox.h:113
This class wraps the VR-Vantage Display Engine, and uses as a terrain loader and intersector. This is the terrain engine that powers the DtVantageTerrainImplementation. The DtVantageTerrainEngine runs the DtDe it its own thread, and processes commands thought the command queue.
Definition: vantageTerrainEngine.h:109
virtual bool canPageOutData(DtTerrainIntersectIDType intersectId)=0
DtBoost::shared_ptr< DtPagingMetaData > DtPagingMetaDataPtr
Definition: terrainPagingGeometry.h:101
virtual bool useLifeMapLayer() const
Return true if the current tracker use Biome data.
Interface for allowing users to monitor/control the indexing process.
Definition: indexInterface.h:13
osgEarth::ElevationLayerVector myElevationLayers
top level elevation layers
Definition: osgEarthTerrainSourceTracker.h:336
DtTerrainIntersectStatus Contains information about result of terrain intersection.
Definition: terrainIntersectStatus.h:16
virtual DtTerrainIntersectIDType findOldestPagedData(unsigned int &numTriangles)=0
Finds the least-recently-used tile and set myOldestPagedObject to it.
static const unsigned int theGuiMaxRenderLod
The LOD that the GUI renders to, regardless of data LOD. This is used to generate triangles from elev...
Definition: osgEarthTerrainSourceTracker.h:73
TileRoots myTileSpatialIndexRoots
roots of the quad tree (not necessarily 4, geodetic usually has 2)
Definition: osgEarthTerrainSourceTracker.h:375
Represents an area query which can be used to extract triangles from DtTerrainInterface. The box points are in local but the box is always projected against the local topo at the center point of the box.
Definition: terrainProcessPolygonsBox.h:39
bool myUseLifeMapLayer
Definition: osgEarthTerrainSourceTracker.h:352