Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

scene.pickPosition cannot accurately pick the correct position in underground mode. #12268

Open
wumanho opened this issue Oct 30, 2024 · 4 comments
Labels
category - picking needs feedback On hold until additional info is supplied type - bug

Comments

@wumanho
Copy link

wumanho commented Oct 30, 2024

What happened?

When I try to enable underground mode based on a Sandcastle example, I find that using pickPosition in events such as Cesium.ScreenSpaceEventType.MOUSE_MOVE and Cesium.ScreenSpaceEventType.LEFT_CLICK does not return the correct latitude and longitude coordinates.

And if set the option viewer.scene.pickTranslucentDepth = true, pickPosition seems to work correctly, but rotating the camera view results in a render error.
image

Please refer to the Sandcastle example I provide below for the reproduction. Thank you.

Reproduction steps

  1. set scene.globe.translucency.enabled = true
  2. create a mouse event handler like Cesium.ScreenSpaceEventType.MOUSE_MOVE

Sandcastle example

https://sandcastle.cesium.com/index.html#c=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

Environment

Browser: Chrome 120.0.6099.200 & Edge 118.0.2088.76
CesiumJS Version: 1.95.0 & 1.122.0
Operating System: Windows 11

@wumanho wumanho changed the title scene.pickPosition cannot accurately pick the correct location in underground mode. scene.pickPosition cannot accurately pick the correct position in underground mode. Oct 30, 2024
@ggetz
Copy link
Contributor

ggetz commented Oct 30, 2024

Hi @wumanho, what are you attempting to pick in this example? The terrain or the pipes beneath it? What values are you expecting see?

@ggetz ggetz added the needs feedback On hold until additional info is supplied label Oct 30, 2024
@wumanho
Copy link
Author

wumanho commented Oct 31, 2024

Hi @wumanho, what are you attempting to pick in this example? The terrain or the pipes beneath it? What values are you expecting see?

Hi @ggetz , sorry, I didn't explain it clearly before.

I am trying to pick the latitude, longitude, and height of the terrain.

When I set the alpha value of the right panel to 1, I can get the expected terrain position, and the console logs numbers around 200, representing the terrain height.

However, if the alpha value is less than 1, the position I get is not what I expect, and the console shows height values like -10000.

The other problem I got is enabling viewer.scene.pickTranslucentDepth = true can lead to crashes. Please refer to this example for the reproduction. After performing a few rotate or zoom operations on the map, the problem will appear.

Thank you very much for your help.

https://sandcastle.cesium.com/index.html#c=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

@ggetz
Copy link
Contributor

ggetz commented Nov 8, 2024

Thanks for the explanation!

Ah yes, you will need to set viewer.scene.pickTranslucentDepth = true to pick translucent terrain.

It seems that I am not able to reproduce the crash on my end. I have ensured viewer.scene.pickTranslucentDepth = true, and have rotated and moved the camera throughout the scene.

@wumanho Would you be able to:

  1. Copy and paste the full error text
  2. Visit webglreport.com and take a screenshot of your results

@wumanho
Copy link
Author

wumanho commented Nov 12, 2024

Of course! 🙂

Full error text in case 1

Sandcastle example

DeveloperError: This object was destroyed, i.e., destroy() was called.

Error
at new DeveloperError (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:10067:13)
at Imagery.throwOnDestroyed (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:22327:13)
at ComputeCommand.postExecute (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:210268:19)
at ComputeEngine.execute (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:176739:22)
at ComputeCommand.execute (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:82765:19)
at executeComputeCommands (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:240446:22)
at executeCommandsInViewport (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:240711:7)
at Scene4.updateAndExecuteCommands (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:240530:7)
at renderTranslucentDepthForPick (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:226936:11)
at Picking.pickPositionWorldCoordinates (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:226970:7)

Full error text in case 2

Sandcastle example

TypeError: Cannot destructure property 'pass' of 'command' as it is undefined.

TypeError: Cannot destructure property 'pass' of 'command' as it is undefined.
at View.createPotentiallyVisibleSet (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:226520:15)
at executeCommandsInViewport (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:240709:10)
at Scene4.updateAndExecuteCommands (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:240530:7)
at renderTranslucentDepthForPick (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:226936:11)
at Picking.pickPositionWorldCoordinates (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:226970:7)
at Scene4.pickPositionWorldCoordinates (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:241441:26)
at pickPosition (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:233343:33)
at zoom3D2 (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:234295:22)
at maintainInertia (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:232789:9)
at reactToInput (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:232833:11)

Screenshots

image
image

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category - picking needs feedback On hold until additional info is supplied type - bug
Projects
None yet
Development

No branches or pull requests

2 participants