How to improve dynamic ellipse performance in CesiumJS?

I am trying to render a lot of dynamic ellipses in real-time using CesiumJS for the purpose of plotting satellite coverage of mega constellation such as Starlink(1000+ satellites) or OneWeb(200+ satellites).
The problem is, when the ellipses are enabled, FPS drops to very low value considerably.
Take an example for around 200 ellipses which move with the satellites on terrain, the FPS drop to 5. With more than 1000 Ellipses, the FPS drops to 0.9 sometimes even lower.

Through searching online, the following where proposed:

  • Draw the ellipses without time changing or position changing mode as the ellipses get re-drawn in every frame change → This is not ideal because the ellipses are meant to show coverage over time unless there is a way to limit the FPS and trigger Cesium refresh at specific intervals which of course will make the animation not to be smooth.
  • Use a point to draw the ellipses → Not possible unless someone point out how to convert the pixelSize of the point to meters on the Cesium sphere since the coverage area are calculated using meters in radius.
  • Using CZML file → For the time varying nature of the satellites, the generated CZML file go beyond 100MB and require time to process, hence not ideal for real-time problem. FPS drops as well when the circles are enabled.

Can anyone suggest how to solve this FPS drop problem for the ellipses or a method to draw a flat point on surface of the terrain which will require conversion of radius on terrain to pixelSize which is a unit used by a point?

Any help will be much appreciated. Thank you.

Hi @sglee - welcome to the community forum! There have been a number of threads about similar topics here in the past. Could you please share some sample code showing how you are drawing the ellipses? A Sandcastle example would be great.