2022.0.05

Bug fixLuciadRIA

RIA-4105
A label that is created with LabelCanvas.drawLabelOnPath is now redrawn when its associated shape is mutated. Before the fix, on-path labels were not repainted along their mutated shapes.

2022.0

2022.0.04

ImprovementDefense Symbology

RIA-4091
We added the possibility to define your own speedLeaderLengthRatio inside MilSymStyle. The length in pixels of your speed leader is calculated as speed(m/s)*speedLeaderLengthRatio*iconSize and is clipped between 1*iconSize and maxRatioMovementDirectionArrow*iconSize.

Bug fixLuciadRIA

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

2022.0.03

ImprovementLuciadRIA

RIA-4064
The label placement procedure takes now into account the fact that the corresponding body is painted with the OcclusionMode style that makes the shape visible even if it is obscured by other objects. In this case the feature's corresponding label stays visible too.

ImprovementLuciadRIA

RIA-4065
The LoadSpatially strategy will log a warning message when the computed spatial BBOX object has a 0 width or height value. Such a situation can happen when there is no intersection between the current view extent and the FeatureModel.bounds, provided the model bounds is defined.

ImprovementLuciadRIA

RIA-1000
Improved the LoadSpatially strategy behavior when the underlying WFSFeatureStore requests a limited number of features with the WFSQueryOptions.maxFeatures query parameter. In this case, the layer might not re-query the data after zooming in. Now, after zooming in, a new query is launched to get a new set of features when relevant to the new view extent.

ImprovementDefense Symbology

RIA-4062
The MilSymStyle has been extended with a property labelStyleGroup, Put it to "NON_DECLUTTERED" to disable label decluttering for all symbols on the map. More information can be found in LabelStyle.group.

ImprovementDefense Symbology

RIA-4056
We added sample-only functionality to the AllSymbols sample to make it a large, live addendum to the documentation. You can now:
  • Use the search bar to easily find a certain symbol by name or code.
  • Use the "Anchor Points" layer to see the anchor points and their order used to create the symbol.

ImprovementDefense Symbology

RIA-3477
We improved the experience for users of the symbology applications using WebGL Maps:
  • We introduced two new MilSymStyle properties that define the appearance of tactical graphics: skeleton to indicate that you want a simplified style without decorations for your tactical graphics (false by default), and body to indicate that you prefer the full, correct styling for your tactical graphic (true by default).
  • We offer the possibility to make your MilitarySymbologyPainterConstructorOptions. stylePaintState -dependent.
We used this new military symbology API to improve usability for both the Symbology and the AllSymbols sample. On a WebGL map, tactical graphics are pre-loaded using a skeleton style. Only after, symbols are invalidated one by one and redrawn with their body style. We also use the skeleton style as a selection style to improve the response upon selection. To further improve the user experience, we now track the loading progress of the fully styled tactical graphics on the layer. For more information, see this article in the Military Symbology documentation section.

Bug fixLuciadRIA

RIA-4053
Fixed an issue with controller rendering on WebGLMap. In rare cases, it could throw an error if many updates were performed while resolving icon styles.

2022.0.02

ImprovementLuciadRIA

RIA-3918
Added support for 3D Tiles that use coloring as vertex colors.

Bug fixLuciadRIA

RIA-866
Fixed an issue when a feature is selected even when it does not pass FeatureLayer.filter predicate. In such a situation such a feature was painted on a non-hardware accelerated map. This situation happened when a filter predicate was set on a layer before the layer was added to a map.

Bug fixLuciadRIA

RIA-4042
Fixed an issue where creation of Bounds did not finish properly.

Bug fixLuciadRIA

RIA-2905
GMLCodec decodes now the MultiLineString GML geometry.

Bug fixLuciadRIA

RIA-4039
LuciadRIA no longer throws an error when a WMS GetCapabilities response contains no layers.

2022.0.01

ImprovementLuciadRIA

