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

Streaming point clouds #6397

Closed
12 tasks
pjcozzi opened this issue Mar 31, 2018 · 0 comments
Closed
12 tasks

Streaming point clouds #6397

pjcozzi opened this issue Mar 31, 2018 · 0 comments

Comments

@pjcozzi
Copy link
Contributor

pjcozzi commented Mar 31, 2018

Add the ability to stream real-time LIDAR, e.g., millions of points per second over web sockets, refreshed many times a second, each update is a "frame."

Each frame completely replaces the previous frame and may have a different number of points. Each point may have attributes beyond XYZ/RGB.

Near-term ideas

  • Performance
    • Format
      • What is the right over the wire format? 3D Tiles' pnts?
      • Is quantization or other local coordinate storage needed?
      • Decouple per-point attributes with a small number of unique values into a LUT?
      • Evaluate if Draco is fast enough for this use case, Draco mesh/point compression extension for glTF #5120
    • Implementation
      • What is the right entry point into Cesium? Probably not PointPrimitiveCollection? Perhaps modify PointCloud3DTileContent and friends? Introduce a new lower-level point renderer that both PointCloud3DTileContent and StreamingPointCloud (or whatever) delegate to? Or just make StreamingPointCloud custom?
      • Avoid creating new WebGL buffers on each frame, and other nonsense like creating new render states, etc. Just keep the buffer as big as needed and write into it. Perhaps garbage collect over time if we end up with some outlier frames, e.g., 10 million points compared to a typical 100,000.
    • Evaluate ping-ponging two buffers to avoid stalls / double buffering in the WebGL implementation where the previous draw call using the buffer didn't execute yet so the buffer can't be written to.
    • Are any WebGL 2 features useful, e.g., new vertex attribute formats?
    • Are web workers useful for anything, e.g., Draco decompress or other payload unpacking?
  • Styling
    • Ability to use 3D Tiles declarative styling, ideally without having to recompile the shader
    • Draw multiple frames and fade out the older ones

Longer-term ideas (or near-term if they are needed)

  • Prefetch when possible
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant