26 #include <osgTerrain/TerrainTile>
27 #include <osgEarth/LandCoverLayer>
28 #include <osgEarth/Profile>
29 #include <osgEarth/TileKey>
30 #include <osgEarth/MapNode>
31 #include <osgEarth/TerrainTileModel>
37 #include <boost/ptr_container/ptr_vector.hpp>
39 #include <tbb/spin_rw_mutex.h>
40 #include <tbb/task_arena.h>
48 class DtGeodeticCoord;
65 class OsgEarthTileDataCallback;
69 osgEarth::MapNode* mapNode);
76 unsigned getHighestLodForLandCover()
const;
85 virtual boost::optional<DtTerrainIntersectOptions::Fidelity>
intersectFidelity()
const;
89 virtual unsigned maxLOD()
const;
90 virtual void setMaxLOD(
unsigned);
97 virtual void setMaxLODForBilinearIntersection(
unsigned);
107 virtual void setTriangleOutputMergeTolerance(
double tol);
109 virtual void setIntersectionTriangleMergeTolerance(
double tol);
115 virtual void setMinElevationIndexLOD(
unsigned);
117 virtual void setMaxElevationIndexLOD(
unsigned);
122 virtual double maxChordLengthBeforeSplitSquared()
const;
123 virtual void setMaxChordLengthBeforeSplit(
double);
128 virtual unsigned maxElevationChordSplitTestLOD()
const;
129 virtual void setMaxElevationChordSplitTestLOD(
unsigned);
133 virtual unsigned tileCount()
const;
136 virtual unsigned cellCount()
const;
144 virtual void addPagedInTile(
145 const osgEarth::TileKey& tilekey,
146 const boost::shared_ptr<DtTileData>& tileData);
149 virtual void removePagedInTile(
const osgEarth::TileKey tileKey);
165 virtual bool findHeightFieldIntersections(
175 virtual bool halveChordAndFindHeightFieldIntrx(
184 virtual bool splitChordAt180AndFindHeightFieldIntrx(
193 virtual void processTriangles(
228 virtual osgEarth::TileKey
getBestTileKey(
const osgEarth::TileKey&)
const;
234 void findPagedInTilesWithinExtent(std::vector<osgEarth::TileKey> & tileKeysPagedIn,
const osgEarth::GeoExtent & extent)
const;
236 void findPagesAtLodWithinExtents(std::vector<osgEarth::TileKey> &tileKeysFound,
const osgEarth::GeoExtent & extent,
unsigned lod)
const;
242 virtual bool writeIndexLayers(
IndexInterface&,
unsigned precision)
const;
249 static std::auto_ptr<IndexInputInterface> Create(
const DtFilename&);
253 virtual bool read(
unsigned& lod,
unsigned& x,
unsigned& y,
double& min,
double& max,
bool& valid) = 0;
271 virtual std::vector<IndexConfig> getIndexConfigInfoForLayer(
272 const osgEarth::ElevationLayer& layer)
const;
275 virtual void readIndex(
277 unsigned layerNumber,
282 virtual bool readIndexLayers();
292 virtual bool aboveAllTerrain(
293 const DtChord& geocentricChord,
294 const DtChord& geodeticCoord)
const;
298 virtual bool shortEnoughForIntersection(
299 const DtChord& geocentricChord,
301 double chordLengthSq)
const;
305 virtual bool crosses180Lon(
const DtChord& geodeticChord)
const;
307 virtual bool findData(
309 std::vector< boost::shared_ptr<DtTileData> >& data,
311 OsgEarthTileDataCallback* callback = 0)
const;
313 virtual bool findData(
315 std::vector< boost::shared_ptr<DtTileData> >& data,
316 OsgEarthTileDataCallback* callback)
const;
318 virtual void findMissing(
322 virtual boost::shared_ptr<DtTileData> findOldest()
const;
323 virtual boost::shared_ptr<DtTileData> findOldestUnlocked()
const;
384 explicit OsgEarthTileDataCallback();
386 virtual bool operator()(
const boost::shared_ptr<DtTileData>& tile) = 0;
boost::ptr_vector< TileSpatialIndex > TileRoots
Definition: osgEarthTerrainSourceTracker.h:325
boost::weak_ptr< DtTileData > myOldestData
cached pointer to oldest tile data
Definition: osgEarthTerrainSourceTracker.h:374
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:356
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords.
Definition: vrfChordIntersectRecordList.h:31
double myTriangleOutputMergeTolerance
max error tolerances used to decide when it's not necessary triangle elevation to full resolution ...
Definition: osgEarthTerrainSourceTracker.h:351
Definition: osgEarthCommands.h:44
double myMaxChordLengthBeforeSplitSquared
max chord length squared before chords are split
Definition: osgEarthTerrainSourceTracker.h:359
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:362
unsigned minlod
Definition: osgEarthTerrainSourceTracker.h:263
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:262
unsigned myMinElevationIndexLOD
range of LODs where elevation from index will be used
Definition: osgEarthTerrainSourceTracker.h:355
virtual bool init(DtTerrainSourcePager &)
Called after options are set.
virtual void pageInData(DtPagingMetaDataPtr metaData, DtTerrainPagingGeometryPtr geometry)=0
Page in data within geometry.
double myIntersetionTriangleMergeTolerance
Definition: osgEarthTerrainSourceTracker.h:352
const bool myUseRawElevation
use elevation (if false old geometry system will be used)
Definition: osgEarthTerrainSourceTracker.h:340
const double myWorldWidth
width of world in osgearth coord sys, used for wrapping coords
Definition: osgEarthTerrainSourceTracker.h:368
bool isDefault
Definition: osgEarthTerrainSourceTracker.h:261
virtual void pageOutOldestData(const int priority)=0
Adds a page out command for the least-recently-used tileID to myCommandQueue.
Definition: surface.h:179
std::string name
Definition: osgEarthTerrainSourceTracker.h:259
tbb::concurrent_queue< DtTerrainPagerCommand * > DtPagerCommandQueue
Definition: vantageTerrainImplementationUtil.h:30
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:371
virtual bool dataAvailable(DtPagingMetaDataPtr metaData, DtTerrainPagingGeometryPtr geometry)=0
unsigned int myMaxLOD
max LOD of the whole system
Definition: osgEarthTerrainSourceTracker.h:345
Definition: surfaceCharacteristicMap.h:27
unsigned int myMaxLODForBilinearIntersection
max LOD which will use exact intersection with bilinear surface
Definition: osgEarthTerrainSourceTracker.h:348
Definition: osgEarthTerrainSourceTracker.h:62
osgEarth::ElevationLayerVector myFlattenedElevationLayers
flattens composite layers
Definition: osgEarthTerrainSourceTracker.h:331
DtTerrainIntersectOptions Passed to terrain intersect functions to modify how intersect acts...
Definition: terrainIntersectOptions.h:15
Definition: surfaceCharacteristicsMap.h:28
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.
Definition: terrainSourceTracker.h:75
virtual bool operator()(const boost::shared_ptr< DtTileData > &tile)=0
makVrf::DtSurfaceCharacteristicMap * myLandCoverCharacteristicsMap
Definition: osgEarthTerrainSourceTracker.h:333
Information about each individual index file.
Definition: osgEarthTerrainSourceTracker.h:257
virtual boost::optional< DtTerrainIntersectOptions::Fidelity > intersectFidelity() const
Fidelity that this tracker is configured for.
Definition: terrainSourceTracker.h:235
tbb::task_arena myArena
Tbb arena to limit number of threads.
Definition: osgEarthTerrainSourceTracker.h:378
Generic interface for writing to index.
Definition: indexOutputInterface.h:16
osgEarth::GeoExtent extent
Definition: osgEarthTerrainSourceTracker.h:264
virtual unsigned maxElevationIndexLOD() const
Definition: osgEarthCommands.h:19
Abstract base class for defining geometric areas for paging of terrain.
Definition: terrainPagingGeometry.h:24
virtual double triangleOutputMergeTolerance() const
bool myUseLandCover
Definition: osgEarthTerrainSourceTracker.h:342
Fidelity
Allows the system to use differently fidelity data for intersecting against.
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:260
std::vector< osg::ref_ptr< osgEarth::LandCoverLayer > > myLandCoverLayers
Definition: osgEarthTerrainSourceTracker.h:335
unsigned myHighestLodForLandCover
Definition: osgEarthTerrainSourceTracker.h:337
boost::weak_ptr< DtTileData > myOldestLandData
Definition: osgEarthTerrainSourceTracker.h:375
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea.
Definition: terrainProcessPolygonsBox.h:113
This class wraps the VR-Vantage Display Engine, and uses as a terrain loader and intersector.
Definition: vantageTerrainEngine.h:99
virtual bool canPageOutData(DtTerrainIntersectIDType intersectId)=0
DtBoost::shared_ptr< DtPagingMetaData > DtPagingMetaDataPtr
Definition: terrainPagingGeometry.h:101
Interface for allowing users to monitor/control the indexing process.
Definition: indexInterface.h:13
osgEarth::ElevationLayerVector myElevationLayers
top level elevation layers
Definition: osgEarthTerrainSourceTracker.h:328
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.
TileRoots myTileSpatialIndexRoots
roots of the quad tree (not necessarily 4, geodetic usually has 2)
Definition: osgEarthTerrainSourceTracker.h:365
Represents an area query which can be used to extract triangles from DtTerrainInterface.
Definition: terrainProcessPolygonsBox.h:39