Release notes

Version 1.5.0 - April, 2024.

This page provides details about enhancements, deprecations, resolved issues, and known issues in the 1.5 release of ArcGIS Maps SDK for Unreal Engine.


This section describes new features and improvements (what's new).

OpenStreetMap 3D Buildings layer support

The OpenStreetMap (OSM) 3D Buildings scene layer hosted by Esri is now supported.

When using the Modes Panel UI, you can add the OSM 3D Buildings layer to the layers collection of your map under the Layers tab, by specifying the layer type ArcGIS 3D Object Scene Layer and the portal item URL:

Use dark colors for code blocksCopy

Alternatively, when using the API, you can also add the layer directly to the Layers collection of your ArcGISMap

The OSM 3D Buildings layer will work in global scenes when using the geographic coordinate system WGS84 or the projected coordinate system Web Mercator (Auxiliary Sphere), and in local scenes when using the geographic coordinate system WGS84. It is curated and managed by Esri, and features data from the OSM Daylight Map Distribution, which is supported by Meta (formerly Facebook) and others. This service is available for you to use in your scenes and apps, following the ArcGIS Online Terms of Use and with proper license and attribution.

Example of OSM 3D Buildings of Boston, MA

Group layer support

With this release, support for group layers has been added. A group layer is a collection of layers organized as a group in the map. Layers within a group layer are called sublayers and can be of the same type or different types. For example, an integrated mesh scene layer and a 3D object scene layer can be organized together in a group layer.

Group layers are designed for presentation of operational layers that are related by a theme. Group layers are an important concept when building a table of contents user experience, often implemented using a tree view control to represent the hierarchical structure.

Group layers enable you to manage all the sublayers as a single layer, where you as the developer can build an experience that allows your users to interact with the sublayers as a group, controlling properties such as visibility and opacity. Property values you set on the group will apply to all the sublayers. For example, setting the visibility of the group layer to false will turn off all the sublayers, even if their own visibility property value is true.

The group visibility mode enumeration determines how the visibility of each sublayer is managed within a group layer, with three options:

  1. Independent visibility: each sublayer manages its own visibility independently. This means that you can control the visibility of each sublayer individually without affecting the visibility of other sublayers in the group.
  2. Inherited visibility: each sublayer inherits the visibility of its parent group layer. When the group layer is set to true, the visibility of all sublayers within the group is enabled. If the group layer is set to false, the visibility of all sublayers within the group is disabled.
  3. Exclusive visibility: only one sublayer can be visible at a time within the group. Enabling the visibility of one sublayer will immediately disable the visibility of any other sublayer in that group. This allows you to switch between different sublayers within the group while ensuring that only one is visible at a time.

The opacity of the child layers is the mathematical product of the opacity of each individual child layer and the opacity of the group layer. Opacity values range from 0.0 (transparent) to 1.0 (opaque). This means that setting the opacity of the group layer to 0.0 will make all child layers transparent. Likewise when the group layer opacity is 1.0, will set the opacity of the child layers to their individual layer opacity.

The geographic extent, or full extent of a group layer is the aggregate geographic extent of its sublayers. It is derived asynchronously based on what information is available from the child layers, which means the full extent can change when child layers are added or removed. The full extent geometry will have the spatial reference of the first loaded child layer.

In this release, you can work with group layers using the C++ API or Blueprints. Group layers are not currently supported in the Modes Panel UI or components.


  • ArcGISGroupLayer class has been added to support group layers.
  • ArcGISGroupLayer enum value has been added to the ArcGISLayerType enum.
  • ArcGISGroupVisibilityMode enum has been added to enable the visibility mode for the group layer and all child layers.


  • New node Create ArcGIS Group Layer is added under ArcGIS Group Layer for adding group layers.
  • A new node Create ArcGIS Group Layer With Properties is added under ArcGIS Group Layer for getting the properties of the group layer and working with its sublayers' visibilities and opacities.


This section lists OS and framework deprecation information.

OS and framework deprecations

  • Version 1.5.0 (current release) will be the last version to support Visual Studio 2019. A minimum of Visual Studio 2022 will be required at the next release.
  • Version 1.5.0 (current release) will be the last version to support iOS/iPadOS. A minimum of iOS/iPadOS 16 will be required at the next release.
  • Version 1.5.0 (current release) will be the last version to support macOS Monterey (version 12). A minimum of macOS Ventura (version 13) will be required at the next release.

Issues resolved

  • Some parts of meshes are missing when there are overlapping polygon areas with the Replace mesh modification type.

    Summary: When two overlapping mesh modifications of type replace are created on the elevation surface, the overlapping region is not rendered.

  • Question on Esri Community: Shadowing in integrated mesh in a VR experience.

    Summary: When using an ArcGISMap with integrated mesh and a basemap in a VR experience, a shadow/silhouette of the integrated mesh appears draped on the basemap and changes shape as the user pivots around the integrated mesh.

Known issues

  • A basemap that fails to load will cause all layers in the ArcGIS Map to fail to display.

    Summary: If you are using a basemap that fails to load (for example, a preset basemap that requires an API Key, but no API Key is set) then the loading of the ArcGIS Map will be interrupted and it will appear blank. This also impacts the SDK samples that use a preset basemap.

    Workaround: Be sure to set an API key when using one of the preset basemaps.

  • View state report propagated warning messages

    Summary: When you subscribe to the error messages by using the view state report, propagated error messages are logged in the Output Log although it is not an error.

    Workaround: This issue does not impact the usage of the plugin. If you use the ArcGIS View State Logging Component in your level, you have the option to hide warnings.

  • Tile flashing

    Summary: While navigating in the level, a few tiles flash occasionally.

    Workaround: Disable occlusion culling by following the Unreal Engine's documentation

  • OAuth edge case issue

    Summary: The authentication cannot be completed even if the sign-in is successful when there are expired sign-in pop-up windows from the previous private layer loading attempt. Using or closing an expired pop-up window causes Unreal Engine to crash.

    Workaround: When the sign-in window pops up, always close the window by either signing in or closing it manually.

  • Some parts of integrated mesh scene layers flash while navigating around the area.

    Summary: When elevation is enabled in the scene, some parts of the integrated mesh scene layers flash.

    Workaround: Disable elevation.

  • The extent dimension values are incorrectly applied in the scene when the extent center is away from the Equator.

    Summary: When you set an extent in the area away from the Equator in an ArcGIS Map with a geographic coordinate system, the shape dimension is bigger than the values set for the extension.

    Workaround: No workaround available.

  • Services cannot be loaded with the item URL if non-ASCII characters are in the service URL.

    Summary: When there are non-ASCII characters in the service URL, the layer cannot be loaded by using the item URL.

    Workaround: Use the service URL that is encoded in UTF-8.

  • Mesh collider/Terrain occlusion issue

    Summary: When using an integrated mesh layer that dips below the elevation, the terrain occlusion mechanism is not showing the elevation but the collider still exists, which in some edge cases can make objects float above the integrated mesh.

    Workaround: No workaround available.

  • RGBA initializers shown in rendered basemaps

    Summary: Some basemaps, when utilized with scenes, include RGBA value initiator labels (e.g. RGBA(255,12,87,0)) that don't represent actual map locations.

    Workaround: No workaround available.

  • On Zoom to Layer/Elevation, the editor camera is misaligned with the horizon in Unreal Engine 5.2 and above.

    Summary: After you click "Zoom to Layer" or "Zoom to Elevation" and then start and stop Play mode, the editor camera orientation is misaligned with the horizon.

    Workaround: Reset the editor camera in the Pawn actor.

  • Map tiles flash in GlobalComponent and LocalComponent samples when in editor mode in Unreal Engine 5.0 and running on Apple silicon-based Mac computers.

    Summary: Map data continuously flashes when moving the editor camera in editor mode when you open GlobalComponent or LocalComponent sample using Unreal Engine 5.0.

    Workaround: Use Unreal Engine 5.1 and above.

  • Some parts of the mesh are missing or have bad LOD for the area with the replace mesh modification type.

    Summary: For the flattened area with a new z value where the replace mesh modification type is used, some parts of the mesh are missing or have had low LOD depending on the camera position.

    Workaround: No workaround available.

  • Changing building scene layer opacity doesn't apply in play mode

    Summary: After you change the building scene layer opacity and click play, the opacity value gets lost.

    Workaround: No workaround available.

  • Setting the parent group layer opacity before the layer is loaded does not affect the child layer opacity.

    Summary: Changing the group layer opacity before the layer is loaded does not affect the opacities of its child layers (for example, if a child layer initial opacity is 1.0, setting the group layer initial opacity to 0.5 does not update its child layer opacity to 0.5).

    Workaround: Set the layer opacity using SetOpacity() once the layer is loaded. SetDoneLoading() can be used to set a callback to update the layer.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.