I'm the lead developer for NASA's new gamma-ray constellations page, which is an interactive outreach tool to highlight what the night sky looks like at different wavelengths:
https://fermi.gsfc.nasa.gov/science/constellations/

I used ThreeJS to put together the interactive content and while the page works fine on a modern laptop, I've been seeking ways to improve performance on older devices as well as mobile platforms.
My apologies if this is too broad of a question, but I would appreciate any comments on how to improve the efficiency of ThreeJS in such an application. In particular, I'm curious to hear how experienced ThreeJS coders would potentially consolidate/merge geometries to cut down on CPU/memory overhead. I'm a scientist pulling double duty as a programmer, so any suggestions on how to improve the performance of the current code would be greatly appreciated.
Here's a basic breakdown of how the interactive scene is constructed, but the full code can be found at the link above:
- Create and texture a "sky" sphere
- Position the camera inside the sphere
- Create grid lines along the sphere
- Create the optical constellation lines
- Create the gamma-ray constellation lines
- Create geometries to contain the constellation art
- Create transparent click capture geometries to toggle constellation art
The final product has 1083 geometries, 75 textures, 125336 vertices, and 40642 faces. Viewing the page on my 2016 MacBook Pro for a few minutes will heat it up enough to fry an egg. Any suggestions on best practices to make the code more efficient would be appreciated.