2022.1.03

Bug fixLuciadCPillar

LCP-531, LCP-533
RasterLayerRasterLayerRasterLayer: part of the imagery could be clipped for certain camera positions when elevation data was loaded.

Bug fixLuciadCPillar

LCP-536
Fix crash in debug mode when resizing a Map with a large amount.

Bug fixLuciadCPillar

LCP-374
On a 3D map with elevation data present, parts of the terrain were missing when the terrain data used a reference other than a geodetic (WGS84) reference.

2022.1

2022.1.02

Bug fixLuciadCPillar

LCP-530
ZoomEventHandlerZoomEventHandlerZoomEventHandler would throw an exception when trying to zoom before the map has been painted.

Bug fixLuciadCPillar

LCP-527
When creating a feature using CreatorCreatorCreator for a layer that is configured with an IFeaturePainterIFeaturePainterIFeaturePainter that configures detail level scales, a crash would occur when calling FeaturePainterContext::getDetailLevelFeaturePainterContext::getDetailLevelFeaturePainterContext::getDetailLevel. This is now fixed.

2022.1.01

ImprovementLuciadCPillar

LCP-512
It is now possible to convert between a Luciad.Drawing.Image and a System.Drawing.Bitmap.

ImprovementLuciadCPillar

LCP-437
Retrieving an OGC 3D tiles or HSPC dataset in C# data format sample is no longer blocking the UI.

ImprovementLuciadCPillar

LCP-392
When using the First person controller in the C++ camera sample, the invisible mouse cursor now stays in the window until the user clicks again or uses the Escape key.

ImprovementLuciadCPillar

LCP-437
Connecting to a WMS or WMTS server in C# data format sample is no longer blocking the UI.

Bug fixLuciadCPillar

LCP-521
The method IMultilevelTiledRasterDataRetrieverCallback::onImageAvailableIMultilevelTiledRasterDataRetrieverCallback::onImageAvailableIMultilevelTiledRasterDataRetrieverCallback::onImageAvailable did not correctly take the alpha pre-multiplication into account. This resulted in the color to be treated as an opaque color.

Bug fixLuciadCPillar

LCP-89
The GeodesyCalculations::distance3DGeodesyCalculations::distance3DGeodesyCalculations::distance3D method didn't return correct results when using a geodetic reference.

Bug fixLuciadCPillar

LCP-349, LCP-436
Editing a point height while the camera is facing down directly above it could trigger an exception.

Bug fixLuciadCPillar

LCP-442
Panning near the horizon with a tilted camera made the map jump to a new location.

2022.1

New featureLuciadCPillar

LuciadCPillar for Android allows you to develop GPU accelerated geospatial situational awareness applications targeted to run on Android mobile devices. LuciadCPillar for Android is an SDK that supports both Kotlin and Java development. It is feature equivalent with LuciadCPillar for desktop.

To get started, consult the product documentation and select the Android profile at the top right of the page. The product documentation includes installation guides, a Java API reference and a set of ready-to-run kotlin samples that can be installed on your mobile device from Android studio.

New featureLuciadCPillar

You can now enable GPU texture compression on TileSet3DLayerTileSet3DLayerTileSet3DLayer for OGC 3D Tiles mesh data. This can greatly reduce the amount of GPU memory needed, improve performance and stability.

Enable when displaying meshes with large textures, such as reality capture reconstructions. By default, texture compression is enabled.
Disable when displaying meshes with lookup textures, such as CAD models.

If your environment does not support GPU texture compression, setting the flag has no effect.

New featureLuciadCPillar

LuciadCPillar now offers ambient occlusion and eye-dome lighting graphical effects on 3D maps. See GraphicsEffectsGraphicsEffectsGraphicsEffects, AmbientOcclusionEffectAmbientOcclusionEffectAmbientOcclusionEffect and EyeDomeLightingEffectEyeDomeLightingEffectEyeDomeLightingEffect for details. When enabled, they are applied on all the data on the map.

New featureLuciadCPillar

The GdalModelDecoderGdalModelDecoderGdalModelDecoder now supports decoding of 8 bit indexed color GeoTIFF data.

New featureLuciadCPillar

It is now possible to provide custom raster data and visualize it on the map. This can be accomplished using the new MultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilder and QuadTreeRasterModelBuilderQuadTreeRasterModelBuilderQuadTreeRasterModelBuilder classes. This for example allows you to implement your own raster format, or position a single image on the map. The article introduction to raster models provides more information on these classes.

You can indicate that your custom raster data may change. To enable this you need to call MultilevelTiledRasterModelBuilder::enableInvalidationMultilevelTiledRasterModelBuilder::enableInvalidationMultilevelTiledRasterModelBuilder::enableInvalidation or QuadTreeRasterModelBuilder::enableInvalidationQuadTreeRasterModelBuilder::enableInvalidationQuadTreeRasterModelBuilder::enableInvalidation. This results in the creation of an IRasterModelIRasterModelIRasterModel which returns true for the method IRasterModel::canInvalidateIRasterModel::canInvalidateIRasterModel::canInvalidate and on which you can call IRasterModel::invalidateIRasterModel::invalidateIRasterModel::invalidate. Invalidating the raster instructs LuciadCPillar to reload the data from the model and update the view accordingly.