RIA-3948
When creating a WFSFeatureStore from a WFS capabilities object you can override the service URL both for the GET and the POST method. Before you could override the service URL for the GET method only. For more details please consult WFSFeatureStoreCreateOptions.serviceURL API.

ImprovementLuciadRIA

RIA-4020
By default GeoJsonCodec encodes a ShapeList instance to a GeoJSON geometry based on its child shapes. With the GeoJsonCodecConstructorOptions.encodeShapeListAsGeometryCollection API you can override this behavior so that a ShapeList instance is always encoded as a GeoJSON 'GeometryCollection'.

ImprovementLuciadRIA

RIA-3999
EditController and CreateController now emit a EditShape event whenever the shape is edited.

ImprovementLuciadRIA

RIA-2944
FeatureModel, with a WFSFeatureStore created from WFS capabilities, sets the spatial extent of the data (FeatureModel.bounds) based on the bounds reported in the WFS capabilities object. That way you can fit on model bounds even if WFS data is not yet loaded.

ImprovementLuciadRIA

RIA-4019
Now labels, that are styled for hovering or selection, reuse the position of the already painted label. This prevents sudden jumps of label position when labels are hovered or selected.

ImprovementLuciadRIA

RIA-3997
GMLCodec can decode now GML Circle geometries: a 'Circle' (defined by 3 points) and 'CircleByCenterPoint'.

Bug fixLuciadRIA

RIA-3961
Fix for vertical stretched artefacts on some 2D projections.

Bug fixLuciadRIA

RIA-4010
Creating a WFSFeatureStore from a WFSCapabilities object can use now otherReferences if the defaultReference is not known in the ReferenceProvider.

Bug fixLuciadRIA

RIA-4016
Corrected TypeScript type of the WFSCapabilitiesFeatureType.otherReferences property, which is now string[] instead of string.

Bug fixLuciadRIA

RIA-2914
Fixed an issue with labels for 3D icons. They would often disappear because they were obscured by the 3D icon itself.

Bug fixLuciadRIA

RIA-3523
The visibility of point labels on 3D maps is improved when changing the camera position and pitch. Before, point labels could unexpectedly disappear at certain camera pitch values.

Bug fixLuciadRIA

RIA-3984
Creating a WMTSTileSetModel from a WMTSCapabilities object now no longer throws an error if the GetCapabilities response contains a CoordinateReference that is not known in the ReferenceProvider. TileMatrixSets with such a CoordinateReference are disregarded instead.

Bug fixLuciadRIA

RIA-3998
GMLCodec decodes GML 'Polygon' and 'PolygonPatch' geometries without an interior ring to RIA Polygon, instead of to ComplexPolygon.

Bug fixLuciadRIA

RIA-3993
Fix for some geometries that could be misplaced in rare 3D tilesets that would reuse mulitple times the same assets.

Bug fixDefense Symbology

RIA-4028
Fixed an issue where dynamic affiliation color changes were no longer correctly picked up due to an error in caching.

2022.0

New featureLuciadRIA

LuciadRIA now supports 3D Tilesets that contain KTX2/Basis Universal images.

New featureLuciadRIA

LuciadRIA now supports 3D Tilesets that contain CRN images.

New featureLuciadRIA

You can now enable GPU texture compression on TileSet3DLayer 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. Use the "Device Support" sample to verify if texture compression is supported on your device.

New featureLuciadRIA

Added support for HTMLVideoElement as a texture on a mesh. For more information, see MeshCreateOptions.image. See the how-to guide on visualizing 3D icons for more information on how to use video as texture.

New featureDefense Symbology

LuciadRIA has been extended to support all military symbology standards in stand-alone mode. You no longer need a symbology service, because LuciadRIA now includes all military symbology icons by default. Next to displaying tactical plans, you can also preview icons, or include them in various UI elements. To allow you to retrieve such a preview, LuciadRIA offers new API: MilitarySymbologyPainter#createSymbolImage.

New featureDefense Symbology

You can now visualize MGRS grids on a LuciadRIA WebGLMap. This new feature is demonstrated in the "MGRS Grid" sample. For more information, read the MGRSGrid API documentation.

