About this release

The 2024.0 release of LuciadCPillar adds support for vector tiles, a new data type that boosts the performance of contextual vector layers. Moreover, with technology updates and the completion of the multi-language documentation, we continue to improve the developer experience. This release also includes some format-specific improvements.

luciad portfolio
Figure 1. The Luciad portfolio.

Benefits of the new features

This section provides an overview and introduction of new features that are available in LuciadCPillar 2024.0. The new features are available for all the supported platforms and programming languages currently offered for LuciadCPillar.

Support for vector tiles

LuciadCPillar can now connect to and display vector tiles data.
Vatican City tiles
3D vector tiles

A lot of business data is modeled as vector data or feature data. Most of this data can be loaded as-is. For larger data sources, the use of scale ranges and smart filtering ensures a smooth experience. However, a few types of vector data cover large areas, offer very detailed information, and serve as context or background information. Because of the detail and large size of individual objects, filtering and scale ranges are not sufficient. Some examples are world shorelines, country borders or contour lines.

In a process that is similar to how 3D data is processed into 3D tiles, these contextual feature layers can be processed into vector tiles or feature tiles. In LuciadCPillar, we use the term MbTilesFeatureLayerMbTilesFeatureLayerMbTilesFeatureLayer. A common format is MBTiles. MBTiles is a container format for tile sets of 2D data. The specification is open, which makes it a good exchange format. The format is based on the SQLite database engine. MBTiles data can contain raster or vector tiles. For an example, see this figure using OpenStreetMap data and contour lines.

LuciadCPillar now supports MBTiles data, either from files or streamed as MBTiles service. The MBTiles model decoder allows MBTiles data to be accessed according to the MBTiles 1.3 and TileJSON 3.0.0 specifications. Both raster and vector data are supported.

LuciadFusion can serve MBTiles raster and vector data as an MBTiles service. This new service type was added to LuciadFusion in the 2024.0 release.

Loading vector tiles

Vector tiles are represented by a FeatureTileModel. The data can be styled using the MapBox Style format. You can use the MbTilesFeatureLayerMbTilesFeatureLayerMbTilesFeatureLayer to apply such styling. Style files can be loaded from the file system or from a web service.

For this release, we started with a sensible subset of the MapBox Style format. We will extend this over time. The API documentation of the MbTilesFeatureLayerMbTilesFeatureLayerMbTilesFeatureLayer builder documents the supported styles. Don’t hesitate to contact our product support if your data requires a non-supported style that you would like us to add.

Loading raster tiles

Loading raster MBTiles in LuciadCPillar is straightforward and similar to loading any of the already supported raster data formats.

Sample code to get you started

The guide Working with MBTiles data is your starting point in the documentation. You can try out MBTiles data using the Data Formats sample.

mbtiles contours
Figure 2. Contour lines are a typical example of data that benefits from vector tiling. This picture depicts a combination of OpenStreetMap data and contour lines, visualized using LuciadCPillar 2024.0.

OGC 3D Tiles 1.1 connector

We have supported OGC 3D Tiles since version 2020, starting with support for version 1.0. In the meantime, the new version of 3D Tiles has been adopted as OGC community standard. Previously referred to as “3D Tiles Next,” Version 1.1 of the 3D Tiles Community Standard is designed for streaming high-resolution, semantically rich 3D geospatial data to the metaverse. OGC 3D Tiles 1.1 promotes several 3D Tiles 1.0 extensions to ‘core’ and introduces new glTF™ extensions for fine-grained metadata storage.

With LuciadCPillar 2024.0, you can now visualize OGC 3D Tiles 1.1.

The specification of OGC 3D Tiles 1.1 is rich. We have not yet received test data for each new feature, so the currently supported functionality includes:

  • Implicit tiling

  • GLB/glTF as payload

  • Support for a number of glTF 2.0 extensions

glTF data with the supported extensions can also be loaded as 3D icons.

We will continue to complete our support for OGC 3D Tiles 1.1 in upcoming releases, driven by data that we notice and that is reported by you. For example, metadata is not supported, because we have not yet encountered sufficient OGC 3D Tiles 1.1 test data including metadata.

Sample code/documentation to get you started

The documentation topic Data Formats: OGC 3D Tiles and the reference documentation for Ogc3DTilesModelDecoderOgc3DTilesModelDecoderOgc3DTilesModelDecoder have been updated to cover the supported OGC 3D Tiles 1.1 functionality.

Improved developer experience

As we are offering an SDK, it is important for us that you can intuitively work with LuciadCPillar, easily find the right information and smoothly integrate LuciadCPillar into your system. For this release we focused on the following areas.

Complete C# API documentation

This release completes the initiative to offer focused documentation. Based on your choice of programming language, you can see Desktop C++, Desktop C#, or Android developer documentation. Developer articles adapt to the selected profile, with code snippets in either C++, C#, or Kotlin. API reference documentation is available in C++, C# or Java. All code snippets and articles are now available for the three profiles, where applicable. For an illustration, see Figure 3, “The code snippets adapt to the programming language selected in the dropdown box at the top of the page.”.

csharp docs
Figure 3. The code snippets adapt to the programming language selected in the dropdown box at the top of the page.

NuGet packaging

To support your DevOps setup, the LuciadCPillar SDK will now also be delivered as a NuGet package for .NET development. This simplifies including LuciadCPillar into your C# project and allows you to publish LuciadCPillar to your own private NuGet feed. Refer to the Installing LuciadCPillar for C# development tutorial for more information.

Samples now use Qt 6

The C++ samples in the LuciadCPillar release have been updated from Qt 5 to Qt 6. Qt 6 is more modern than its predecessor: it is based on C++ 17 and introduces a new graphics architecture. Notably, it leverages the GPU to render the UI components, and renders a sharp UI regardless of screen size and screen resolution.

The articles Installing LuciadCPillar for C++ development on Windows and Installing LuciadCPillar for C++ development on Linux have been updated to reflect the use of Qt 6. The required version of Qt is documented in the article Hardware and software requirements. Currently you need Qt 6.5.x (LTS). You can get an online installer from https://www.qt.io/download.

Upgrade considerations

Dependencies for LuciadCPillar development on Linux systems have been updated to glibc (GNU C Library) 2.28 and GCC 11.

The GCC 11 update is an update for the compiler and affects you as a developer. It may require code changes on your side but will not affect the deployment environment. This update will offer a better and more stable developer experience when debugging.

As previously announced in the requirements for Android development, the supported Android level has now been updated to level 30. The next update will come with our 2025.0 major release.

Other improvements

OGC GeoPackage encoder

The support for GeoPackage is now complete — you can create a new GeoPackage file, open an existing one and store modifications. All information is available in the topic Data Formats: OGC GeoPackage and the new article Encode feature data to GeoPackage.

Attribution

Some services, such as HERE Maps, require you to display attributions when using their data on the map. LuciadCPillar now keeps track of the attributions from all layers that provide attribution data and exposes an API to retrieve these attributions. For more information, consult the article How to provide and retrieve attribution data. You can also have a look at the HERE maps support in the Data formats sample and the articles How to provide access to HERE Maps data and Visualizing Google 3D Tiles for an illustration.

google attribution
Figure 4. A LuciadCPillar view of the Leuven Hexagon office in attributed Google 3D Tiles.
WebP support

The following decoders now support the WebP file format: