MapLink Pro .NET 11.1
Envitia MapLink Pro: The Ultimate Mapping Application Toolkit
Loading...
Searching...
No Matches

Detailed Description

This class category contains the 3D .NET API classes.

Classes

class  Envitia::MapLink::ML3D::TSLN3DAPP6ASymbol
 
class  Envitia::MapLink::ML3D::TSLN3DBoundingBox
 
class  Envitia::MapLink::ML3D::TSLN3DBoundingBoxDU
 
class  Envitia::MapLink::ML3D::TSLN3DCamera
 
class  Envitia::MapLink::ML3D::TSLN3DClientCustomDataLayer
 
class  Envitia::MapLink::ML3D::TSLN3DClientUserGeometryEntity
 
class  Envitia::MapLink::ML3D::TSLN3DCoord
 
class  Envitia::MapLink::ML3D::TSLN3DCoordSet
 
class  Envitia::MapLink::ML3D::TSLN3DCustomDataLayer
 
class  TENET::MapLink::ML3D::TSLN3DCustomModel
 
class  Envitia::MapLink::ML3D::TSLN3DDataLayer
 
class  Envitia::MapLink::ML3D::TSLN3DDrawingSurface
 
class  Envitia::MapLink::ML3D::TSLN3DEllipse
 
class  Envitia::MapLink::ML3D::TSLN3DEntity
 
class  Envitia::MapLink::ML3D::TSLN3DEntitySet
 
class  Envitia::MapLink::ML3D::TSLN3DMapDataLayer
 
class  Envitia::MapLink::ML3D::TSLN3DMapQuery
 
class  Envitia::MapLink::ML3D::TSLN3DModel
 
class  Envitia::MapLink::ML3D::TSLN3DPolygon
 
class  Envitia::MapLink::ML3D::TSLN3DPolyline
 
class  Envitia::MapLink::ML3D::TSLN3DQuad
 
class  Envitia::MapLink::ML3D::TSLN3DQuadStrip
 
class  Envitia::MapLink::ML3D::TSLN3DRenderingInterface
 
class  Envitia::MapLink::ML3D::TSLN3DSelector
 
class  Envitia::MapLink::ML3D::TSLN3DSensor
 
class  Envitia::MapLink::ML3D::TSLN3DStandardDataLayer
 
class  Envitia::MapLink::ML3D::TSLN3DSymbol
 
class  Envitia::MapLink::ML3D::TSLN3DTerrainDataLayer
 
class  Envitia::MapLink::ML3D::TSLN3DText
 
class  Envitia::MapLink::ML3D::TSLN3DTextureLoader
 
class  Envitia::MapLink::ML3D::TSLN3DTriangle
 
class  Envitia::MapLink::ML3D::TSLN3DTriangleFan
 
class  Envitia::MapLink::ML3D::TSLN3DTriangleStrip
 
class  Envitia::MapLink::ML3D::TSLN3DUserGeometryEntity
 
class  Envitia::MapLink::ML3D::TSLN3DWinGLSurface
 
class  Envitia::MapLink::ML3D::TSLNExtruded2DPolygon
 
class  Envitia::MapLink::ML3D::TSLNExtruded2DPolyline
 
class  Envitia::MapLink::ML3D::TSLNExtruded2DRectangle
 
class  Envitia::MapLink::ML3D::TSLNPickResult3DEntity
 
enum class  Envitia::MapLink::ML3D::TSLN3DAltitudeType { Envitia::MapLink::ML3D::TSLN3DAltitudeType::TSLN3DAltitudeTypeMeanSeaLevel = 0 , Envitia::MapLink::ML3D::TSLN3DAltitudeType::TSLN3DAltitudeTypeHighestResolutionTerrain = 1 , Envitia::MapLink::ML3D::TSLN3DAltitudeType::TSLN3DAltitudeTypeDynamicTerrain = 2 , Envitia::MapLink::ML3D::TSLN3DAltitudeType::TSLN3DAltitudeTypeTerrainGroundLevel = 3 }
 
