2026.1

New featureLuciadCPillar

LuciadCPillar now provides support for configuring how a 3D object is shaded, through a ShadingModelShadingModelShadingModel on its style.

Set the shading model through MeshStyleMeshStyleMeshStyle for OGC 3D Tiles and through FeatureCanvas::drawIcon3DFeatureCanvas::drawIcon3DFeatureCanvas::drawIcon3D for 3D icons.

See the Configure shading models article for more information.

The same asset with (1) no shading model, (2) a simple shading model and (3) a physically based one
The same asset with (1) no shading model, (2) a simple shading model and (3) a physically based one.

New featureLuciadCPillar

The map graphics effects are expanded with several new effects:
  • Light: configurable scene lighting using a headlight, a fixed directional light, or sunlight at a given time.
  • Atmosphere: this effect offers a physically-based Rayleigh/Mie scattering sky (ScatteringAtmosphereModelScatteringAtmosphereModelScatteringAtmosphereModel) alongside the existing gradient sky (GradientAtmosphereModelGradientAtmosphereModelGradientAtmosphereModel).
  • Depth of Field: an effect that blurs the scene outside a focus plane.
  • Fog: an effect that fades geometry into a fog color with distance and altitude, with an optional sun-glow tint.
  • Bloom: an effect that makes shapes and objects carry a BloomStyleBloomStyleBloomStyle glow, controlled by a map-wide strength and softness.
  • Environment map: an effect that supports a skybox and image-based reflections that physically-based rendering (PBR) objects, such as 3D icons and OGC 3D Tiles, reflect and are lit by.
A mesh of Marseille, visualized with the new graphics effects.
A mesh of Marseille, visualized with the new graphics effects.

How effects are configured has also changed: each effect is now set through an immutable model created with a fluent builder, instead of individual property setters. For the effects that already existed before version 2026.1, this is a source-incompatible change.

See the Configure Map Effects guide for the full API and per-effect guidance.

New featureLuciadCPillar

An OGC WFS model can now request and decode the GeoJSON output format, in addition to GML. Set the output format with WfsModelDecoderOptions::Builder::outputFormatWfsModelDecoderOptions::Builder::outputFormatWfsModelDecoderOptions::Builder::outputFormat, for example "application/json". The output formats advertised by a server are available through WfsFeatureType::getOutputFormatsWfsFeatureType::getOutputFormatsWfsFeatureType::getOutputFormats. If no output format is set, the server default (GML) is used. For more information, see the Decode and visualize WFS data article.

New featureLuciadCPillar

It is now possible to load non-georeferenced OGC 3D Tiles datasets, and georeference them by setting a GeoLocationGeoLocationGeoLocation on the ITileSet3DModelITileSet3DModelITileSet3DModel. See this guide for more details.

New featureLuciadCPillar

MapNavigatorMapNavigatorMapNavigator can now move the camera to a given eye position and orientation with a new look-from action. Create one with MapNavigator::newLookFromActionMapNavigator::newLookFromActionMapNavigator::newLookFromAction. This can for example be used to fly the camera to a known viewpoint.

New featureLuciadCPillar

LuciadCPillar can now decode and visualize Gaussian splats. Gaussian splatting is a novel scene-representation and 3D rendering technique that uses a large amount of tiny 3D Gaussian primitives ("splats") to create photorealistic views of real-world scenes.

A Gaussian splatting dataset of a restaurant
A Gaussian splatting dataset of a restaurant.

LuciadCPillar can consume Gaussian splats as OGC 3D Tiles with glTF payloads that make use of the KHR_gaussian_splatting or KHR_gaussian_splatting_compression_spz_2 extension of the glTF specification.

You can visualize a Gaussian splatting dataset by decoding it with Ogc3DTilesModelDecoderOgc3DTilesModelDecoderOgc3DTilesModelDecoder and passing the resulting model to a TileSet3DLayerTileSet3DLayerTileSet3DLayer. Use TileSet3DLayer::Builder::gaussianSplatsStyleTileSet3DLayer::Builder::gaussianSplatsStyleTileSet3DLayer::Builder::gaussianSplatsStyle (or TileSet3DLayer::setGaussianSplatsStyleTileSet3DLayer::setGaussianSplatsStyleTileSet3DLayer::setGaussianSplatsStyle) with a GaussianSplatsStyleGaussianSplatsStyleGaussianSplatsStyle to customize the styling of the Gaussian splats, using expressions for example, and to tweak other performance-related settings.

