TL;DR — MotionPrint™ is Thirdrez's "Shazam for animations." We embed a privacy-safe, invisible watermark into
GLB/GLTF/BVHand expose a public verifier at/motionprint/verify. In SaaS, we add fingerprint search to find derivatives even after retargeting, resampling, or light edits. Free during beta.
Why motion provenance matters now
Text-to-motion and LoRA made it trivial to generate clips. What isn't trivial is proving authorship and verifying license origin across pipelines (UE5, Unity, Roblox, Second Life). MotionPrint brings trust without friction—right where creators work.
What ships in the public beta
- Invisible watermark v1
- GLTF/GLB: signed payload in
extras - BVH: signed header block
- Ed25519 signatures; payload includes
{ creatorId, licenseId, issuedAt, method }.
- GLTF/GLB: signed payload in
- Public Verify: drag & drop at
/motionprint/verify, returns a Verified Motion badge and JSON. - Marketplace badges: verified listings show a green check (server-side verify on upload).
Default privacy: files are processed in memory and not stored. Optional 24-hour retention to generate a signed PDF/JSON report.
The fingerprint pipeline (SaaS)
Watermark proves authorship when present. Fingerprinting helps when it's missing:
- Normalize the rig → canonical neutral rig from Bento/UE/Unity/Roblox.
- Pose encoding → per-frame joint features (quats/Euler), velocities, foot-lock indicators.
- Temporal compaction → DCT / windowed stats → fixed 256-D embedding.
- ANN index (Postgres pgvector) → fast candidate retrieval.
- Re-ranking with DTW → dynamic time warping to survive re-timing/cropping.
- Decision → similarity score + overlap window → match sets and optional claims.
Our DTW-style alignment and features are inspired by classic content-based mocap retrieval (e.g., Müller, Röder, Clausen, SIGGRAPH 2005), adapted to modern ANN indexes and multi-rig pipelines.
API surface (beta)
import { verifyAnimation } from '@thirdrez/motionprint';
const result = await verifyAnimation(file);
/*
{
ok: true,
wmHash: "…",
watermark: { creatorId, licenseId, issuedAt, method: 'extras-v1' },
fileMeta: { name, size, type: 'gltf' | 'glb' | 'bvh' }
}
*/