enum class  Envitia::MapLink::ML3D::TSLN3DCameraMoveAction { Envitia::MapLink::ML3D::TSLN3DCameraMoveAction::TSLN3DCameraMoveActionNone = 0 , Envitia::MapLink::ML3D::TSLN3DCameraMoveAction::TSLN3DCameraMoveActionKeepLookAtPosition = 1 , Envitia::MapLink::ML3D::TSLN3DCameraMoveAction::TSLN3DCameraMoveActionMaintainGroundOrientation = 2 }
 
enum class  Envitia::MapLink::ML3D::TSLN3DCameraReturn { Envitia::MapLink::ML3D::TSLN3DCameraReturn::TSLN3DCamera_OK = 0 , Envitia::MapLink::ML3D::TSLN3DCameraReturn::TSLN3DCamera_Failed , Envitia::MapLink::ML3D::TSLN3DCameraReturn::TSLN3DCamera_AngleOfViewInvalid , Envitia::MapLink::ML3D::TSLN3DCameraReturn::TSLN3DCamera_LatitudeInvalid }
 
enum class  Envitia::MapLink::ML3D::TSLN3DDepthTest {
  Envitia::MapLink::ML3D::TSLN3DDepthTest::TSLN3DDepthTestStandard = 0 , Envitia::MapLink::ML3D::TSLN3DDepthTest::TSLN3DDepthTestDelayedWithHorizonCheck = 1 , Envitia::MapLink::ML3D::TSLN3DDepthTest::TSLN3DDepthTestDelayedWithoutHorizonCheck = 2 , Envitia::MapLink::ML3D::TSLN3DDepthTest::TSLN3DDepthTestUndefined = 3 ,
  Envitia::MapLink::ML3D::TSLN3DDepthTest::TSLN3DDepthTestStandardAndDelayedWithHorizonCheck = 4 , Envitia::MapLink::ML3D::TSLN3DDepthTest::TSLN3DDepthTestStandardAndDelayedWithoutHorizonCheck = 5
}
 
enum class  Envitia::MapLink::ML3D::TSLN3DInterpolation {
  Envitia::MapLink::ML3D::TSLN3DInterpolation::TSLN3DInterpolationNone = 0 , Envitia::MapLink::ML3D::TSLN3DInterpolation::TSLN3DInterpolationGrid = 16 , Envitia::MapLink::ML3D::TSLN3DInterpolation::TSLN3DInterpolationSpheroidCreation = 1 , Envitia::MapLink::ML3D::TSLN3DInterpolation::TSLN3DInterpolationSpheroidDisplay = 2 ,
  Envitia::MapLink::ML3D::TSLN3DInterpolation::TSLN3DInterpolationEllipsoidCreation = 4 , Envitia::MapLink::ML3D::TSLN3DInterpolation::TSLN3DInterpolationEllipsoidDisplay = 8
}
 
enum class  Envitia::MapLink::ML3D::TSLN3DLightingOptionEnum { Envitia::MapLink::ML3D::TSLN3DLightingOptionEnum::TSLN3DLightingOptionEnable = 1 }
 
enum class  Envitia::MapLink::ML3D::TSLN3DOptionEnum { Envitia::MapLink::ML3D::TSLN3DOptionEnum::TSLN3DOptionFlatEarthMode = 1 , Envitia::MapLink::ML3D::TSLN3DOptionEnum::TSLN3DOptionStereoMode = 2 , Envitia::MapLink::ML3D::TSLN3DOptionEnum::TSLN3DOptionWireframeMode = 4 , Envitia::MapLink::ML3D::TSLN3DOptionEnum::TSLN3DOptionWaitForImagery = 8 }
 
enum class  Envitia::MapLink::ML3D::TSLN3DRenderingModeEnum { Envitia::MapLink::ML3D::TSLN3DRenderingModeEnum::TSLN3DRenderingModeNormal , Envitia::MapLink::ML3D::TSLN3DRenderingModeEnum::TSLN3DRenderingModePick }
 
delegate TSLN3DClientUserGeometryEntityEnvitia::MapLink::ML3D::TSLN3DUserGeometryLoadCallback (Stream ^ stream, int userGeometryID)
 

Class Documentation

◆ Envitia::MapLink::ML3D::TSLN3DLODConfiguration

struct Envitia::MapLink::ML3D::TSLN3DLODConfiguration

This class holds configuration information for the Level Of Detail tiles.

The Tiles are stored in a Quad Tree. The first level contains the initial split of the Earth latitude longitude range. The second level contains each top level split into 4. We ensure that a minimum of 2 levels exist so that when the Earth is viewed at a distance we only display the half on view.

The maximum number of levels limits how many nodes we store. This is a trade-off between memory and resolution.

The Quad Tree will not be fully populated, so the worst case should not occur.

The tileSplit controls when we move to the next level in the Quad Tree. This should be manipulated in very small amounts as this could cause large number of nodes at the highest level of detail to be displayed with the corresponding effect on performance or running out of memory.

The default figures defined are a combination of trade-offs between map-resolution, memory use and performance.

Class Members
double m_angularMultiplier Reserved. Value to multiple inner and outer AngularRange by.
double m_cameraHeightBelowWhichToApplyAngularMultiplier Reserved. Camera Height below which to apply angularMultiplier.
double m_cameraMinimumAltitudeVisibilityCheck Reserved.
bool m_colourTilesByPriority

Low = Red Stitch = Yellow Medium = Green Turquoise High = Blue Magenta Reserved.

bool m_displayAxis Reserved.
bool m_displayFOV Reserved.
short m_distanceLevelAdditionalChecks Reserved.
bool m_drawMeshAABoundingRectangle Reserved.
double m_focusAngularRange reserved
bool m_freezeMesh

/////////////////////////////////////////////////////////////////// The following variables are un-supported.

ONLY use under-direction of Envitia support.

These variables may be removed or their meaning changed without notice. /////////////////////////////////////////////////////////////////// Reserved.

double m_frustrumPlaneThicknessFactor Reserved.
short m_highDetailLevel

Level at which high detail (larger) textures are used for map detail.

The value should be >= minimumLevel && <= maximumLevel.

The value should be higher than mediumDetailLevel

TSLN3DTextureSizes m_highDetailTextureSizes

Texture size for high detail levels.

The priorities are related to the queue priority for draw the tile. A lower priority will be replaced by a high priority tile over time.

Texture sizes must be powers of two and not exceed the maximum texture size supported by the graphics card.

double m_highResolutionRange Reserved.
double m_innerAngularRange Reserved.
double m_lodCellSizeDivision Reserved.
TSLN3DTextureSizes m_lowDetailTextureSizes

Texture size for low detail levels.

The priorities are related to the queue priority for draw the tile. A lower priority will be replaced by a high priority tile over time.

Texture sizes must be powers of two and not exceed the maximum texture size supported by the graphics card.

short m_maximumLevel

The maximum number of levels in the LOD Quad tree.

The more levels the more memory required and the more processing required.

You would only normally require more levels if you require very high detail terrain.

short m_maximumLineLevel

The maximum polyline level of detail.

The polyline LOD is calculated based on the lowest point on a Polygon.

The polyline LOD is used to work out the number of grid subdivisions to use when draping the polyline over the Earth's surface.

The sensible maximum value is currently 8.

short m_maximumPolygonLevel

The maximum polygon level of detail.

The polygon LOD is calculated based on the lowest point on a Polygon.

The polygon LOD is used to work out the number of grid subdivisions to use when draping the polygon over the Earth's surface.

The sensible maximum value is currently 8.

short m_mediumDetailLevel

Level at which medium detail (larger) textures are used for map detail.

The value should be >= minimumLevel && <= maximumLevel.

The value should be less than highDetailLevel

TSLN3DTextureSizes m_mediumDetailTextureSizes

Texture size for medium detail levels.

The priorities are related to the queue priority for draw the tile. A lower priority will be replaced by a high priority tile over time.

Texture sizes must be powers of two and not exceed the maximum texture size supported by the graphics card.

double m_mediumResolutionRange Reserved.
short m_minimumLevel

The minimum LOD level to always create.

The higher the number the more memory required as each node in the Quad Tree will need to be created.

short m_minimumLineLevel

The minimum polyline level of detail.

The polyline LOD is calculated based on the lowest point on a Polygon.

The polyline LOD is used to work out the number of grid subdivisions to use when draping the polyline over the Earth's surface.

The sensible minimum value is currently 2. Any value less then this and the polyline will not follow the Earth's surface.

short m_minimumPolygonLevel

The minimum polygon level of detail.

The polygon LOD is calculated based on the lowest point on a Polygon.

