Skip to content

Virtual.ink Develop Studio -- Plugin Guide

Light-painting accumulation and decay trails for video footage. Turn any pre-recorded clip into a long-exposure light painting inside Adobe Premiere Pro or After Effects.

Light-painting is about revealing reality in a way our eyes can't see. We all know the magic of long-exposure photography. But what if that same magic could live in video?

Installation

  1. Close Premiere Pro / After Effects if running.

  2. Copy VirtualInkDevelopStudio.aex to the shared Adobe plugin folder:

    C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore\Virtual.ink\
    
  3. Launch Premiere Pro or After Effects.

Getting Started

  1. In the Effects panel, find Virtual.ink > Virtual.ink Develop Studio.
  2. Drag the effect onto a video clip.
  3. Open Effect Controls for the clip.
  4. Adjust parameters (see below).
  5. Play back or export from the beginning of the clip for correct paint accumulation.

Important: The light-paint effect accumulates frame-by-frame in sequence. Always start playback, render, or export from the beginning of the clip when judging the result. Scrubbing and out-of-order previews can reconstruct or approximate the paint history, but they are not the authoritative view.

Premiere Pro Tips

  • The best way to reveal the full light-painting result in Premiere Pro is to render the sequence from the Sequence menu. Because the effect builds over time, a rendered preview is often more reliable than real-time playback.
  • To test only part of your timeline, set In and Out points first, then render just that section.
  • If your computer struggles with high-resolution footage, create proxies before testing. This plugin is computationally demanding, and proxies can make iteration much smoother.

Parameters

About Virtual.ink

Type

Button

Opens the about dialog with version information, links, and license messaging.

Threshold

Type

Slider

Range

0 -- 255

Default

200

Keyframeable

Yes

Brightness cutoff for paint detection. The plugin computes each pixel's luminance (0.299R + 0.587G + 0.114B) and considers it "paint" if it exceeds this value. Lower values capture dimmer sources; higher values are more selective.

  • Low values (50--100): captures most bright and mid-tone content. Useful for scenes with subtle light sources.
  • Mid values (150--200): good starting point for typical LED and fire-based light painting.
  • High values (220--255): only the very brightest highlights are treated as paint. Useful for isolating specular reflections or concentrated light sources.

Decay Mode

Type

Popup

Options

Linear, Natural, Gentle

Default

Linear

Keyframeable

Yes

Controls the mathematical curve used when paint fades out.

Mode

Behaviour

Linear

Paint holds at full brightness for the Paint Duration, then fades in a straight line over the Fade Duration. Predictable and uniform.

Natural

Paint holds, then fades exponentially with a faster initial drop and a longer tail.

Gentle

Paint holds, then fades with a cosine curve for a softer roll-off.


Paint Duration (ms)

Type

Slider

Range

0 -- 20,000 ms

Default

0

Keyframeable

Yes

How long paint stays at full brightness before fading begins in LinearNatural, and Gentle modes.

  • A value of 0 means the fade begins immediately.
  • If Paint Duration and Fade Duration are both 0, paint is permanent.
  • If Paint Duration is greater than 0 and Fade Duration is 0, paint holds and then drops away immediately.

Fade Duration (ms)

Type

Slider

Range

0 -- 20,000 ms

Default

3,000

Keyframeable

Yes

How long it takes for paint to fade from full brightness to invisible after the Paint Duration has elapsed in LinearNatural, and Gentle modes.

  • Short values (500--1,500 ms): snappy, short-lived trails.
  • Medium values (2,000--5,000 ms): flowing tails that linger naturally.
  • Long values (8,000--20,000 ms): the paint hangs around for a very long time, building up dense layers.

Paint is only permanent when Paint Duration and Fade Duration are both 0.

Paint Opacity (%)

Type

Slider

Range

0 -- 100%

Default

100

Keyframeable

Yes

Overall opacity of the accumulated paint layer before it is composited with the original footage. Lowering this creates a more transparent, ghostly trail effect.

This is a display-side control. Changing it does not clear the stored paint history.

Blend Mode

Type

Popup

Options

Lighten, Screen, Soft Light, Add, Color

Default

Screen

Keyframeable

Yes

Controls how the accumulated paint layer is composited onto the original footage.

Mode

Result

Lighten

Each pixel takes the brighter of the original or the paint. Clean, never over-brightens.

Screen

Additive blend that avoids clipping. Bright, airy trails. Good default for most footage.

Soft Light

Subtle, smooth overlay. Paint gently tints the image without dominating.

Add

Pure additive. Paint values are added directly to the original. Can clip to white on bright footage -- great for high-energy looks.

Color

Applies the paint's hue and saturation while preserving the original luminance. Useful for tinting scenes with colored light sources.

This is also a display-side control. Changing it does not clear the stored paint history.

Reset Paint

Type

Checkbox

Default

Off

Keyframeable

Yes

When checked, clears all accumulated paint on that frame -- the entire internal buffer is wiped to black.

Typical workflow:

  1. Leave Reset Paint off during normal playback.
  2. On the frame where you want to clear all trails, keyframe Reset Paint on.
  3. On the very next frame, keyframe it back off.

