NC Anima · Docs

Object Matte: comparison plan (not measured yet)

Status: untested. There is no After Effects 26.2+ comparison of Object Matte yet. Nothing on this page is a measurement. It lists what to compare once an After Effects reference session is available, so the first run can be repeated and scored without guesswork.

Anima side, as of #783: the Object Matte effect (ec.matte.objectmatte), the Object Matte tool in the Composition viewer, objectMatte.apply / .propagate / .freeze / .status, and segmentations kept in the disk cache. The point (and an optional box) is segmented by Roto Brush's engine: MobileSAM when it is installed (Settings ▸ Roto Brush, with the box as the model's box prompt), otherwise the classical graph cut. The result is tracked frame by frame with optical flow, and the model re-prompts each frame from the carried matte. Record which engine was active, because the two are separate cases.

Test clips

All original, generated or openly licensed; none of them goes into the repository.

  1. Synthetic disk: the moving textured disk over a textured background from crates/engine/src/tests_roto.rs (draw(center(f)), 320×240, 25 fps, 25 frames, radius 40 px, about 4 px a frame to the right). Export it as a PNG sequence. Its ground truth is analytic (gt(center(f))).
  2. Synthetic disk with a jump: the same disk with jumping(f) (it jumps at frame 8). This checks how each tool handles losing the object.
  3. Two objects: the disk plus a second still, differently coloured square that touches it on some frames, prompted once with a point only and once with a box around the disk. This checks the box prompt.
  4. Real footage: one openly licensed clip (CC0 or CC BY) with a person or object moving against clutter, at least 1080p and 5 s long. Record its URL, licence and SHA-256 next to the results, and keep the clip itself out of the repository.

Prompt and settings

Keep the After Effects mattes in gitignored plan/aftereffects/ref/object-matte/. Only an aggregate results file (like keyframe-ease.json) and the comparison script may be committed.

Metrics (per frame, then mean / worst)

Proposed pass bar (a maintainer decision, not yet agreed): mean IoU against After Effects ≥ 0.95 and worst ≥ 0.90 on clips 1 and 3, with MobileSAM. With the classical engine the numbers are reported but not gated.

Reproduce (to write)

The script does not exist yet. It should: generate the synthetic clips; run Anima headless (anima-cli run … objectMatte.apply … objectMatte.propagate {"wait":true}, then render the matte); drive After Effects through ExtendScript or AEsync to apply Object Matte with the same prompt and render its alpha; then compute the metrics above into a JSON results file.