The polygon LOD is used to work out the number of grid subdivisions to use when draping the polygon over the Earth's surface.

The sensible minimum value is currently 2. Any value less then this and the polygon will not follow the Earth's surface.

double m_outerAngularRange Reserved.
bool m_reserved1c Reserved.
short m_reserved2 Reserved.
short m_reserved3 Reserved.
short m_reserved4 Reserved.
short m_reserved5 Reserved.
double m_reserved6 Reserved.
double m_reserved7 Reserved.
double m_reserved8 Reserved.
double m_sampleInterval0 Reserved.
double m_sampleInterval1 Reserved.
double m_sampleInterval2 Reserved.
double m_sampleInterval3 Reserved.
double m_sampleInterval4 Reserved.
double m_sampleInterval5 Reserved.
short m_sampleIntervalLevel0 Reserved.
short m_sampleIntervalLevel1 Reserved.
short m_sampleIntervalLevel2 Reserved.
short m_sampleIntervalLevel3 Reserved.
short m_sampleIntervalLevel4 Reserved.
short m_sampleIntervalLevel5 Reserved.
double m_tileSplit

This factor has a range [0..1].

It is used as part of the decision for splitting the tiles to go to the next LOD level in the Quad tree.

The larger the value the earlier the split occurs as distance from the tile decreases.

The smaller the value the later the split occurs as distance from the tile decreases.

Only increment or decrement the setting by very small values, avoiding the upper part of the range due to the significant increase in memory that can occur.

bool m_useParentTexture Reserved. Use parent texture.
bool m_useParentTextureWhenInBackgroundThread Reserved. Use previous parent texture when in background thread.

Enumeration Type Documentation

◆ TSLN3DAltitudeType

Enumerated type for determining type of altitude used.

TSLN3DAltitudeTypeMeanSeaLevel Altitude is treated as being relative to Mean Sea Level.

TSLN3DAltitudeTypeHighestResolutionTerrain Altitude of point passed in plus the highest resolution Terrain Level of Detail height for the specified position.

This gives you an altitude relative to the terrain (Highest possible resolution available for the point).

Terrain Exaggeration only applies the terrain part of the overall height. The altitude of the point is not affected.

TSLN3DAltitudeTypeDynamicTerrain Altitude of point passed in plus the current Terrain Level of Detail height for the specified position.

This gives you an altitude relative to the terrain (Current Level of Detail for that point).

Terrain Exaggeration only applies the terrain part of the overall height. The altitude of the point is not affected.

TSLN3DAltitudeTypeTerrainGroundLevel Primarily of use for extruded polyline (Fence Lines).

The lowest point along the set of coordinates is found and this is used for the altitude of all points (altitude of points passed in is ignored).

Terrain Exaggeration is taken into account.

Example 1.

Point with altitude of 500m, has TSLN3DAltitudeTypeDynamicTerrain set.

If the height of the terrain is 50m and exaggeration is 2.0 then the MSL height will be = ((50 * 2) + 500)) = 600m

Example 2.

TSLN3DAltitudeTypeTerrainGroundLevel means that altitude is ignored altogether. This means that any intermediate points are also at ground level, so, if used for an extruded polyline, the 'skirt' of the polyline touches the terrain between the two points, even if the terrain dips.

Following the extruded polyline example above, TSLN3DAltitudeTypeDynamic Terrain with a value of 0.0 means that the skirt of the polyline is drawn at an altitude of 0.0 only at the specified coordinates and so will NOT touch the terrain between the two points if the terrain dips.

Enumerator
TSLN3DAltitudeTypeMeanSeaLevel 
TSLN3DAltitudeTypeHighestResolutionTerrain 
TSLN3DAltitudeTypeDynamicTerrain 
TSLN3DAltitudeTypeTerrainGroundLevel 

◆ TSLN3DCameraMoveAction

Enumerated type defining how the camera orientation may be modified when the camera moves

TSLN3DCameraMoveActionNone: Keep current geocentric orientation

TSLN3DCameraMoveActionKeepLookAtPosition: Adjust orientation according to last parameters passed to lookAt

TSLN3DCameraMoveActionMaintainGroundOrientation: Adjust orientation to be the same relative to the ground

