scene.pickPosition return undefined / incorrect position in google chrome

I am trying to add a simple tool that measures straight line distance between two points using scene.pickPosition and scene.globe.pick.

It worked fine until the recent Chrome version (56.0.2924.87), scene.pickPosition would return undefined or incorrect position. Has anyone experienced this issue?

Any help would be greatly appreciated.

Hello,

What version of Cesium are you using? We recently made some improvements to pickPosition, so I would recommend upgrading to the most recent version of Cesium, 1.31.

Let me know if you still see problems in the latest version.

Best,

Hannah

Hi Hanna,

We have upgraded to Cesium 1.31 but with no success.
The following is a snipplet of code we are currently testing:

var model,modelPosition,screenPosition,terrainPosition;

screenPosition = screenToMap(event); //returns Cartesian2()

terrainPosition = castRayTerrain(screenPosition);
console.info('terrianPosition',terrainPosition);
        
model = scene.pick(screenPosition);
console.info('model',model);

if (Cesium.defined(model) && scene.pickPositionSupported) {
   modelPosition = scene.pickPosition(screenPosition);
}
console.info('modelPosition',modelPosition);

In Chrome (56.2924.87), terrainPosition would return normally and model would return a primitive when mouse is hovering about a glb model. However, with a selected model and scene.pickPositionSupported returning true, modelPosition would return undefined.

We have also tried the above in Chrome Canary (58.0.3026.0) and everything seems to be returning normally.

One of our co-work said he once read a post that this maybe grahpics card related? We are currently testing on windows 8 with AMD Radeon HD 8570 with driver version 21.19.407.0. if this is of any help.

Regards,
John

Hi John,

Yes, it’s possible it’s graphics card related. I’ll see if someone on our team with an AMD card sees this problem.

Just to rule out any other problems, can you see if the pickPosition part of this demo works for you? http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Picking.html&label=DataSources

You should see a label when you’re hovering over the truck.

Best,

Hannah

Hi Hanna,

The demo seems to be working in the same browser.

Alright, if that demo is working then there may be something in your code that is causing the position to return incorrectly. It’s really hard for me to say what’s going on without seeing a full code example, but see if you can find any differences between our pickPosition demo and what your code is doing.

-Hannah

Hi Hanna,

We seem to be running the same problem with AMD graphic card FirePro 5000 in pickPosition.

The label with lon, lat, height in this demo http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Picking.html&label=DataSources doesn’t work for me when hovering it.

I have

  1. updated the graphics card driver, google chrome and Firefox to the newest release. But the problem still keeps.
  2. activate WebGL draft extensions in Chrome://flags
  3. check the WebGL report: my firefox has WEBG_depth_texture in its WebGL1 list but google chrome not. But both of them failed with the above mentioned demo.
  4. followed this issue https://github.com/AnalyticalGraphicsInc/cesium/issues/4368 and tried this demo http://hosting.virtualcitysystems.de/demos/temp/pickProblem/Apps/Sandcastle/?src=3D%20Tiles.html&label=undefined. But the pick is failed on my PC.

But every example I mentioned above worked for other PCs with Nvidia graphics cards.

Now I have no solutions about it but replace my AMD graphic card to others like Nvidia which I really don’t wanna do…

Are there any suggestions to avoid that?

Best,

Wang