Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: Auto Keyframes in stateful applications #43

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions dev-docs/vNext/magic-keyframes-rfc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# RFC: Feature - Recorded "Magic" Keyframes in stateful applications

* Authors: Chris Gervang
* Date: Nov, 2020
* Status: **Draft**

## Problem

Users need a method to _quickly_ and _automatically_ define an animation with hubble.gl.

Current techniques for defining animation keyframes are either easy-to-use but limited, or tedious but powerful. For example, the kepler.gl camera animation presets are easy to use, but hardcoded and not extendable. On the other hand the Keyframes engine can be set up to animate any aspect of data or visual properties, but requires high effort specialized programming and needs to defined ahead of runtime.

## Solution

The ideal solution is one which can magically animate any change in visual appearance or data query. Ultimately, a magic keyframe needs to translate into a fluid visual appearance, which can be interpolated to transition from one keyframe to the next.

- Keyframe contains state representing appearance.
- State can be interpolated between to transition animation.
- Application provides a pure (side-effect free) translation between state and appearance.

For example, we can take advantage of state stores, like kepler.gl's redux store, by introducing a method for recording snapshots of state in a keyframe. We can also take advantage of deck.gl's declaratively defined properties to store what they are set to in a sequence of keyframes as the user manipulates them, but in the case of directly interfacing with deck.gl an additional translation plugin would need to be developed (similar to kepler's).