Enumerator
TSLN3DCameraMoveActionNone 
TSLN3DCameraMoveActionKeepLookAtPosition 
TSLN3DCameraMoveActionMaintainGroundOrientation 

◆ TSLN3DCameraReturn

Enumeration defining the result of an action performed on the camera.

Possible values:

TSLN3DCamera_OK - Success

TSLN3DCamera_Failed - Failure

TSLN3DCamera_AngleOfViewInvalid - The angle of view is either < 0.0 or > 180.0 degrees

TSLN3DCamera_LatitudeInvalid - The latitude is either < -90.0 or > 90.0 degrees

Enumerator
TSLN3DCamera_OK 
TSLN3DCamera_Failed 
TSLN3DCamera_AngleOfViewInvalid 
TSLN3DCamera_LatitudeInvalid 

◆ TSLN3DDepthTest

Enumerated type used to indicate how depth testing is to be applied to TSLN3DText, TSLN3DSymbol and TSLN3DAPP6ASymbol.

The enum settings are:

TSLN3DDepthTestStandard : for standard depth testing based on OpenGL

TSLN3DDepthTestUndefined : This is the same as TSLN3DDepthTestDelayedWith HorizonCheck and allows the user to identify that depth testing has not been set.

TSLN3DDepthTestDelayedWithHorizonCheck : for delayed rendering with horizon check - World Wind style.

TSLN3DDepthTestDelayedWithoutHorizonCheck : for delayed rendering with no horizon check.

TSLN3DDepthTestStandardAndDelayedWithHorizonCheck : For items which are custom drawn and require parts to be drawn with depth testing and parts drawn with just horizon check. Two calls will be made to the custom draw method, once for the TSL3DDepthTestStandard depth test and once for the TSLN3DDepthTestDelayedWithHorizonCheck .

TSLN3DDepthTestStandardAndDelayedWithoutHorizonCheck : For items which are custom drawn and require parts to be drawn with depth testing and parts drawn with no depth testing or horizon check. Two calls will be made to the custom draw method, once for the TSL3DDepthTestStandard depth test and once for the TSL3DDepthTestDelayedWithoutHorizonCheck .

When we draw the delayed items they are drawn in sorted depth order.

Graphics Depth testing is disabled for APP6A, Symbols, Text and Satellites, when drawn delayed. This is because these items are drawn as billboards or partly drawn as billboard.

All other delayed items with no Horizon check are drawn with Graphics Depth testing disabled. If Horizon check is required then Graphics Depth testing is enabled.

If delayed items are at the same depth then the order they are drawn in is the order they were originally processed.

TSLN3DDepthTestStandardAndDelayedWithHorizonCheck and TSLN3DDepthTestStandard AndDelayedWithoutHorizonCheck currently only make sense for custom drawn objects. The standard 3D geometry will be drawn twice if these depth test values are set on them.

See Also: TSLNRenderingAttributeInt

Enumerator
TSLN3DDepthTestStandard 
TSLN3DDepthTestDelayedWithHorizonCheck 
TSLN3DDepthTestDelayedWithoutHorizonCheck 
TSLN3DDepthTestUndefined 
TSLN3DDepthTestStandardAndDelayedWithHorizonCheck 
TSLN3DDepthTestStandardAndDelayedWithoutHorizonCheck 

◆ TSLN3DInterpolation

Enumerated type for determining how points are interpolated by the 3D geometry that supports interpolation.

TSLN3DInterpolationNone means no interpolation. Points are joined by straight lines and is thus the fastest display option.

TSLN3DInterpolationGrid is the new technique replacing the previous interpolation options.

This technique uses a Stereographic projection to project the points of the object on to a flat plane.

A grid is then overlaid on top of the points. Where the lines cross the grid intersections additional points are added.

The sub-divisions making up the grid are calculated based on the lowest height of the object.

The number of sub-divisions are limited by TSLN3DLODConfiguration::m_maximum PolygonLevel and TSLN3DLODConfiguration::m_minimumPolygonLevel.

The maximum sensible depth is currently 8 and the minimum is 2.

The maximum size of a polygon is about 40 degrees. Larger polygons will either affect performance or suffer from distortion.

The Coordinate Systems need to have been loaded via: TSLNCoordinate System::loadCoordinateSystems().

Deprecated Values

