Skip to content

Virtual.ink Develop Studio -- Plugin Guide

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

The Virtual.ink installer (v26.04.17 and later) automatically copies the plugin to the Adobe shared plug-ins folder when Adobe Creative Cloud is detected on the machine:

C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore\Virtual.ink\

The installer also places the plugin file in your Virtual.ink installation directory under plugin\VirtualInkDevelopStudio.aex as a manual-install fallback.

Manual installation

If the automatic step was skipped (e.g. Adobe was installed after Virtual.ink), copy the plugin yourself:

  1. Close Premiere Pro / After Effects if running.

  2. Copy plugin\VirtualInkDevelopStudio.aex from the Virtual.ink install directory to:

    C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore\Virtual.ink\
    

    Create the Virtual.ink subfolder if it does not exist.

  3. Launch Premiere Pro or After Effects.

Uninstallation

The Virtual.ink uninstaller removes the plugin from the Adobe folder automatically.

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 Linear, Natural, 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 Linear, Natural, 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.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:

  • Linear, Natural, 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 Opacity, Blend Mode, Light Separation, Sep Strength, Sep Softness, Scene Dim, Scene 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 · 260419.154929