ImprovementLuciadCPillar

GeometryFactoryGeometryFactoryGeometryFactory now also has a createPoint method that takes a CoordinateCoordinateCoordinate as input.

ImprovementLuciadCPillar

Searching for symbols is now supported in the C# military symbology sample.

ImprovementLuciadCPillar

CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider can now parse more WKT strings that do not contain a TOWGS84 in its datum.

ImprovementLuciadCPillar

The RasterLayerRasterLayerRasterLayer now respects the display scale, which results in better performance on HiDPI screens.

ImprovementLuciadCPillar

LCP-19, LCP-21, LCP-22, LCP-25, LCP-65, LCP-290, LCP-290, LCP-343
Vector loading performance has been improved for larger vector data sets.
  • Data starts appearing on the screen up to 10 times faster right after adding a vector layer or after zooming in to a different detail level.
  • Data loading throughput is up to 2 times larger.
  • Data appears and disappears up to 5-10 times faster while navigating.
  • The map's frame rate is higher while vector data is loaded. Navigation now remains smooth at all times during loading.

ImprovementLuciadCPillar

TouchGestureRecognizerTouchGestureRecognizerTouchGestureRecognizer now more reliably makes the distinction between two-finger touch drag evens and pinch-rotate touch events.

ImprovementLuciadCPillar

Ogc3DTilesModelDecoder::decodeOgc3DTilesModelDecoder::decodeOgc3DTilesModelDecoder::decode has been overloaded so that you can now configure Ogc3DTilesModelDecoder::OptionsOgc3DTilesModelDecoder::OptionsOgc3DTilesModelDecoder::Options for the decoding of OGC 3D tiles data. These options allow you to configure a custom IDataLoaderIDataLoaderIDataLoader to fetch the OGC 3D Tiles resources, in case the default data loading from a server or the file system is not adequate for your use case. HspcModelDecoder::decodeHspcModelDecoder::decodeHspcModelDecoder::decode also supports this.

ImprovementLuciadCPillar

LCP-415
LuciadCPillar now supports HSPC datasets with a reference expressed in WKT (projection-wkt property). Before, only HSPC references expressed with an EPSG code (projection-epsg property) were supported.

ImprovementLuciadCPillar

