# Line boil

Line boil — during a hold, text/outline contours wriggle slightly every 3 frames like a hand-redrawn frame, keeping a still image "alive" and breathing.

- Category: effects · Tags: shotcraft, remotion, effects, typography
- Spec: 1920×1080 @ 30 fps · 4.72s (16:9)
- License: Apache-2.0 · Tier: free
- JSON: https://gimgs.net/motion/line-boil.json
- Kind: remotion
- Source (TSX): https://gimgs.net/motion/line-boil/template.html
- Repo: https://github.com/Vincentwei1021/video-shotcraft
- Credits: video-shotcraft (Vincent Wei) — https://github.com/Vincentwei1021/video-shotcraft
- Page: https://gimgs.net/motion/line-boil.html

## Params

_No params._

Default params (base64url for `?p=`): `e30`

## Prompt

## When to use

For long holds on title cards/outlined elements (the go-to upgrade for a black-scene title card); a textural technique that piggybacks on another shot.

## Intention

The library's precedent demands "real stillness" once things settle, but a long title card freezing completely reads as "the film froze". This card offers a third state: **living stillness** — the outline gets "redrawn" every 3 frames, position and content completely unchanged, only the line edges breathing very slightly, a century-old convention of hand-drawn animation hold frames. The difference from a rejected drift technique: perceptibility — drift is an overall shift imperceptible to the eye, boiling is contour deformation with stepped jumps that are visible. In a paper-and-ink aesthetic, this is the direct source of "handmade feel".

## Duration & energy

- Duration: Parasitic — the boil segment lasts as long as its host's hold; it has no duration of its own
- Energy: Low (ambient-noise level)

## Shot recipe (original Chinese — timing, easing, parameter table, known pitfalls)

## 意图
库内 R 系判例要求落定后"真静止"，但长字卡（3s+ 的黑场字卡、片尾）
完全冻结会读作"片子卡了"。本卡给第三种状态：**活着的静止**——轮廓
每 3 帧被"重描"一次，位置内容全然不动，只有线条边缘在极轻微地呼吸，
手绘动画 hold 帧的百年惯例。与 noise-drift（被否决）的区别正是可感性：
漂移是整体 1–3px 位移（肉眼读不出），沸腾是轮廓形变+阶梯跳变（每次
换 seed 都是一次可见的"重描"）。纸墨审美里这是"手工感"的直接来源。

## 动效核心
- SVG filter：feTurbulence(fractalNoise, baseFrequency 0.015,
  numOctaves 2) + feDisplacementMap **scale=8**（原案 3–6 不可感，
  已加码）作用于文字/描边层
- **seed = Math.floor(f/3) 阶梯换**——每 3 帧跳一次新形变，
  10fps 的手翻书质感；逐帧换 seed 读作电噪不是手绘
- **摘罩命门**（feTurbulence 判例）：沸腾段之外 filter 与 SVG defs
  根本不渲染（条件挂载），不是 opacity 到 0——否则永不真静止
- 结构靠对比：demo 用 静止 35f → 沸腾 70f → 摘罩静止 35f 三段
  自证可感；实战沸腾段直接铺满宿主 hold

## 参数表
| 参数 | 典型值 | 调节手感 |
|------|--------|----------|
| displacement scale | 8（大字标题）；小字/细线 5–6 | >12 读作故障扭曲；<4 不可感 |
| seed 节拍 | floor(f/3)，即每 3 帧重描 | /2 太贼、/4 以上读作卡顿跳帧 |
| baseFrequency | 0.015（形变尺度约字高级） | 0.05+ 变成毛边噪点，不是"重描" |
| 适用对象 | 大标题、描边框、手绘圈注 | 实心小元素（图标/头像）沸腾读作模糊 |
| 与 R 系关系 | 沸腾段视作合法 hold；宿主镜头收尾若需绝对静止则提前 ≥15f 摘罩 | 摘罩瞬间轮廓归位本身就是一次收束 |

## 已知坑
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿，
  首次实战须以真实素材回验
- 全片同时沸腾的元素 ≤1 组——标题在沸腾、卡片框也在沸腾，观众
  找不到该看哪（P4）
- 与 speed-lines/集中线的"沸腾"（impact-feedback C 式每 2 帧换形态）
  同族不同职：那是冲击帧的高能沸腾，这是 hold 帧的底噪沸腾，能量
  档位差两级，别互换参数
- SVG filter 对大面积层有渲染开销；1920 全幅文字层可接受，整页
  截图套 boil 渲染时间翻倍且语义不对（页面不是手绘物）
- paper-title-card/黑场字卡（shot-transitions D 式）是本卡首选宿主，
  组合时字卡的打字机/压印入场完成后再起沸腾

## 参考实现
demos/effects/line-boil/
（LineBoil.tsx）

## Reference implementation (Remotion)

- demos/effects/line-boil/LineBoil.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/effects/line-boil/LineBoil.tsx

The component imports shared fixtures from `demos/_fixtures` and helpers from `assets/lib` in the repo; SKILL.md there documents the render workflow.


## Flow

1. **Read the recipe**
   Prompt = when to use, intention, parameter table with typical values and how each one feels, known pitfalls. Treat values as calibrated starting points.
2. **Get the code** — tool: git
   `git clone https://github.com/Vincentwei1021/video-shotcraft && cd video-shotcraft && npm install`
3. **Register + render** — tool: remotion
   `npx remotion render <CompositionId> out.mp4   # component: demos/effects/line-boil/LineBoil.tsx`
4. **Or re-implement**
   Port the timing/easing from the recipe to HTML + WAAPI (gimgs motion contract) or any engine; keep the same segment windows and easing.

## Render

Clone https://github.com/Vincentwei1021/video-shotcraft (npm install). The component lives under demos/{category}/{name}/ and imports shared fixtures from demos/_fixtures and helpers from assets/lib. Copy it (with those imports) into a Remotion project, register a <Composition> with the template's width/height/fps/duration in Root.tsx, then `npx remotion render <CompositionId> out.mp4`. SKILL.md in the repo documents the full Claude Code / Codex workflow. The prompt below is the shot recipe (timing, easing, parameter table, pitfalls) — enough to re-implement the shot in HTML/WAAPI or another engine if you prefer.

## Contract

React/Remotion composition (TSX) from the open-source video-shotcraft library (Apache-2.0). It is not a browser-playable template: clone the repo, register the component in a Remotion project and render with `npx remotion render`. The recipe (prompt) describes timing, easing and parameters so you can also re-implement the shot in any engine.