See this guide for more details.

New featureLuciadCPillar

The new JsonDataAnnotationJsonDataAnnotationJsonDataAnnotation marks a string-typed DataPropertyDataPropertyDataProperty as containing JSON text, so that a plain string property can be distinguished from a property with a JSON string as its value.

New featureLuciadCPillar

A DataPropertyDataPropertyDataProperty can now carry metadata in the form of DataAnnotationDataAnnotationDataAnnotation instances. Attach them with DataProperty::Builder::addAnnotationDataProperty::Builder::addAnnotationDataProperty::Builder::addAnnotation and read them through DataProperty::getAnnotationsDataProperty::getAnnotationsDataProperty::getAnnotations. DataPropertyPathDataPropertyPathDataPropertyPath gained getTargetProperty to retrieve the property at the end of a path, so that a property and its annotations are reachable from a path.

New featureLuciadCPillar

FeatureFeatureFeature can now retrieve composite values as DataObjectDataObjectDataObject. For more information, see the Describing the feature structure in a data model article.

New featureLuciadCPillar

A DataPropertyDataPropertyDataProperty can now describe a list of values. Set its collection type to DataCollectionKind::ListDataCollectionKind::ListDataCollectionKind::List for a list-typed property. FeatureFeatureFeature gained the matching accessors, together with a getListSize method. For more information, see the Describing the feature structure in a data model article.

New featureLuciadCPillar

LuciadCPillar can now project a static image, a continuous stream of video frames, or 360-degree panoramas onto the map. To show such projections, you create a ProjectedImageryLayerProjectedImageryLayerProjectedImageryLayer backed by an IProjectedImageryModelIProjectedImageryModelIProjectedImageryModel, such as the ready-made ProjectedVideoModelProjectedVideoModelProjectedVideoModel for a live video source, or PanoramaModelPanoramaModelPanoramaModel for 360-degree panoramas, and add it to the LayerListLayerListLayerList of the map. For more details about using this feature, see this guide.

Projected images
A drone video projected onto a map.

New featureLuciadCPillar

LuciadCPillar now provides support for decoding GeoJSON files through GeoJsonModelDecoderGeoJsonModelDecoderGeoJsonModelDecoder. For more information, see the Decode and visualize GeoJSON data article. You can use the data formats sample to load a GeoJSON file.

New featureLuciadCPillar

You can now perform GetFeatureInfo requests on WMS and WMTS models. With a GetFeatureInfo request, you enable users to select and query features visualized in a WMS or WMTS raster layer.

To perform a WMS GetFeatureInfo request, you need a WmsGetFeatureInfoContextWmsGetFeatureInfoContextWmsGetFeatureInfoContext, obtained from a WmsRasterLayerWmsRasterLayerWmsRasterLayer.

To perform a WMTS GetFeatureInfo request, you need a WmtsGetFeatureInfoContextWmtsGetFeatureInfoContextWmtsGetFeatureInfoContext, obtained from a WmtsRasterLayerWmtsRasterLayerWmtsRasterLayer.

For more details on executing WMS and WMTS GetFeatureInfo requests and decoding their output, see this guide.

New featureLuciadCPillar

It is now possible to change the map reference at runtime. To support this, the following API was added: This functionality is demonstrated in most samples.

ImprovementLuciadCPillar

A new article in the documentation explains how to get the most out of agentic AI tools such as GitHub Copilot or Claude Code when developing applications against LuciadCPillar. The article also contains an AI skill bundle that can help you to improve your agent's output.

ImprovementLuciadCPillar

You can now ask the map to repaint with Map::invalidateMap::invalidateMap::invalidate.

An example where this would help is a Map::IRendererCallbackMap::IRendererCallbackMap::IRendererCallback that updates the camera on every paint. Such a callback can leave the camera alone once the view is at rest, which lets the map stop painting, and call Map::invalidateMap::invalidateMap::invalidate on new user input to get it painting again.

ImprovementLuciadCPillar

LCP-370
The HttpClientHttpClientHttpClient implementation now always performs SSL verification. In the class documentation you can find out where it looks for the certificate authority (CA) file for each of the supported platforms and how you can use a custom CA file location.

ImprovementLuciadCPillar