LCP-19, LCP-21, LCP-22, LCP-25, LCP-343
The performance of the discretizer (which converts vector data to the map's reference) has been improved with a factor 2 to 5. This has a positive impact on overall vector loading times.

ImprovementLuciadCPillar

CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now supports EPSG references based on the IG05/12 Intermediate datum:
  • EPSG:6988
  • EPSG:6989
  • EPSG:6990
  • EPSG:6991

ImprovementLuciadCPillar

LCP-75
GeoPackageModelDecoderGeoPackageModelDecoderGeoPackageModelDecoder: the decoder now supports decoding geometries with an optional elevation (Z) value.

ImprovementLuciadCPillar

LCP-338
The bounds of a GeoPackage raster model is now based on the information advertised in the GeoPackage contents table instead of the extent of the tile matrix set.

ImprovementLuciadCPillar

The EPSG database was updated to the latest version: 10.072.

Bug fixLuciadCPillar

GdalModelDecoderGdalModelDecoderGdalModelDecoder: some files would cause a crash while a feature query is performed when no geometry could be found for a feature. A warning is logged now instead.

Bug fixLuciadCPillar

Performing a query by id on GeoPackage vector data or SHP data with a very large amount of features (around 32768) would result in no features being returned by the query.

Bug fixLuciadCPillar

When selecting a feature from a layer that was not yet painted for the first time, the feature was not painted as selected.

Bug fixLuciadCPillar

The classes Luciad.Symbology.Military.Standards and Luciad.Symbology.MilitarySymbologyNode.SymbolTypes have been removed from the C# API. In C#, methods to obtain a list of possible values and a string representation are by convention available on the enumeration type itself.

Bug fixLuciadCPillar

When an exception was thrown during feature loading, it would sometimes not be propagated correctly. This could potentially lead to no information being shown about what went wrong, or to feature loading being broke completely in rare cases.

Bug fixLuciadCPillar

LCP-403, LCP-404
Fix for crash in C# when passing an interface implementation to the LuciadCPillar API in a multithreaded context

Bug fixLuciadCPillar

LCP-431
The C# samples could get stuck when using them for a couple of minutes. The problem was caused by the C# sample class ScreenInfo, which created a device context without deleting it afterwards. If you are using this class in your own application, you will need to copy the new version of this class into your application as well.

Bug fixLuciadCPillar

LCP-434
Fixed a possible memory leak when loading OGC 3D Tiles containing physically based rendering (PBR) data.

Bug fixLuciadCPillar

LCP-408
Fixed a bug where RGB color information from point clouds encoded in OGC 3D Tiles was not visualized. Before the fix, points were colored white.

Bug fixLuciadCPillar

Removing a raster layer or closing the map while raster data is being loaded could rarely lead to a crash.

Bug fixLuciadCPillar

A crash could occur when resizing the map while labels are displayed.

Bug fixLuciadCPillar

LCP-400
When displaying a map on a screen with a display scale different from 100%, the application could crash when resizing the map during a camera animation.

Bug fixLuciadCPillar

LCP-399
When a feature is being edited using touch, a 2-finger drag event would translate the feature or one of its handles instead of tilting the map.

Bug fixLuciadCPillar

LCP-416
RasterLayerRasterLayerRasterLayer: For some specific camera positions it was possible that parts of the terrain were missing. This resulted in gaps in the visualization of the terrain and possibly large camera movements when navigating.

Bug fixLuciadCPillar

Fix for a thread safety issue when using Map::getAnimationManagerMap::getAnimationManagerMap::getAnimationManager. This could for example lead to the camera jumping to an incorrect location when zooming in and out in quick succession using MapNavigator::ZoomActionMapNavigator::ZoomActionMapNavigator::ZoomAction.

Bug fixLuciadCPillar

LCP-418
Fixed a potential crash when removing and then re-adding a layer with a selected feature.

Bug fixLuciadCPillar

In rare cases, while navigating around the Map, blocks of features were not correctly loaded.

Bug fixLuciadCPillar

Fixed an issue in MapNavigatorMapNavigatorMapNavigator that could potentially interrupt ongoing animations, and in rare cases could lead to a crash.

Bug fixLuciadCPillar

LCP-433
Fix for vertical stretched artefacts on some 2D projections.

Bug fixLuciadCPillar

LCP-402
Encirclement and Strong Point symbols are now painted with a dashed stroke when set to the Planned/Anticipated state.

Bug fixLuciadCPillar

LCP-423
Fix for possible erroneous icons shown when similar military icon symbols from different standards are present on the same map.

Upgrade considerationLuciadCPillar

MapNavigator::getAnimationKey was removed. In order to cancel navigate actions that were initiated by MapNavigatorMapNavigatorMapNavigator, you can now use the MapNavigator::cancelMapNavigator::cancelMapNavigator::cancel method instead. This method does not only cancel animations, but also other non-animated MapNavigatorMapNavigatorMapNavigator actions.

Upgrade considerationLuciadCPillar

PanAction::to and ZoomAction::to have been renamed to PanAction::toLocation and ZoomAction::toLocation respectively.
This prevents a naming clash with the Kotlin to infix.

Upgrade considerationLuciadCPillar

The following third party libraries have been updated:
  • libcurl: updated to version 7.86.0
  • openssl: updated to version 1.1.1s
  • zlib: updated to version 1.2.13

Upgrade considerationLuciadCPillar

TileSet3DLayerTileSet3DLayerTileSet3DLayer uses texture compression by default. This has the advantage that less GPU memory is used. In case artifacts would be noticeable in textures on a OGC 3D tiles mesh, you can disable texture compression via TileSet3DLayer::Builder::textureCompressionEnabledTileSet3DLayer::Builder::textureCompressionEnabledTileSet3DLayer::Builder::textureCompressionEnabled.

Upgrade considerationLuciadCPillar

The LuciadCPillar for Android samples depend on Android Jetpack libraries (androidx namespace).

Upgrade considerationLuciadCPillar

LuciadCPillar depends on the JetBrains Java Annotations library. This library is used to add @NotNull and @Nullable annotations to the LuciadCPillar for Android API, so that it is more convenient to use when working in Kotlin.

Upgrade considerationLuciadCPillar

LuciadCPillar now depends on the stb and goofy libraries in order to support OGC 3D Tiles texture compression.

Upgrade considerationLuciadCPillar

The map AnimationManager and FeatureStateManager are now returned by reference instead of shared_ptr.

Upgrade considerationLuciadCPillar

The GDAL library and its dependencies have been updated.
  • GDAL: updated to version 3.4.3
  • PROJ: updated to version 9.0.1
  • SQLite3: updated to version 3.38.5
  • nlohmann_json: version 3.10.5, used by PROJ
  • libgeotiff: version 1.7.1, used by GDAL
  • json-c: version 0.15, used by GDAL

Upgrade considerationLuciadCPillar

The Image.Create factory method taking a byte[] was removed from the C# API. The factory method taking a ByteBufferByteBufferByteBuffer should be used instead.

Upgrade considerationLuciadCPillar

The MemoryBuffer class was removed from the API. Use cases that used to be covered by MemoryBuffer are now covered by the new ByteBufferByteBufferByteBuffer class.