ImprovementLuciadRIA

LuciadRIA now support OGC 3D Tiles point clouds with Draco-compressed PNTS tiles. LuciadFusion also supports creating such datasets.

ImprovementLuciadRIA

A new performanceHints property has been added to FeatureLayerConstructorOptions. It provides settings that can dramatically improve the layer's data loading performance in some situations. Please refer to the API reference documentation for more information on when these settings can be applied.

ImprovementLuciadRIA

A new expression `frontFacing` has been added to `ExpressionFactory`.
It can be used to distinguish pixels that are part of front-facing triangles. This expression for example makes back-facing pixels transparent: map.layerTree.addChild(new TileSet3DLayer(model, { transparency: true, meshStyle: {colorExpression: ifThenElse(frontFacing(), defaultColor(), multiply(defaultColor(), color("rgba(255, 255, 255, 0.3")))} })); Note that if you just want to hide back-facing triangles, it's better to use the facetCulling option. map.layerTree.addChild(new TileSet3DLayer(model, { meshStyle: {facetCulling: FacetCullingType.BACKFACE_CULLING} }));

ImprovementLuciadRIA

New expression functions `normalize` and `length` have been added to `ExpressionFactory` that work on a vector of length 3 (`Point` or `Vector3`) or 4 (`Color`).

ImprovementLuciadRIA

RIA-3936
You can now use a displacement expression on point clouds, similar to displacement of 3dtiles meshes. See `PointCloudStyle.displacementExpression` for details.

ImprovementLuciadRIA

RIA-3762
We've done various improvements to draping of vector and raster data. Many cases where draped data appeared blurry, have been fixed.

ImprovementLuciadRIA

You can now set WebGLMap.maxMemoryUsageHint.cpuMB and WebGLMap.maxMemoryUsageHint.gpuMBto values higher than 4000MB. Previously, this would be capped at 4000MB. This allows you to use more memory in your application. It is intended for software that is run on high-end clients.

It is intended for use on high-end devices with enough available memory. Setting this number too high can cause instability.

ImprovementLuciadRIA

We replaced the PointCloudStyle.scalingMode option with PointCloudStyle.pointSize, which gives you more control over the point cloud dot size.

You can still use the existing scalingMode option for backwards compatibility.

ImprovementLuciadRIA

RIA-3775

LuciadRIA now supports Hexagon Smart Point Clouds (HSPC) in 2D EPSG references.

Before, we supported only HSPC datasets in 3D geocentric (EPSG:4978) coordinates, and non-referenced datasets.

Note that we still recommend to process your HSPC data in 3D geocentric coordinates, for optimal streaming performance. When relying on Hexagon's HSPC conversion functionality available in myVR, you can do this for example with these conversion parameters: mHSPCConverter --source_projection EPSG:7415 --output_projection EPSG:4978.

ImprovementLuciadRIA

We did various improvements to our point cloud rendering visual quality and performance, in particular for Hexagon Smart Point Cloud (HSPC). For details, see the documentation of PointCloudStyle and the documentation articles Tuning performance and visual quality of point clouds and Visualize Hexagon Smart Point Cloud (HSPC) data.

Performance
We improved raw painting performance of all point clouds. Your map will be more interactive and fluent when loading lots of points.
We added a new option PointCloudStyle.pointShape which influences how points are drawn, and how overlap between points is handled. When using SPHERE, overlap result in a high quality visual coverage of your data, but at the cost of performance. We propose to use DISC when you have a small point size as it improves performance. The default is DISC for HSPC, SPHERE for OGC 3D Tiles.

World-sized dots
Next to the existing PIXEL_SIZE and ADAPTIVE_WORLD_SIZE, there is a new scaling mode WORLD_SIZE. This mode is particularly useful for HSPC. It allows points to grow larger when you get close to them, based on a physical size in meters. This helps creating a visually closed surface up-close instead of having interspersed small dots. For details see the pointSize property on PointCloudStyle.

