Skip to content

Conversation

@subashtiwari1010
Copy link
Contributor

Description

Introduced the possibility to drape imagery layers on top of 3D Tiles. The drape is only done of those imagery layers that are above the 3d tiles (upon which the drape is done) in the ToC.

Please check if the PR fulfills these requirements

What kind of change does this PR introduce? (check one with "x", remove the others)

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Other... Please describe:

Issue

What is the current behavior?
There is no possibility to drape the imagery layers on the 3d tiles.
Fixes #11257

What is the new behavior?
When the imagery layers are above the 3d tiles in the ToC, those layers can be draped on the 3d tiles.

Breaking change

Does this PR introduce a breaking change? (check one with "x", remove the other)

  • Yes, and I documented them in migration notes
  • No

Other useful information

@subashtiwari1010 subashtiwari1010 added this to the 2025.02.00 milestone Sep 12, 2025
@subashtiwari1010 subashtiwari1010 added New Feature used for new functionalities 3D All issues related to the 3D rendering in CesiumJs labels Sep 12, 2025
Copy link
Contributor

@allyoucanmap allyoucanmap left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are few issue to solve:

  • We should move the _msUpdatePrimitivesImageryLayersTimeout function setup inside componentDidMount of the cesium/Map.jsx file so we are sure is created once. We should also set it to undefined on componentWillUnmount
  • The overlay is not working properly when a imagery layer is moved after the 3D Tiles or removed by the TOC, steps:
    • open this map
    • move the test_dataset layer below the 3D Tiles layer (test again by remove it from the TOC)
    • Expected the overlay is not applied
    • Current the overlay is still applied
  • It seems the overlay system is a bit slow to apply so I think it would be better to enable it with an options. My proposal is to include a new property called enableImageryOverlay for 3D tiles layer. This property should be undefined by default and accessible as checkbox in the display panel
image

@subashtiwari1010 subashtiwari1010 force-pushed the feat/support-3d-tiles-imagery-lyr branch from 47d6fcb to 831a874 Compare October 16, 2025 14:13
@subashtiwari1010
Copy link
Contributor Author

  • The overlay is not working properly when a imagery layer is moved after the 3D Tiles or removed by the TOC, steps:

    • open this map
    • move the test_dataset layer below the 3D Tiles layer (test again by remove it from the TOC)
    • Expected the overlay is not applied
    • Current the overlay is still applied
  • The imagery overlay on 3D Tiles is not updating correctly when an imagery layer is moved below the 3D Tiles layer in the TOC, removed, or enable imagery overlay is disabled from the 3d tiles settings.
  • Adding the drape overlay over the 3D Tiles works as expected.
  • The function to remove draped imagery layers works fine; the layers are removed from the imageryLayers field of the 3D Tiles primitive.
  • However, the draped imagery remains visible on the 3D Tiles in the map. So, I think the reference to the overlay is not being visually cleared from the scene.

@tdipisa tdipisa added the BackportNeeded Commits provided for an issue need to be backported to the milestone's stable branch label Nov 4, 2025
Copy link
Contributor

@allyoucanmap allyoucanmap left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@subashtiwari1010 I pushed a code refactor because the way we implemented it before was not making it possible to remove imagery layers. The refactor moved all the logic to the 3D Tiles again similar to your initial approach but added logic in the generic Layer component to trigger an update count every time a new imagery layer is added removed or sorted in the layer tree. Additionally few fixes have been introduced inside the imagery visibility and opacity management to use as much as possible the native CesiumJS api.

Note: with this approach we are forced to recreate the 3D Tiles when the layer tree is reorder to ensure all the imagery layer are correctly placed

Please complete the PR with following:

  • review the overall code and test it locally to ensure everything is working as expected
  • review all the messages are requested inline
  • fix failing test

"eyeDomeLightingRadius": "Lighting radius"
}
},
"enableImageryOverlay": "Enable imagery overlay"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should explain a bit more, e.g.

Suggested change
"enableImageryOverlay": "Enable imagery overlay"
"enableImageryOverlay": "Enable imagery layers overlay"

I think we should add an inline question mark icon info with additional information explaining that all the imagery layers such as WMS, TMS, WMTS, ... positioned above the 3D Tiles will be rendered in order on top of it.

Please use the same component already used for other checkbox in settings, e.g. this is visible for WMS

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3D All issues related to the 3D rendering in CesiumJs BackportNeeded Commits provided for an issue need to be backported to the milestone's stable branch New Feature used for new functionalities

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for 3D Tiles imagery layers

3 participants