This lets you create multiple independent light-paint segments within a single clip without splitting it. For example, if a scene has two separate performances, you can reset between them so paint from the first doesn't bleed into the second.

Light Separation

Type

Checkbox

Default

Off

Keyframeable

Yes

Enables the light separation system. When active, the plugin separates the displayed paint from the rest of the scene so the scene can be dimmed or desaturated before the paint is composited back in.

The controls below are disabled until Light Separation is turned on.

Sep Strength

Type

Slider

Range

0 -- 100

Default

50

Keyframeable

Yes

How aggressively bright content is classified as paint versus scene. Higher values push more of the image into the paint side of the separation.

Sep Softness

Type

Slider

Range

0 -- 100

Default

20

Keyframeable

Yes

Controls the softness of the separation edge. Lower values create a harder edge; higher values produce a smoother transition.

Scene Dim

Type

Slider

Range

0 -- 100

Default

50

Keyframeable

Yes

Darkens non-paint areas before the paint is composited back in. At 0, the scene is left untouched. At 100, non-paint areas are driven fully to black.

Scene Desat

Type

Slider

Range

0 -- 100

Default

0

Keyframeable

Yes

Desaturates non-paint areas. At 100, the scene becomes grayscale while the paint retains its color.

Paint Tint

Type

Color picker (eyedropper)

Default

White (255, 255, 255) -- no tint

Keyframeable

Yes

Applies a color tint to the displayed paint. White means no tinting. Pick any color to shift the paint hue for stylistic effects or to match a grade.

Quick Reference

Parameter

Type

Default

Notes

About Virtual.ink

Button

--

Opens the about and license dialog

Threshold

Slider

200

Core accumulation cutoff

Decay Mode

Popup

Linear

Core accumulation mode

Paint Duration (ms)

Slider

0

Core accumulation timing

Fade Duration (ms)

Slider

3,000

Core accumulation timing

Paint Opacity (%)

Slider

100

Display-only

Blend Mode

Popup

Screen

Display-only

Reset Paint

Checkbox

Off

Clears accumulation on that frame

Light Separation

Checkbox

Off

Enables separation controls

Sep Strength

Slider

50

Active when Light Separation is on

Sep Softness

Slider

20

Active when Light Separation is on

Scene Dim

Slider

50

Active when Light Separation is on

Scene Desat

Slider

0

Active when Light Separation is on

Paint Tint

Color

White

White = no tint


How It Works

Paint Detection

Each frame, the plugin computes the luminance of every pixel:

L=0.299R+0.587G+0.114BL=0.299R+0.587G+0.114B

Pixels are only treated as paint when they are above Threshold and newly brighter than the previous frame. That motion gate prevents static bright objects from being continuously re-painted, keeping the effect focused on moving light sources.

Accumulation

Paint pixels are blended into a persistent internal buffer using a MAX operation. The buffer keeps the brightest value seen at each pixel position, while a per-pixel frame index tracks when each position was last painted.

Decay

Over time, accumulated paint brightness is reduced according to the selected Decay Mode:

  • LinearNatural, and Gentle are implemented as age-based modes. They compute the visible brightness from each pixel's paint time plus Paint Duration and Fade Duration.
  • If Paint Duration and Fade Duration are both 0, paint is permanent.

Compositing

The visible paint is optionally tinted, scaled by Paint Opacity, and composited with the original input frame using the selected Blend Mode. If Light Separation is enabled, scene pixels are dimmed and/or desaturated before the paint is blended back in.

Paint OpacityBlend ModeLight SeparationSep StrengthSep SoftnessScene DimScene Desat, and Paint Tint are display-side controls. Changing them does not clear the stored paint history.

Playback and Scrubbing

The accumulation buffer is still fundamentally forward-looking: frame N depends on the frames before it. Sequential playback and export are the authoritative paths.

  • Same-frame re-renders reuse the current accumulation without mutating it.
  • Small forward gaps are reconstructed automatically.
  • Larger timeline jumps and scrubbing may reconstruct from cached snapshots or show an approximate result, especially at higher resolutions where snapshot caching is limited.

This is why Sequence > Render and proxies are the best way to judge the final result in Premiere Pro.

What Resets the Paint History

The accumulation state is rebuilt when any of these core conditions change:

  • Threshold
  • Decay Mode
  • Paint Duration
  • Fade Duration
  • frame rate
  • the locked working resolution

After changing one of those core controls, replay or re-render from earlier in the shot.

Licensing

Without a valid Pro or Pulse license, the effect still renders, but the plugin composites a watermark over the output.

Tips

  • Always play, render, or export from the start of the shot when judging accumulation.
  • Re-render after changing Threshold, Decay Mode, Paint Duration, or Fade Duration because those controls rebuild the paint history.
  • Use Screen blend mode as a starting point for most footage.
  • Combine Scene Dim + Scene Desat with Light Separation when you want the paint to stand out from the plate.
  • Use Reset Paint at scene cuts or between separate performances inside one clip.
  • Use proxies for high-resolution footage if full-resolution previews are too heavy.
Powered by Beeboo · 260412.131046