The following have been deprecated for Polygon and Extruded Polygon types:

TSLN3DInterpolationSpheriodCreation/TSLN3DInterpolationEllipsoidCreation means that the interpolation is done at creation time. All points altitude type should be of type TSLN3DAltitudeTypeMeanSeaLevel.

TSLN3DInterpolationSpheriodDisplay/TSLN3DInterpolationEllipsoidDisplay means that the interpolation of the points is done at display time. This is the slowest display option. The altitude type is not limited to TSLN3DAltitudeTypeMeanSeaLevel.

The Spheroid interpolation assumes that the Earth is a sphere. This is less accurate then the Ellipsoid interpolation, but is significantly quicker to calculate.

The Ellipsoid interpolation uses a geodesic WGS84 path.

The interpolation may be invalidated by either changing the type of interpolation or the parameters controlling the interpolation.

Interpolation is done using a Geodesic path (more accurate then a Great Circle path). The interpolation is done at fixed distances across the Earth's surface. Altitude does not affect the distance between the interpolation points.

The points being interpolated between should be less then 180 degrees apart.

The shortest path between the start and end points will always be calculated.

If a path of exactly 180 degrees is specified the computed path will be ambiguous and will terminate prior to the end point.

Where interpolation occurs the resulting polygonal objects will be tessellated before display.

NOTE: Due to optimisations, creation time optimisation may take place on the first render, whereas display time interpolation will take place on every render.

Enumerator
TSLN3DInterpolationNone 
TSLN3DInterpolationGrid 
TSLN3DInterpolationSpheroidCreation 

Deprecated.

TSLN3DInterpolationSpheroidDisplay 
TSLN3DInterpolationEllipsoidCreation 
TSLN3DInterpolationEllipsoidDisplay 

◆ TSLN3DLightingOptionEnum

Enumerator
TSLN3DLightingOptionEnable 

◆ TSLN3DOptionEnum

Enumerated type defining the options for a TSLN3DDrawingSurface.

TSLN3DOptionFlatEarthMode : Sets the drawing surface mode to 2D (also known as 'flat-earth'). By default this mode maps latitude/longitude with no scaling. To enable Dynamic Arc flat earth set the option on the TSLNDrawing SurfaceBase::setOption(TSLNOptionDynamicArcSupportEnabled, true) and then set this option. Once Dynamic Arc option is set switching between Ellipsoid and Flat Earth will give Dynamic Arc Flat Earth. Disabling the Dynamic Flat Earth will also require a reset. Default value is False.

TSLN3DOptionStereoMode : When set, renders the drawing surface in stereo. This will only have an effect if the appropriate hardware is being used (i.e. graphics cards supporting stereo display. Default value is False.

TSLN3DOptionWireframeMode : When set, renders the earth as a wireframe model.

TSLN3DOptionWaitForImagery : When set, any camera operations block until the correct resolution of imagery has been loaded and rendered for the camera location.

Enumerator
TSLN3DOptionFlatEarthMode 
TSLN3DOptionStereoMode 
TSLN3DOptionWireframeMode 
TSLN3DOptionWaitForImagery 

◆ TSLN3DRenderingModeEnum

Enumerated type defining the current mode a TSLRenderingInterface is configured in.

TSLN3DRenderingModeNormal : The TSLN3DRenderingInterface is performing a regular rendering operation such as redrawing the drawing surface window.

TSLN3DRenderingModePick : The TSLN3DRenderingInterface is configured in a special mode to determine which items in a drawing surface are being picked by the user. Custom datalayers must perform one of the following to support picking depending on the type of custom datalayer: For datalayers that render using operations in the rendering interface, TSLN3DRenderingInterface::setPickData() and TSLN3DRenderingInterface::clear PickData() must be used to identify the primitives that can be picked. For datalayers that render using OpenGL directly, the OpenGL glPushName() and glPopName() functions need to be used to identify the primitives that can be picked.

Enumerator
TSLN3DRenderingModeNormal 
TSLN3DRenderingModePick 

Function Documentation

◆ TSLN3DUserGeometryLoadCallback()

delegate TSLN3DClientUserGeometryEntity ^ Envitia::MapLink::ML3D::TSLN3DUserGeometryLoadCallback ( Stream ^ stream,
int userGeometryID )