» Animation
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Animation

Russian | Italian

Introduction

vvvv offers different approaches to animate objects in interactive environments.

In many cases, it's not enough to just place static keyframes on a timeline and let the playhead do the job. The animation may need to react to actions or events coming from sensors, networks, input devices or beat-detectors. So in these cases the direction of movement needs to change spontaneously and you often want the transition to the new movement to occur as smoothly as possible. Time- and frame-based approaches can do this trick.

Still, often you also want to timeline some behavior and even combine the different techniques.

So here are the three basic approaches:

Time-based vs. frame-based approaches:

Time-based:

  • most time-based filters are parameterized in a way that they animate towards a target point within a specified certain time. The target can be changed at any point in time.
  • the animation's speed is independent of the framerate.

Frame-based:

  • typically you think about events and reaction to those events at the current moment, not so much about reaching a target in the future.
  • the main idea is to change the value each frame just a bit
  • the animation's speed depends on the framerate and extra care should be taken to avoid it.

Interested in particle systems?

Time-based Animation

Related nodes

Generators:
LFO (Animation)

Filters:
Damper (Animation)
Oscillator (Animation)
Newton (Animation) - accelerates & decelerates
OneEuroFilter (Animation)
LinearFilter (Animation)
Tweener (Animation)
ADSR (Animation)
Decay (Animation)
DeNiro (Animation) - accelerates, drives with constant speed, decelerates (just like a taxi driver)

...and many more, see the Animation category.

When there must be a transition between a starting point (A) and a target point (B) and the animation of the value depends only on time, then the nodes from the Animation category do the tweening for you.

These nodes are building a function curve to animate from A to B and sample this curve as the time goes (independent from the framerate), returning a new value every frame.

If point B changes during the animation, the node builds a new curve and smoothly animates to the new target.

If you just want to smoothen (filter) input values, besides Damper (Value) or Newton (Value) there is also OneEuroFilter (Animation) worth checking out.

See also:

Frame-based Animation

Related nodes

to built up your loops:
FrameDelay (Value)

to accumulate values over time or get changes between frames:
Integrate (Differential)
FrameVelocity (Animation)
FrameDifference (Animation)

to measure time itself:
StopWatch (Value)

nodes that are frame-based implementations of some algorithm:
ADSR (Value Framebased)
Spray (Animation)
Wanderer (Animation 2d)
Wanderer (Animation 3d)

Scenario: an object shall react to events by applying forces.
There are different famous examples of this way of doing animations:

  • BOIDS
  • Physics engines, like Box2D or Bullet (included in DX11).

But you also can do your own frame-based animation, simply by patching.

The basic idea here is that the current value of the animation is simply calculated based upon the value of the last frame and tweaked a bit in a certain way. See more about Loops.

When doing this naively, higher frame rates will result in faster animations. To avoid that, here is a simple trick:

As a result your animation will be framerate independent.

See also:

Timeline

Related nodes

Timeliner (Animation)

If you have static predefined animations, the Timeliner is the easy way to animate properties in time. Check this dedicated page on how to use it.

Automata

The Timeliner has an Automata built in. You can define states (and animations for them) then jump between these states upon the arrival of the events. Every event gets its own input pin.

See also:

Thirdparty OSC Timelines
If the above don't suffice your needs, try one of these third party timelines that can talk to vvvv via OSC:

  • Duration - Timeline for creative code
  • VEZÉR - Timeline based MIDI/OSC/DMX sequencer for audiovisual artists
  • IanniX - A graphical open-source sequencer for digital art
  • OSCSeq - Open Sound Control recording and playback
  • KluppeTimeLine - KluppeTimeLine is a graphical, animated score system
  • ossia score - A free and open-source intermedia sequencer
  • KuStudio is an open source OSC editor, recorder and player, aimed to create a timeline on an audiotrack

Mixed Approaches

  • You can use the Timeliner to define some crucial states of the values in time and let the Time-based Nodes do the job to smoothen the transitions.
  • The other way around: you can have several nicely animated timelines (or several animation states on one timeline) and trigger them when a certain condition is met. This condition can depend on a time- or frame-based animation.


This is the landing page of the category Animation

anonymous user login

Shoutbox

~2d ago

joreg: vvvvTv S0204 is out: Custom Widgets with Dear ImGui: https://youtube.com/live/nrXfpn5V9h0

~2d ago

joreg: New user registration is currently disabled as we're moving to a new login provider: https://visualprogramming.net/blog/2024/reclaiming-vvvv.org/

~9d ago

joreg: vvvvTv S02E03 is out: Logging: https://youtube.com/live/OpUrJjTXBxM

~11d ago

~13d ago

joreg: Follow TobyK on his Advent of Code: https://www.twitch.tv/tobyklight

~16d ago

joreg: vvvvTv S02E02 is out: Saving & Loading UI State: https://www.youtube.com/live/GJQGVxA1pIQ

~16d ago

joreg: We now have a presence on LinkedIn: https://www.linkedin.com/company/vvvv-group

~24d ago

joreg: vvvvTv S02E01 is out: Buttons & Sliders with Dear ImGui: https://www.youtube.com/live/PuuTilbqd9w

~30d ago

joreg: vvvvTv S02E00 is out: Sensors & Servos with Arduino: https://visualprogramming.net/blog/2024/vvvvtv-is-back-with-season-2/

~30d ago