Ripples scatter a short light message, then settle until the projected letters become readable. A rippled height field shifts rays according to its gradients. The renderer accumulates their density through a transmissive letter mask, producing the changing light pattern. Reuse your own material, or quote missing images and optional sound through PopNow before generation.

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

The skill is free. Optional AI images, video and sound are quoted for your approval before generation. API-key calls use your separate API balance in USD; generation through ChatGPT or Claude connected via OAuth/MCP uses your website credits.

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

What you get

  1. An editable 6–12 second 720p MP4; the included example lasts 8 seconds and is silent.

  2. A rippled height field shifts rays according to its gradients. The renderer accumulates their density through a transmissive letter mask, producing the changing light pattern.

  3. A six-frame contact sheet and render receipt with actual duration and hashes.

Good for

  • Original creative shorts and visual motion studies
  • Testing a reusable animation mechanism with your own inputs

Not for

  • The ray projection is a paraxial artistic approximation. It does not calculate a manufacturable glass surface or guarantee a real optical device will produce the message.
  • Automatic feature-length films or unreviewed asset-rights claims

How to use it

You say

  • Use the PopNow skill "Glass Caustic Message" (glass-caustic-messenger) for this: Render the supplied 8-second example, then change one control to make a second version. Quote any missing assets before generating.

Then try

  • Use my own inputs and keep the project editable.

  • Show the changed frames and explain which setting caused the difference.

What to have ready

  • One local pool-floor or stone image; a message of 2–8 uppercase ASCII letters, digits or spaces; ripple strength and warm light color.
  • message, ripple_strength (0.3–1.8), wave_speed (0.5–2), light_color (#rrggbb)
  • Python 3, Pillow, NumPy, FFmpeg and ffprobe

Similar skills

View all →

Ratings

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

Rate this skill

Questions

Are the letters added after the effect?

The letters are the transmission mask for the ray field. Their light is displaced and accumulated with the same ripples as the rest of the projection.

Can it focus any image through real glass?

No. The included model is a stylized small-angle approximation with a short text mask, not an inverse-optics design tool.

What does the local renderer check?

It checks input ranges, required images, frame size and encoded duration. The self-check also tests a changed input and a rejected invalid case. You still need to watch the result.