You can now decode images with Image::decodeImage::decodeImage::decode, either from a buffer of encoded bytes or from a file path. JPEG, PNG, TIFF, WebP and Radiance HDR images are supported.

ImprovementLuciadCPillar

FeatureModelBuilderFeatureModelBuilderFeatureModelBuilder can now assemble the model metadata itself through the new title, reference and dataModel convenience methods, which makes modelMetadata and featureModelMetadata optional.

ImprovementLuciadCPillar

The HERE Maps raster sample now performs its HTTP requests with Luciad.Net.Http.HttpClient, the HTTP client that LuciadCPillar itself provides, instead of System.Net.WebRequest, which .NET 8 marks as obsolete.

ImprovementLuciadCPillar

The WinForms and WPF sample integration code now ships as two separate libraries. The WinForms map control ViewControl has moved out of Luciad.CPillar.CSharp.Integration.Wpf into a new Luciad.CPillar.CSharp.Integration.WinForms.

ImprovementLuciadCPillar

DataType::BuilderDataType::BuilderDataType::Builder now has a property shortcut for each primitive type, so declaring a feature type no longer requires building a DataPropertyDataPropertyDataProperty for every property: addGeometryProperty, addIntProperty, addLongProperty, addFloatProperty, addDoubleProperty, addStringProperty and addBooleanProperty.

addGeometryProperty(name, mainGeometry) additionally attaches the GeometryDataAnnotationGeometryDataAnnotationGeometryDataAnnotation when mainGeometry is true, which removes the need for an IDataAnnotationFactoryIDataAnnotationFactoryIDataAnnotationFactory in the common case of a feature type with a single geometry. Pass false for the additional geometry properties of a type that has several geometries. A data type has at most one main geometry.

The shortcuts add scalar properties of a primitive type. Keep using DataType::Builder::addPropertyDataType::Builder::addPropertyDataType::Builder::addProperty for anything else, such as list-valued properties, properties carrying their own annotations, or properties of which the value type is another data type.

ImprovementLuciadCPillar

LCP-213
The C# LuciadCPillar samples no longer use CMake. The release now ships a ready-to-open Visual Studio solution, csharp/AllSamplesCSharp.sln, together with all sample project files, so you can open and build the samples directly. See the installation instructions for details.

ImprovementLuciadCPillar

ImprovementLuciadCPillar

The CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider class now has a few accessors that return commonly used coordinate references directly.

ImprovementLuciadCPillar

You can now read and write FeatureFeatureFeature values by property name, without building a DataPropertyPathDataPropertyPathDataPropertyPath for each one. The getValue, value, resetValue and getListSize methods on FeatureFeatureFeature and its builder gained overloads that take a property name. For repeated access to the same property, DataType::getPropertyPathForDataType::getPropertyPathForDataType::getPropertyPathFor resolves a name to a reusable DataPropertyPathDataPropertyPathDataPropertyPath.

See Describing the feature structure in a data model for more details.

ImprovementLuciadCPillar

LCP-1715
Building the C# samples no longer requires a standalone NuGet installation. The Visual Studio solution restores its NuGet packages automatically, so you no longer need nuget.exe on your PATH, nor the -DCMAKE_PROGRAM_PATH CMake parameter that pointed to it.

Turning the samples into NuGet packages does not need one either. The generateNugetPackagesOfSamples.bat script and the per sample command in the installation instructions now use dotnet pack, so the .NET SDK that builds the samples is all you need. The script also reports a failed package instead of skipping it silently.

ImprovementLuciadCPillar

PixelFormat::Bgra8888PixelFormat::Bgra8888PixelFormat::Bgra8888 has been added as a supported pixel format.

ImprovementLuciadCPillar

The FeatureQueryFeatureQueryFeatureQuery API now provides an asBuilder method that returns a builder initialized with an existing query's settings, to create a modified copy of a query.

ImprovementLuciadCPillar

It's now possible to control the camera's near and far planes directly. By default, the map keeps adjusting them every frame to maximize depth precision. Call Map::setAutoAdjustDepthRangeEnabledMap::setAutoAdjustDepthRangeEnabledMap::setAutoAdjustDepthRangeEnabled with false to turn that off, and set the planes yourself with the new PerspectiveCamera::Builder::nearFarPerspectiveCamera::Builder::nearFarPerspectiveCamera::Builder::nearFar or OrthographicCamera::Builder::nearFarOrthographicCamera::Builder::nearFarOrthographicCamera::Builder::nearFar.

