Support for COPC and Entwine formats?

Does VTK support rendering of pointclouds from COPC/Entwine sources with a “point budget”? Similar to potree, where points further down the octree are downloaded/rendered as you zoom in to an area.

My end goal is to make a webapp with trame to view pointcloud data on cloud buckets S3/GCS/Azure.

These may be helpful:
VTK/Filters/Points/vtkHierarchicalBinningFilter
VTK/Filters/Points/vtkExtractHierarchicalBins

Ken Martin used these to build a specialized point viewer app PointView. We were getting ~1billion/pts second rendering speed
https://gitlab.kitware.com/ken-martin/pointview

It’s been a while, but we could dig deeper if you need more information.

Thanks for the links @will.schroeder ! Poking around some of Ken Martin’s other repos I see this too:
https://gitlab.kitware.com/ken-martin/vtkLODPointCloudMapper

I’m not working in C++ though. Do you know if it’s possible to use these filters in Python or trame (which I guess would be vtk.js?)

My gut reaction is that you’d want to lever trame’s client server to render with C++ on the server side. If you are rendering huge point clouds, I expect most client-side browsers would choke. But I am far from knowledgeable about this area :frowning:

Potree has been my goto for a while, it is all client side rendering with webgl. The default max is 10 mil points, so you’re not getting as much as PointView, but it is good enough.

Trame looked interesting as I’m already coding in python and could make standalone web apps that integrate with multiple viz libraries.

Trame will let you do remote rendering (use VTK/C++ for the rendering).

Doing local rendering here would be tricky if you want it to be performant.

@Sebastien_Jourdain , I was hoping to avoid remote rendering and managing another server.

For local rendering, that’s why I wanted a point-budget filter to help with performance. For my use case it isn’t critical to see absolutely every point, just a sampling is good enough.

My worry is that if you resample based on camera position. You will keep sending different set of points every time. To keep that reactive (network wise), you will have to use a reasonable number of points as no caching will happen on the client side (always a different set of points).

I mean you could achieve that by sending a new set of point when you stop interacting. That way you might get a reasonable behavior assuming the network latency for exchanging that sampled point cloud is not too big.

HTH