Releases: CagKebabi/TraceAR
Releases · CagKebabi/TraceAR
Release list
v0.2.1 — exclusive mode & steadier multi-target cadence
Steadiness release driven by the first production integration (unicoar.com).
Added
maxTrackedconfig option — cap on simultaneously tracked targets.maxTracked: 1gives an exclusive session (MindAR'smaxTrack: 1equivalent): once a target is acquired, all other detection pauses until it is lost — exactly one anchor active at a time, tracked frames cost pure tracking (~2.5 ms), no scan spikes.
Fixed
- Trembling during camera motion in multi-target sessions. Cold-marker scans every 3rd frame made the measurement cadence uneven (~3 ms tracking frames alternating with ~25 ms scan frames), which read as content trembling while the camera moved. Cold scans now back off to every 10th frame while anything is tracked; the acquire phase (nothing tracked) scans every frame — first detection is faster than 0.2.0. Steady 10-target cost: 13 → 6 ms/frame average (native).
Full changelog: https://github.com/CagKebabi/TraceAR/blob/main/CHANGELOG.md
v0.2.0 — multi-target sessions
Multi-target release: a session with many markers (an album of photos, a deck of cards) now costs roughly the same per frame as a session with one.
Added
- Multi-marker pack files. One
.tracearfile can hold any number of markers. Packs are a pure container: each entry is an unmodified single-marker file, so bundling is byte concatenation — adding or removing one target never recompiles the others. Packs expand in place anywhere a target is accepted.- CLI:
npx tracear compile a.png b.png c.png -o album.tracearandnpx tracear pack a.tracear b.tracear -o album.tracear - Browser:
packMarkers(markers)in@tracear/sdk/compiler
- CLI:
Changed
- Detection cost is now flat in the number of targets. Frame features (pyramid + FAST + BRIEF) are extracted once per frame and shared by every marker's detection; lost markers are scheduled under a per-frame budget — recently-lost targets keep same-frame priority (re-acquire feel unchanged), long-idle targets take amortized round-robin turns. Measured with 10 targets, 1 visible (native, 640×480): 272 → 13 ms per frame average. Sessions with 1–2 targets behave exactly as before.
targetWidthsMetersaligns with expanded marker order (identical to before unless you use packs).detectImagewith many targets shares one feature extraction.
Docs: https://cagkebabi.github.io/TraceAR/docs/ · Full changelog: https://github.com/CagKebabi/TraceAR/blob/main/CHANGELOG.md
v0.1.2 — first public release
First public release of @tracear/sdk — high-performance, jitter-free image tracking for the mobile web. npm i @tracear/sdk
Highlights
- Rust→WASM(+SIMD) engine: detection acquires the target (FAST + rotated BRIEF + RANSAC), then sub-pixel inverse-compositional patch tracking takes over — coarse-to-fine across a half-resolution level so fast handheld motion and motion blur survive.
- Measured side by side with MindAR — the pioneering project in this space, built on different engineering trade-offs. Same phone, same marker, identical metric, reproducible on your own device with
apps/compare: median jitter 1.90 px vs 5.47 px, p90 5.8 vs 8.3, CV ~2.5 ms/frame while tracking, marker compile 0.1 s / 169 KB vs 1.4 s / 418 KB. - 6DoF poses via homography decomposition + LM refinement with a rotation-ambiguity prior; online focal self-calibration (no user calibration step); One-Euro-on-SE(3) filtering with speed- and error-adaptive raw/filtered rendering blend: frozen when still, glued when moving, fast recovery after deviation.
- Efficient frame paths: WebCodecs VideoFrame luma-plane ingestion where available, GPU ImageBitmap + zero-allocation WebGL readback otherwise, canvas fallback everywhere else.
- three.js adapter (
@tracear/sdk/three), browser marker compiler (@tracear/sdk/compiler) and a CLI (npx tracear compile poster.png). - ~95 KB gzipped including the WASM core. MIT.
Notes for 0.1.0 → 0.1.2
- 0.1.1 fixed a packaging bug where a
developmentexports condition pointed at files not shipped in the tarball, breaking consumer dev servers. - 0.1.2 added the error-adaptive catch-up, the WebCodecs/WebGL frame paths (with per-failure fallbacks and a sensor-orientation guard), and long-run Safari stability (allocation-free readback).
Vite users
// vite.config.ts
export default defineConfig({
optimizeDeps: { exclude: ["@tracear/sdk"] },
});v0.1.1 — packaging fix
Packaging fix release.
- Removed the
developmentexports condition that pointed at TypeScript sources excluded from the published tarball — it broke dependency scanning in every consumer's Vite dev server. - Documented the required
optimizeDeps: { exclude: ["@tracear/sdk"] }for Vite (dev-server prebundling breaks the worker/WASM asset URLs; production builds are unaffected).