Skip to main content

Animation and rendering

A common use case when exporting videos is to add animation to highlight a map area or transition between values.

Keyframe-based animation​

Clicking a node with animatable properties will surface its properties in the right panel on screen. Clicking the diamond next to a property will add a keyframe for that property to the timeline.

You can scrub the timeline further ahead and change any value to set a new keyframe. You should now see a new keyframe added to the timeline as a diamond icon. You can move and adjust these values using the timeline editor, or edit the curve between the values.

Animating table cells​

Cells in a TableEditor can be keyframed one at a time. Hover a cell and click its diamond to add a keyframe, then scrub ahead and edit the cell to add the next one. Numbers, colors, and points interpolate; text and booleans switch at the midpoint. Each cell gets its own track, named table / data / <row> / <column>.

Tracks follow the row's position in the table. Adding or deleting rows above an animated row moves its animation onto whichever row takes that position, and renaming a column leaves its tracks on the old name.

Rendering output​

On the lefthand node tree, find the "render" sheet object under the current project (typically the project name, the bottom-most one with the most sheet objects).

You can adjust parameters like framerate, codec and resolution before exporting. Clicking the startRender button will open a dialog asking where to save your video file. The app will progress through your timeline and render to the file as a video.

Transparent video​

To composite a visualization over other footage, pick the VP9 codec in the Out node's render settings and check Transparent background. The export is then a WebM file with an alpha channel instead of an MP4. Anything the scene doesn't draw, such as a transparent deck.gl clear color or the space around a globe, stays transparent; a basemap with a solid background stays opaque. Chrome and Edge play these files with their transparency, but many desktop players and editors ignore WebM alpha.

Procedural animation​

All values are reactive and can be driven by any other property.

Combining a TimeOp with an ExpressionOp using Math.sin() is a good way to create a simple animation, say an oscillating camera move based on the current time:

// In an ExpressionOp connected to TimeOp output
Math.sin(d * 0.001) * 10 // Oscillate between -10 and 10