Incremental and partial tile painting
We now display HSPC point cloud tiles partially, based on their level-of-detail. This avoids highly visible transitions between tiles of different level-of-detail. This is automatically enabled for HSPC.

Gap-filling post-processing effect
We added an optional point cloud post-processing effect that intelligently fills up small gaps between points. This helps creating a visually closed surface by in-painting gaps of 1 or 2 pixels. You can enable it using the gapFill property on PointCloudStyle.

ImprovementLuciadRIA

RIA-1437
It is now guaranteed that the reference that is set on constructor for WFSFeatureStore and UrlStore will be propagated to the underlying codec on each query request. Also, it is possible now to specify in GeoJsonCodec and GMLCodec the reference of decoded shapes, which will override the default reference from data that is being decoded.

ImprovementLuciadRIA

RIA-3617
IconStyle: with IconStyle.modulationColor it is now possible to configure a color that is modulated with the icon. For example using an icon with gray-scale colors and a red modulation color will result in a resulting painted icon with red hues. Note that this will only be applied on a WebGL map.

ImprovementLuciadRIA

Transparency flag has now been added to Icon3DStyle in order to allow for correct rendering of meshes with transparent components. This should be set to true when a mesh either has a color or texture with an alpha channel less than 1.0. Note that setting it to true might impact performance.

Bug fixLuciadRIA

RIA-1016
Fixed an issue where labels drawn by FeaturePainter.paintLabel() or Controller.onDrawLabel() are not displayed on the WebGLMap, if the painter or controller does not also draw bodies for label shapes.

Upgrade considerationLuciadRIA

A dependency to the fast_float library version 3.4.0 has been added. This library is used to parse floating point values from strings.

Upgrade considerationLuciadRIA

LuciadRIA now uses the Earcut library. This new dependency requires no code changes.

Upgrade considerationLuciadRIA

RIA-3960
The zlib library has been updated to v2.1.12.

Upgrade considerationLuciadRIA

LuciadRIA now depends on the libraries myVRPointCloud, jsoncpp, pdqsort, and zstd to support Hexagon Smart Point Cloud (HSPC). These new dependencies require no code changes.

Upgrade considerationLuciadRIA

@luciad/ria/shape/format/MGRSPointFormat and @luciad/ria/shape/format/GARSPointFormat have been moved to LuciadRIA's Defense Symbology component. They have also been renamed. You can now find these in @luciad/ria-milsym/text/mgrs/MGRSFormat and @luciad/ria-milsym/text/gars/GARSFormat.

Additionally, the GARSFormatPrecision, MGRSFormatPrecision and MGRSFormatType enums have been moved into their own modules: @luciad/ria-milsym/text/gars/GARSFormatPrecision, @luciad/ria-milsym/text/mgrs/MGRSFormatPrecision and @luciad/ria-milsym/text/mgrs/MGRSFormatType

Upgrade considerationLuciadRIA

LuciadRIA now uses the Basis Universal library. This new dependency requires no code changes.

Upgrade considerationLuciadRIA

LuciadRIA now uses the Goofy library. This new dependency requires no code changes.

Upgrade considerationLuciadRIA

LuciadRIA now uses the Crunch library. This new dependency requires no code changes.

Upgrade considerationLuciadRIA

LuciadRIA now uses WebGL 2.0 instead of WebGL 1.0. WebGL 2.0 is supported by the latest versions of all modern browsers. To verify that your browser supports WebGL 2.0, run the LuciadRIA WebGLMap support sample. Note that a WebGL2RenderingContext is now passed in the callback of the PostRender event, instead of a WebGLRenderingContext.

Upgrade considerationLuciadRIA

RIA-3710
WFSFeatureStore.createFromURL and WFSFeatureStore.createFromCapabilities use now the options parameter of the same type WFSFeatureStoreCreateOptions. That way both the creation functions can use the same set of input parameters. Before the version property was missing in the options for WFSFeatureStore.createFromURL.