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. This is useful for followi...
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.
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. 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: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:40
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. Determines if the necessary data To perform an intersection i...
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. The default returns an empty optional which means that ...
Definition: terrainSourceTracker.h:244
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. Subclasses of this class will...
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. 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: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. 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: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. 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