ImprovementLuciadCPillar

Added a new TileSet3DLayer::setTransformationTileSet3DLayer::setTransformationTileSet3DLayer::setTransformation, which can be used to translate, scale or rotate tilesets in 3D space.

ImprovementLuciadCPillar

WebGpuContext::setRenderTargetWebGpuContext::setRenderTargetWebGpuContext::setRenderTarget can now draw the map on top of what is already in the render target, instead of always clearing it first. The overload that takes a depth texture gained two parameters, clearColor and clearDepth, both true by default. Passing false makes sure the target's current color and depth isn't cleared. The map is then blended over the existing color, and correctly hides and is hidden by whatever is already in the depth buffer.

This makes it possible to combine LuciadCPillar with graphics produced by another renderer in the same textures, so the map and that content occlude each other correctly where they overlap.

ImprovementLuciadCPillar

The MbTilesFeatureLayerMbTilesFeatureLayerMbTilesFeatureLayer now uses the style declared in the MBTiles dataset by default (if one is present, and if no other style was given to MbTilesFeatureLayer::Builder::styleMbTilesFeatureLayer::Builder::styleMbTilesFeatureLayer::Builder::style). This is an extension to the MBTiles format introduced by LuciadFusion.

ImprovementLuciadCPillar

LCP-1694
The ExpressionExpressionExpression API now supports null literals, allowing you to filter on certain properties being null in an IFeatureModelIFeatureModelIFeatureModel. See ExpressionValue::createNullExpressionValue::createNullExpressionValue::createNull.

ImprovementLuciadCPillar

The LuciadCPillar Android samples are now bundled into a single launcher application instead of a separate application per sample.

ImprovementLuciadCPillar

LCP-1640
LuciadCPillar now avoids unnecessarily requesting tiles in a WMTS layer if the tile coordinates fall outside the limits specified in the capabilities (i.e. TileMatrixSetLimits).

ImprovementLuciadCPillar

The LuciadCPillar Android library and samples now support 16KB page sizes for compatibility with Android 15+. More information available here.

Bug fixLuciadCPillar

LCP-1752
Fixed a precision issue that could result in 3D icons having pixel-sized holes in their surfaces.

Bug fixLuciadCPillar

Fixed an issue where Map::getCameraMap::getCameraMap::getCamera and the view transformation returned by Map::getViewMapTransformationMap::getViewMapTransformationMap::getViewMapTransformation used slightly different camera positions while the map was being navigated. Combining their results could then be inconsistent. Map::getMapScaleMap::getMapScaleMap::getMapScale, Map::getMapBoundsMap::getMapBoundsMap::getMapBounds, Map::getVisibleAreaMap::getVisibleAreaMap::getVisibleArea and Map::queryFeaturesMap::queryFeaturesMap::queryFeatures could momentarily disagree with the camera in the same way.

Map::getCameraMap::getCameraMap::getCamera, the view transformation and these queries now consistently reflect the same view of the map, so their results can be safely combined, also while the map is being navigated.

Bug fixLuciadCPillar

Fixed an issue where raster layers were not clipped to the outline of a conic map reference. With a Lambert Conformal or Albers Equal Area projection, the projected world is fan shaped with a wedge shaped gap (the "V") at the far side of the map, which should be left empty. Raster data was instead drawn across that gap as stretched imagery. Raster tiles are now clipped to the conic projection's valid area, so the gap renders correctly. Vector data was already clipped correctly.

Bug fixLuciadCPillar

LCP-702
Fixed an issue where Map::getCameraMap::getCameraMap::getCamera did not reflect the near and far planes that the map adjusts automatically while rendering to keep good depth precision. It returned the near and far the camera was last set with, even when the map rendered with a different, tightened range. Map::getCameraMap::getCameraMap::getCamera now returns the near and far the map actually rendered with, and a camera change event is fired when the automatic adjustment changes them.

Bug fixLuciadCPillar

LCP-1701
Fixed an issue where Transformation::createTransformation::createTransformation::create would throw a RuntimeExceptionRuntimeExceptionRuntimeException for invalid transformations, rather than a InvalidArgumentExceptionInvalidArgumentExceptionInvalidArgumentException as documented.

