CMU-CREATE-Lab / data-visualization-tools

EarthTime, and various data visualization libraries
Other
14 stars 5 forks source link

Certain layers won't draw unless the user interacts with the view/timeline #233

Closed rsargent closed 2 years ago

rsargent commented 3 years ago

As of 8de3661841ff368c4ad1850ab89966570431eae5, animated wind plumes don't animate:

https://staging.earthtime.org/explore#v=100920,169358,2101503,1294686,pts&t=-0.1&ps=0&l=blsat,wind_vectors_2013_11_14_250hPa&bt=-0.1&et=-0.1&startDwell=0&endDwell=0&fps=30&

image

Golden, for reference: https://golden.earthtime.org/explore#v=100920,169358,2101503,1294686,pts&t=-0.1&ps=0&l=blsat,wind_vectors_2013_11_14_250hPa&bt=-0.1&et=-0.1&startDwell=0&endDwell=0&fps=30&

image

pdille commented 3 years ago

Right, I meant to create something similar before I went off on vacation. Thanks for posting this.

I'm fairly certain this isn't the result of the recent commit you mention. When looking at this with Jared, my conclusion was that this layer assumes we are always redrawing, but this isn't the case anymore with our new optimizations. If you slowly pan/zoom you'll see it actually does animate during those actions. I think we'll just need to add a special case for this layer where it always tells the renderer that it still needs to redraw.

pdille commented 2 years ago

Background:

Since implementing optimizations around when layers should be redrawn in EarthTime, certain layers have stopped working. These layers are those that previously assumed layers were always being drawn, even if the view/time has not changed. Perhaps a simple layer constraint flag is added to the layer definition to indicate these layers should always be redrawn no matter what. Or perhaps modify the code for these layers to always set themselves as needing to be redrawn.

The list currently includes:

LODES windvectors*

rsargent commented 2 years ago

@pdille @gabrielo

How about we set something like this in drawOptions?

drawEveryFrame: true 

If you like that, let me know, and I can then easily modify the redraw logic to always redraw if any layer has that set.

rsargent commented 2 years ago

@pdille and I added the ability to declare in the source code that a drawing function requires being called every frame, and registered _drawWindVectors and _drawLodes, resolving this issue with 34f5a4223525aac85c4e0f13a692bfedc8f6e2b9.