About this release

luciad portfolio
Figure 1. The Luciad portfolio.

The 2022.1 release of LuciadCPillar adds a new supported platform. In addition to the LuciadCPillar C++ and C# API with support for Windows and Linux, there now is LuciadCPillar for Android, a Java and Kotlin API tied to support for the Android platform. The Luciad portfolio figure illustrates all products from the Luciad portfolio and the programming languages that they directly support.

In addition, this release includes a set of improvements to the LuciadCPillar API and format support, across platforms and programming languages.

Benefits of the new features

LuciadCPillar for Android

As of this 2022.1 release, LuciadCPillar is offered on two platforms, each with its own associated programming languages. We added support for the Android platform, allowing you to write mobile applications in Java and Kotlin. The LuciadCPillar API is feature-equivalent throughout the platforms and programming languages. This figure summarizes this setup.

CPillar functionality
Figure 2. LuciadCPillar is offered for two platforms, Android and desktop/on-board. The APIs are feature-equivalent.

Android development

More than 10 years after the introduction of our first solution for mobile applications on the Android platform, it is time for an upgraded capability. Nowadays, mobile phones and tablets have high-resolution screens, a GPU and multi-core processors.

With this release, we introduce LuciadCPillar for Android. This new feature is based on the LuciadCPillar C++ core component, but adds support for ARM processors and an API that aligns with the Google Android developer experience. LuciadCPillar for Android supports the Java and Kotlin programming environments, as shown in the Luciad portfolio figure.

For the capability set, we started from the signature Luciad hybrid 2D/3D view. For an illustration, see the Luciad product portfolio. Because of our focus on dismounted soldier systems, military symbology is one of the key features. All data types are supported: vector, raster, elevation, and 3D data like point clouds and 3D meshes. Because LuciadCPillar offers the same feature set in all languages, all features discussed in this section are also available for the Android platform.

Develop in Java or Kotlin

The LuciadCPillar for Android API derives from the LuciadCPillar C++ API. Based on our expertise in creating Java APIs in general and Java for Android specifically, we ensure that the LuciadCPillar for Android API offers all that is needed for Java development on Android and that the C++ API does not seep through.

You can also use Kotlin to leverage LuciadCPillar functionality, in line with the organization of Android development nowadays. We created the Java API with Kotlin in mind from the outset. Recommended by Google, the Kotlin programming language offers many benefits, for example:

  • Good developer experience: Kotlin is a modern language that is both concise and expressive.

  • Interoperability with Java: use Kotlin along with the Java programming language in your applications without needing to migrate all your code to Kotlin.

  • Safer code: with nullable types included in its typing system, Kotlin helps you avoid NullPointerExceptions.

The LuciadCPillar Java API offers Kotlin-specific Java annotations that seamlessly integrate with the Android development tools.

These LuciadCPillar Android samples are available in Kotlin code.
Android Decoder sample
Figure 3. Android Decoder sample.
Android 3D Tiles sample
Figure 4. Android 3D Tiles sample
Android Military Symbology sample
Figure 5. Android Military Symbology sample
Sample code to get you started

This first release of the Android API comes with a series of samples, illustrating the basics of adding geospatial situational awareness to your mobile application. The LuciadCPillar for Android samples are all available as Kotlin code. The documentation offers a description of the various samples.

Documentation

The LuciadCPillar developer documentation now offers a more focused experience. Based on a 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.

docs installation
Figure 6. The developer documentation offers several profiles, corresponding to the various supported platforms and languages.
docs apiref
Figure 7. API reference documentation is available for each supported language. This figure illustrates the C# API reference.
System requirements

For this new product extension, the minimum requirement is Android 9 and the corresponding language level is 28. The samples require Android 11 (API level 30). We will update this in the future based on the Android support policy, which will be outlined in the documentation. See Hardware and software requirements.

New features available on all platforms

The 2022.1 release of LuciadCPillar also brings several new features in addition to the support for the Android platform. Because LuciadCPillar is feature-equivalent throughout platforms and programming languages, these features are available across the product.

Raster API

CPillar multilevel
Figure 8. LuciadCPillar now supports multi-leveled and tiled image structures.

This release of LuciadCPillar brings a new API to connect to your own custom image data: the RasterModelBuilder. The image types JPEG, PNG and RGB(A) TIFF are supported. In general, multi-leveled and tiled image structures are supported. This support includes imagery services that use regular tile pyramids to stream the data, like the Open Geospatial Consortium (OGC) Web Map Tile Service (WMTS) protocol.

You can also connect to single-level images without tiles. A typical use case is the visualization of images representing a programmatically generated visual analysis result.

In addition, we also added support for updating imagery data via an invalidation mechanism.

Sample code to get you started

We added two knowledge base articles to illustrate the use of the new API: How to provide access to HERE Maps data and How to add a non-georeferenced image to the map.

Improved 3D tiles support

LuciadCPillar allows you to connect to point cloud or 3D meshes data sets encoded as OGC 3D Tiles or Hexagon Smart Point Cloud (HSPC) format. This release improves this capability in three ways: more flexible data loading,crisper visualization and better performance.

Systems that include a data processing chain may have the data in another, intermediate format during processing. LuciadCPillar now facilitates viewing custom 3D meshes or point cloud data via direct programmatic access to the 3D tiles. You don’t need to store the tiles on the file system or a server first.

The 3D tiles rendering now also supports texture compression. This technique optimizes the use of GPU memory. Texture compression is configurable and activated by default.

Ambient occlusion and eye dome lighting are now also available as global effects on the map. These enhance the visual quality of mesh and point cloud data, especially when there are no textures.

The Eye Dome Lighting visual effect adds depth perception and allows you to visualize non-textured OGC 3D Tiles datasets.
No EDL effect
Figure 9. Building visualized without Eye Dome Lighting.
Eye dome lighting effect
Figure 10. Eye Dome Lighting effect in 3D.
Documentation

The articles Tuning performance and visual quality of tiled mesh data and How to configure Map effects show you how to benefit from these performance and visualization improvements.

Other improvements

8-bit GeoTIFF support

LuciadCPillar already supported GeoTIFF files with RGB(A) encoding. This release adds indexed GeoTIFF files with a color map of 8-bit color depth (256 colors). This encoding is relevant when the number of pixels is large compared to the number of colors used in the image.