Bug fixLuciadCPillar

On a 3D map, complex strokes with ComplexStrokeOrientation::CameraFacingComplexStrokeOrientation::CameraFacingComplexStrokeOrientation::CameraFacing are now evaluated in screen space. As a result, patterns (for example the dashes of a dashed line) keep a constant on-screen size regardless of the camera position. Previously, the pattern was perspective-deformed with distance.

Upgrade considerationLuciadCPillar

A number of control measure Line symbols in APP-6D and MIL-STD 2525D no longer display the generic PL ("phase line") label. Previously these symbols were labeled twice: once with PL followed by the first uniqueDesignation modifier, and once with the abbreviation specific to the symbol followed by the second uniqueDesignation modifier. They are now labeled only with their own abbreviation, followed by the first uniqueDesignation modifier.

The change affects the following symbols. All of them belong to symbol set 25 (Control Measure); the symbol code is given for each symbol.

  • APP-6D
    • Light Line: 110200
    • Final Coordination Line: 140700
    • Limit Of Advance: 140900
    • Line Of Departure: 141100
    • Line Of Contact: 140200
    • Probable Line Of Deployment: 141200
    • Bridgehead Line (BL): 141400
    • Holding Line: 141500
    • Release Line: 141600
  • MIL-STD 2525D
    • Light Line: 110200
    • Final Coordination Line: 140700
    • Limit Of Advance: 140900
    • Line Of Departure / Line Of Contact: 141100
    • Line Of Contact: 140200
    • Probable Line Of Deployment: 141200
    • Bridgehead Line (BL): 141400
    • Holding Line (HL): 141500
    • Release Line: 141600

Upgrade considerationLuciadCPillar

ErrorInfoErrorInfoErrorInfo no longer relies on std::error_code: it now stores a luciad::ErrorCodeluciad::ErrorCodeluciad::ErrorCode directly, which is always available.

Error messages of the OGC service formats (WMS, WMTS, WFS and LTS) are now prefixed with the format-specific error code, for example CapabilitiesSourceError - Error while connecting to WMTS url '...'.

Upgrade considerationLuciadCPillar

The default memory limits of the MapMapMap have changed. By default, the GPU memory limit is now 2000 MB instead of 1000 MB. The CPU memory limit remains unchanged at 500 MB. You can still create maps with the old limit by calling Map::Builder::maxMemoryUsageHintMap::Builder::maxMemoryUsageHintMap::Builder::maxMemoryUsageHint.

See the Managing memory usage guide on how to configure LuciadCPillar's memory management.

Upgrade considerationLuciadCPillar

In addition to getRequiredFeatures, WebGpuContextWebGpuContextWebGpuContext now also has a getRequiredLimits method, which returns the WGPULimits required by LuciadCPillar to function properly. You must satisfy these limits by including them in the device descriptor when creating your WGPUDevice. All samples demonstrate how this should be done.

Upgrade considerationLuciadCPillar

The ambient occlusion, eye dome lighting and atmosphere graphics effects are no longer configured through per-property setters. Each now exposes an immutable model, so existing configuration code is source-incompatible and must be updated:
  • Read the current settings with getModel()
  • Build a changed copy and apply it with setModel(...)
  • Turn the effect on or off with setEnabled(...)

The individual property setters these effects used to expose, such as AmbientOcclusionEffect::setPower(...), have been removed. Those properties are now configured on the model passed to setModel(...), through the matching method on its builder.

The atmosphere changes the most: its sky and horizon colors now live in a GradientAtmosphereModelGradientAtmosphereModelGradientAtmosphereModel, and the effect's model is the polymorphic AtmosphereModelAtmosphereModelAtmosphereModel base type, which also has the new ScatteringAtmosphereModelScatteringAtmosphereModelScatteringAtmosphereModel variant.

Eye dome lighting's window (a pixel count) is now unsigned rather than a signed int: on EyeDomeLightingModelEyeDomeLightingModelEyeDomeLightingModel it is a uint32_t in C++, surfacing as uint in C# and long in Java/Kotlin.

See the Configure map effects guide for the full API and per-effect guidance.

Upgrade considerationLuciadCPillar

The C# LuciadCPillar samples now target .NET 8 (net8.0-windows) instead of .NET Framework 4.7.2. The LuciadCPillar C# API itself is unchanged.

This changes the requirements for the samples: building them now requires the .NET 8 SDK, and running them requires the .NET 8 Desktop Runtime. See the system requirements for details.

The Luciad.CPillar.SDK binding is not affected: it still targets netstandard2.0, so it can be used from both .NET Framework and .NET applications.

The reusable sample libraries (Luciad.CPillar.CSharp.Integration.Wpf, Luciad.CPillar.CSharp.Samples.Common and Luciad.CPillar.CSharp.Samples.Wpf.Common) target both net472 and net8.0-windows. You can therefore still reference the sample integration code (such as the WPF WpfMapControl) from a .NET Framework 4.7.2 project, and the sample source remains compatible with .NET Framework 4.7.2.

The C# language version used to build the samples has been raised from 7.0 to 7.3.

Upgrade considerationLuciadCPillar

The WPF integration code in the LuciadCPillar samples has been reworked. The map is now rendered through WebGPU into a texture that is composited inside WPF's own visual tree (through a D3DImage), instead of hosting the map in a separate child window. This removes the WPF airspace limitation. The LuciadCPillar API itself is unchanged.

The airspace limitation came from hosting the map in a separate Win32 child window (through a WindowsFormsHost), which Windows composites as an opaque rectangle on top of every WPF pixel in that area. Because of that, no WPF element (a popup, tooltip, adorner, overlay or panel) could appear over the map. The reworked integration composites the map inside WPF's own visual tree, so WPF content can now be drawn on top of the map.

As an illustration, the WPF samples now place components directly on top of the map, such as the coordinate readout (the location control) that previously had to sit in a bar below the map.

The new WpfMapControl is a drop-in replacement for the previous one. It keeps the same public API and the same WpfMapControlViewModel as its DataContext, so application code that uses it does not need to change.

The previous WindowsFormsHost based integration still works and will keep working, but it is no longer included in the shipped samples.

To adopt the new integration, replace your copy of the integration_wpf sample library with the updated version (the one whose WpfMapControl renders through a D3DImage) and rebuild. No changes to your application code are required.

Upgrade considerationLuciadCPillar

The Qt integration code in the LuciadCPillar samples has been reworked. The map is now rendered through WebGPU into a texture that is shared with Qt's own graphics device (Direct3D 12 on Windows, Vulkan on Linux), instead of the map renderer and Qt sharing a single graphics device. The new approach is significantly more robust, and resolves the lag in map rendering that could occur with the previous approach. The LuciadCPillar API itself is unchanged.

For Qt Quick, QQuickMapItem is a drop-in replacement: application code that uses it does not need to change.

For Qt Widgets, the new QMapWidget replaces the old QMapWindow and works fundamentally differently: it is now a QWidget (a QRhiWidget), whereas QMapWindow was a QVulkanWindow. To upgrade, add the QMapWidget directly to your widget layout, instead of hosting a QMapWindow through QWidget::createWindowContainer. See the updated sample_qt_widget for the new usage.

The previous integration approach keeps working in this release, but it relies on behavior that is no longer guaranteed and may stop working in a future release. We recommend migrating to the reworked sample integration libraries (integration_common, integration_qt_quick and integration_qt_widgets).

Upgrade considerationLuciadCPillar

The LuciadCPillar Android samples now include the libyuv-android library version 0.44.0 to convert video frames decoded by the Media3 library to LuciadCPillar images. More information is available here.

Upgrade considerationLuciadCPillar

The LuciadCPillar Android samples now include the Jetpack Media3 library. Media3's ExoPlayer is used to play video in the video_projection sample. More information is available here.

Upgrade considerationLuciadCPillar

LCP-1601, LCP-1650, LCP-1692, LCP-1702, LCP-1704, LCP-1716, LCP-1743, LCP-1745
The following third party libraries have been updated:
Library New Version
GDAL 3.13.1+1
PROJ 9.7.0
libgeotiff 1.7.4
libzip 1.11.4
libexpat 2.8.3
libcurl 8.21.0
libtiff 4.7.2
sqlite3 3.53.3
openssl 3.5.8
dawn 7977_8+1

Upgrade considerationLuciadCPillar

The versions of Android Jetpack, Gradle, Android Gradle Plugin and Kotlin compiler used in the LuciadCPillar Android samples have been updated. This has no effect on the use of the LuciadCPillar API.