cesium icon indicating copy to clipboard operation
cesium copied to clipboard

Point cloud performance degrades significantly when points are filtered out

Open connormanning opened this issue 1 year ago • 1 comments

What happened?

When a point cloud show filter is applied, specifically when many points are filtered out, the rendering performance degrades very significantly. The responsiveness of Cesium itself slows to a crawl, and actually my whole machine starts to lag as well - to the point where I need to close my example tab before I can switch over to other applications smoothly.

Reproduction steps

Steps

  1. Display a 3D Tiles point cloud dataset in Cesium, which has a filterable attribute (for example Classification)
  2. Filter out a significant portion of the points by setting a show.conditions rule
  3. Pan the renderer and view the performance

Notes

The filter must hide a significant amount of points. For example, if there are a handful of points marked as Noise, filtering these points will not reproduce the issue. Real-world scenarios that filter a large percentage of points are very common, so this is not a contrived scenario. Some common/valuable scenarios:

  • Display only Ground points (filtering out Vegetation/Noise/Buildings/etc) - in an urban or below-the-jungle scenario this would filter out a large percentage of points
  • Display only a single custom Classification (for example display only Wires)
  • Display only Building points
  • Display only Withheld/Noise/Unclassified, or similar - viewing only points that are "exceptions" in some way

Sandcastle example

Base case

No filter applied, performs well

https://sandcastle.cesium.com/#c=hZINb9o4GMe/ii+aNCoxJ4Ry23W0GqMbDQO6jbQ7epkm4zwUD7/kbIcMpn732QRu5TRpiiK//Z73fxiigSbSoj4YVorhFBFKwRhkFdqoUiOmJCLGgDWZrBmcKIlzWJCS294OTtUKJDpHWQCb4XI+oOyaDZObbdKasMQk8mOH9pM/k1Xx921/+Bd20L/5YOWgpD25vInuxKwz7kedyeBDPEo/xONtYmfpTXzXb62u0148Fkk03nJxfUnZqD8s7pwzZ9caTytG48maDm63yddinoi3W+oDivxrwiO38mXu2HF6E43TXmeSzqKxjPDVLH27fNZ+cTrKy8vX8eSUtl2cj51PX55f9TYv4N18Mpy9v72qRlUWvMwkVdJYtGZQgXZVSqj23cK3u7tGFtDdua+kJUyCzoITZ2f1Bn3PJEK1A8s4uD46D6Qi7NBxXC/ty7R+xguthOtwz/c8yRvx8+i0E8XN2hNCgnxjohRTqgHktCAU3mit9BlqNT3w4AOjQyxs7IbDcc6P4039c2PvuVBM2inbwhlqN+srqrh3vQd2heTMOkmYM/TP4RK5bfDke587mbAFo8QDD+iP83MUZ0HTqWLnpvH03qf89CQLPjePbK0u4QgsmFztuAO23zzs7cxSVb/PKgzRJ2aXyC4BzYGrCnE3G1S6eQoB0kLePIIL0AulBZEUUMU4Rznca5LD2RH1u1oXhBv4Rer/Dcdv/F/rCRsKEnChmXAlrMFgkueN/fjqWdZq2eNbpUSqHgP+e0AuE7pEDfBaOPmpOsUBc3W/v3e0yyNoBt2dLi489YqJQmmLSs0bGIcWRMGJBRPOS7pyCqLGeLtueDDp5myNWH7+C9Ej6vviXhYl515JWXDRDR1/ZMYVyZm8v16D5mTjEJ9Gd9m6GNUPGONu6I4+6P9trVJ8TvQjvz8A

Comparison

Same as above, with filter applied: performance degrades. Warning: this may lag your machine until you close the tab

https://sandcastle.cesium.com/#c=jZKPb9o4FMf/FV80aVRiTgjltutodYxuNAzoNtLu6OU0GedRXPwjZztkMPV/n03gVk6T7hRFtp8/74ff+4YhGmgiLeqDYaUYThGhFIxBVqGNKjViSiJiDFiTyZrBiZI4hwUpue3t4FStQKJzlAWwGS7nA8qu2TC52SatCUtMIj91aD/5NVkVf9z2h79hB/2dD1YOStqTy5voTsw6437UmQw+xqP0YzzeJnaW3sR3/dbqOu3FY5FE4y0X15eUjfrD4s4Fc36t8bRiNJ6s6eB2mzwU80S821KfUOQPCY/cype5Y8fpTTROe51JOovGMsJXs/Td8kX71ekoLy/fxJNT2nZ5PnU+f3l51du8gvfzyXD24faqGlVZ8DqTVElj0ZpBBdq9UkK17xa+3dkaWUB3576SljAJOgtOnJ/VG/QtkwjVASzj4ProIpCKsEPHcb20L9P6Gi+0Eq7DPd/zJG/EL6PTThQ360gICfKViVJMqQaQ04JQeKu10meo1fTAo0+MDrmwsRsOxzU/zTf114195EIxaadsC2eo3axNVHEfeg/sHpIz6yRhztCfByNy2+DZtz53MmELRokHHtEv5+cozoKmU8UuTOP5vS/5+UkW/NU88rW6hCOwYHK14w7YfvO49zNLVf13VWGIPjO7RHYJaA5cVYi72aDSzVMIkBby5hFcgF4oLYikgCrGOcrhXpMczv7/QxeEG/hJ3f9Mxm/8X4sJGwoScKGZcPWvwWCS54397OpB1lLZ41ulRKqeAv57RK4SukQN8EI4+SE5xQFzdb+3O9rVETSD7k4UF576nYlCaYtKzRsYhxZEwYkFE85LunLyocZ4v254cOnmbI1Yfv4TxSPq++JuFiXnXkZZcNENHX/kxhXJmby/XoPmZOMQX0Z32boY1RcY427ojj7pv32tUnxO9JO43wE

Environment

Browser: both Firefox and Chrome CesiumJS Version: 1.120 Operating System: macOS Sonoma 14.5

connormanning avatar Aug 20 '24 16:08 connormanning

Edited to clarify the comparison between 2 sandbox links - one working as expected with no filter applied, and one displaying the issue with points filtered out.

connormanning avatar Aug 20 '24 17:08 connormanning

Thanks for the report @connormanning.

Is this by any chance on a Mac Silicon chip? ie, M1, M2... If so, I believe this is a duplicate of https://github.com/CesiumGS/cesium/issues/11270.

ggetz avatar Aug 28 '24 12:08 ggetz

Yes, good find - and looks like there's some useful investigation in that ticket. I'll close this one as a duplicate.

connormanning avatar Aug 28 '24 14:08 connormanning