Measure motion in your video and use its local velocity to carry painted strokes through the scene. The source MP4 is decoded into local frames. A coarse-to-fine Lucas-Kanade calculation estimates a separate velocity at each image location, then transports a pigment canvas and stroke positions with that field. The source is retimed once across the output duration. Reuse supplied assets or quote new media through PopNow.

Uses PopNow for
Video · Music & voice
Needs
Python 3 · FFmpeg

Generation is optional when you have suitable input material.

v1.0.0 · Updated Oct 25, 2026 · 3.0 MB · Use it for personal and client work; please don't resell or share the package.

What you get

  1. An editable 8-second 720p sample and local MP4 renderer, silent.

  2. Decoding, measured local flow, temporal pigment transport and painted export are packaged together. The strokes respond to local object motion instead of following one global pan.

  3. A six-frame contact sheet, render receipt and input self-check.

Good for

  • Painterly motion studies from owned footage
  • Turning small textured object movement into visible stroke motion

Not for

  • The local brightness-based flow can fail on cuts, occlusion, low texture, lighting changes or fast motion. It is not a learned tracker, segmentation model or guaranteed object-consistency system.

How it works

Includes a local renderer

  1. Choose the material

    Provide a local 1–15 second MP4 of at most 80 MiB. A fixed camera and textured moving subject work best. The supplied five-second original fish clip is retimed across the eight-second example.

  2. Shape the motion

    Edit the documented project controls, then validate the exact settings. Source_video replaces the local footage used for motion estimation.

  3. Render and review

    Export locally to MP4, inspect the contact sheet and watch the whole film. Watch moving edges and occluded areas for trails or incorrect drift. Compare the painted motion with the source rather than assuming every flow vector is correct.

How the workflow runs

How Optical Flow Paint Film works

The source MP4 is decoded into local frames. A coarse-to-fine Lucas-Kanade calculation estimates a separate velocity at each image location, then transports a pigment canvas and stroke positions with that field. The source is retimed once across the output duration.

What's inside the skill

What you can change

  • Source_video replaces the local footage used for motion estimation.
  • Pigment retention from 0.65 to 0.98 changes the persistence of earlier color.
  • Brush strength from 0.2 to 1 changes stroke length.
  • The seed changes the initial stroke positions.

What to review before delivery

  • The local self-check compares three frame samples after a meaningful input change and rejects its documented invalid case.
  • Output protection rejects overlap with input files and preserves existing sidecars unless overwrite is explicit.
  • Watch moving edges and occluded areas for trails or incorrect drift. Compare the painted motion with the source rather than assuming every flow vector is correct. This final visual review is manual.

See the package files

These are selected working files from this edition, with their actual role. The complete download also contains instructions and applicable license notices.

  • The task-specific motion mechanism and supported inputs.

    scripts/scene.py
  • Protected MP4 export, contact sheet and hash receipt.

    scripts/runtime.py
  • Editable settings used by the supplied sample.

    examples/project.json
  • Actual changed-frame, invalid-input and output-protection checks.

    scripts/selftest.py
  • Input ranges, material placement and honest limits.

    references/inputs.md
  • The local multiscale Lucas-Kanade solver and window sums.

    scripts/flow.py

Why use this skill

Start with this package

Decoding, measured local flow, temporal pigment transport and painted export are packaged together. The strokes respond to local object motion instead of following one global pan.

What PopNow adds

Use PopNow for the missing Video, Music & voice in this workflow. Keep adequate material you already own, then bring new assets back into the editing and assembly steps described here.

Compare the options

A prompt, your own skill, or this workflow?

Start with a prompt

Your agent can create from a plain request. The brief, visual rules, asset choices, output format and review process still need to be established for that project.

Write your own skill

You choose and maintain the reusable instructions, defaults, file structure and checks. This is useful when your process needs different rules or integrations.

A workflow created for PopNow

This workflow was built for PopNow. Its source files, included dependencies and applicable notices are part of the package; the scope described below belongs to this edition.

Guide reviewed Oct 25, 2026

What will this cost?

Owned footage is decoded and painted locally. If no suitable clip exists, quote an exact short PopNow video request before generating it; optional new audio is separate. The supplied source can be reused without another paid run.

Generation is optional when you have suitable input material. Free skill. New media is quoted before it runs.

The skill package

Free to install under your account's download allowance. The package license covers your own and client work; redistribution is excluded.

Existing assets and local work

Reusing suitable assets, editing files and running local assembly do not call a PopNow generation model. Your computer and any required runtime still do the work.

New AI images, clips or sound

Quoted for the actual model, inputs, count, duration and resolution. Extra alternatives, revisions or optional enhancement passes can add generation requests.

Your agent and hosting

Any subscription, hosted computer, deployment or other provider fee belongs to that service. Installing this skill does not include those services.

Check the cost of your version first

Your assistant can inspect the available models and quote the exact request first. You choose which optional passes to include and approve spending before generation.

Ask your assistant

  • Use the PopNow skill "Optical Flow Paint Film" for my project. List the inputs you can reuse, quote only the missing media, show the quoted total and flag any unpriced steps. Separate optional enhancements, and wait for my approval before starting anything paid.

How PopNow billing works

Connections using a PopNow API key, including API-key MCP connections, spend from the separate API balance in USD. A ChatGPT or Claude connection authorized through OAuth spends website credits. These balances are separate; the quote shown by your connection is the approval basis.

Download allowances and current account conditions apply. A free package does not mean unlimited free generation.

How to use it

You say

  • Use the PopNow skill "Optical Flow Paint Film" (optical-flow-paint-film) for this: Render the supplied 8-second example. Make a second version with brush_strength set to 1. Show the changed motion and quote any missing media before generation.

Then try

  • Show how the changed setting affects the actual motion.

  • Keep my adequate source material and prepare an optional soundtrack quote.

What to have ready

  • Provide a local 1–15 second MP4 of at most 80 MiB. A fixed camera and textured moving subject work best. The supplied five-second original fish clip is retimed across the eight-second example.
  • Python 3, Pillow, NumPy, FFmpeg and ffprobe
  • The project controls listed in the input contract

Similar skills

View all →

Ratings

No ratings yet. Installed it? Be the first to rate it.

Rate this skill

Questions

Does it measure motion or apply a preset pan?

It estimates local velocity from differences between decoded frames using a multiscale Lucas-Kanade calculation. Different image regions can move in different directions.

Why are some edges smeared?

Occlusion, low texture, large motion and lighting changes violate the estimator's assumptions. Reduce retention or choose a steadier, more textured source and inspect the result.

How does the five-second example become eight seconds?

The source frames are spread once across the output duration. It is a retimed clip, not a newly generated eight-second action or a claimed seamless loop.

What is already packaged in Optical Flow Paint Film?

The task-specific motion mechanism and supported inputs. Protected MP4 export, contact sheet and hash receipt. Editable settings used by the supplied sample. Actual changed-frame, invalid-input and output-protection checks. Input ranges, material placement and honest limits. The local multiscale Lucas-Kanade solver and window sums.

Which parts of Optical Flow Paint Film can add a charge?

Owned footage is decoded and painted locally. If no suitable clip exists, quote an exact short PopNow video request before generating it; optional new audio is separate. The supplied source can be reused without another paid run. Connections using a PopNow API key, including API-key MCP connections, spend from the separate API balance in USD. A ChatGPT or Claude connection authorized through OAuth spends website credits. These balances are separate; the quote shown by your connection is the approval basis.

How does Optical Flow Paint Film differ from writing a prompt or my own skill?

Decoding, measured local flow, temporal pigment transport and painted export are packaged together. The strokes respond to local object motion instead of following one global pan.