Skip to content

Integrate webarkit-testing dev → main#50

Merged
kalwalt merged 35 commits into
mainfrom
dev
Jun 21, 2026
Merged

Integrate webarkit-testing dev → main#50
kalwalt merged 35 commits into
mainfrom
dev

Conversation

@kalwalt

@kalwalt kalwalt commented Jun 21, 2026

Copy link
Copy Markdown
Member

Integration of dev into main (35 commits). Clean fast-forwardmain has no commits dev lacks, and merge-tree reports zero conflicts.

This is the superproject side of the WebARKit improvements landed this cycle, each paired with a WebARKitLib submodule bump + rebuilt build//dist/.

What's included

Examples (#30, #36)

  • three.js Teblid static-image + live-webcam AR examples, an examples index, and a unified feature-tracker picker; legacy/under-review per-detector examples removed.

Pose / projection / handedness (#30, #35, #42, #55)

  • Correct static-image localization/pose; CV→GL alignment findings documented; getPoseMatrixCV/getPoseMatrixGL rename + zero-matrix fix wired through the glue/controller.

Tracking robustness & perf (#44, #46, #38)

  • Detection-side pyramid downsampling (part A) with the HD static demo image, skip-detection-while-tracking (part B), tracking-loss handling, and opt-in setOriginCentered.

Docs & housekeeping (#50, #51)

  • docs/audit-dead-code-issue50.md (dead-code inventory + decisions); README rewrite + CONTRIBUTING.md (Conventional Commits) + version 0.8.0.
  • Submodule now tracks WebARKitLib master (ce5c280, post dev→master integration).
  • Removed stale gh-pages leftovers from docs/ (live demos are hosted in webarkit/webarkit.github.io, not here).

Notes

  • Since it's fast-forwardable, you can merge as a merge commit (marks the integration point) or fast-forward — your preference.
  • dist//build/ reflect WebARKitLib master at v0.8.0; static + webcam examples verified tracking.

🤖 Generated with Claude Code

kalwalt and others added 30 commits May 29, 2026 18:16
Adds a static-image AR example that feeds a fixed JPEG into the Teblid
tracker instead of a webcam stream, enabling testing without camera access.

- threejs_teblid_static_image_ES6_example.html: hidden <img> input, no initCamera
- threejs_static_image_worker_ES6.js: full-resolution RGBA processing
- data/pinball-demo.jpg: test image containing the marker

Fixes needed to make tracking work (worker_threejs.js left unchanged):
- decode the marker JPEG to RGBA pixels via a 2D canvas (initTrackerGray does
  not decode JPEG; raw file bytes produced a garbage reference marker)
- process the frame at full resolution so it matches the tracker's frame buffer
- send a blank warmup frame before the real image to avoid a first-frame
  perspectiveTransform crash in the tracker

The marker tracks successfully; the 3D sphere is not yet visible due to a
pre-existing pose-convention issue tracked separately in #31.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Static-image example now reads `matrixGL_RH` (the GL right-handed modelview
the library computes after the CV->GL handedness flip) instead of `pose`
(raw OpenCV camera pose), so the tracked object sits in front of the GL
camera and renders on the marker instead of being frustum-clipped behind it.

Library side (pulled in via the submodule bump to fix/pose-cv-to-gl):
- WebARKitPattern::updateTrackable() no longer applies its partial
  rotation-column negation; `trans` / getPoseMatrix2() now carry the raw
  OpenCV pose, and downstream conversions (arglCameraViewRHf in JS for
  matrixGL_RH; WebARKitManager::getGLViewMatrix in C++) become clean
  diag(1, -1, -1, 1) * pose CV->GL conversions.

Example side:
- examples/worker_threejs.js: forward event.data.matrixGL_RH in the `found`
  message (additive; existing `pose` consumers unaffected).
- examples/threejs_static_image_worker_ES6.js: parse msg.matrixGL_RH into
  the root matrix; wrap AR content in a `markerFrame` Object3D rotated 180
  deg around Y so +Z faces the camera (corrects the marker's
  image-coordinate convention to a natural three.js placement).
- examples/threejs_teblid_static_image_ES6_example.html: display the
  static <img> full-bleed under the canvas overlay (matches the webcam
  examples' #video layout) so the marker is visible behind the 3D content.

Also rebuild dist/WebARKit.js and dist/* / build/* artifacts from the new
WASM, and bump the npm tooling to current minor/patch (Babel 7.29.7,
webpack 5.107.2, babel-loader 10.1.1, rimraf 6.1.3) plus webpack-cli to
7.0.3 (major) for build cleanliness.

A remaining projection X-mirror in the library leaves the AR content's
axes visibly tilted relative to the marker edges; this is tracked
separately in webarkit/WebARKitLib#35 and cannot be fully corrected from
the example side.

Refs: #31, webarkit/WebARKitLib#34

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
webarkit/WebARKitLib#36 was squash-merged into upstream/dev as 3429eb3
(same content as the prior dab5073 SHA, different hash due to the squash).
Re-pin the submodule pointer to the canonical commit so a fresh `git
submodule update --init` against the .gitmodules URL (canonical
webarkit/WebARKitLib) resolves successfully.

Refs: #31, webarkit/WebARKitLib#34

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Investigation notes, decision log, and multi-agent design review for the
AR overlay axis/position alignment work. Documents the ArtoolkitX pose
convention comparison and the (parked) X-mirror localization anomaly:
the tracker localizes the marker mirrored within its own correctly-oriented
frame, with the projection/pose/feed-orientation hypotheses each eliminated.

Companion to the full findings posted on webarkit/WebARKitLib#35.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bumps the WebARKitLib submodule to the canonical dev SHA after
webarkit/WebARKitLib#38 (squash) merged the first-frame perspectiveTransform
crash fix, and commits the rebuilt dist/WebARKit.js and build/ WASM artifacts.

The static Teblid example no longer relies on the warmup frame to avoid the
frame-0 crash (the library now guards it); the warmup is retained only to
smooth the static-image detection->tracking handoff.

Refs: webarkit/WebARKitLib#37, #30

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds to the WebARKitLib#35 design notes:
- Root cause confirmed: GrayScale flips the image vertically, so teblid_example
  feeds bottom-up while the canvas static example feeds top-down; the pose chain
  was tuned for the bottom-up convention.
- Working example-side fix: modelview Y-row + Z-column negation in found()
  (a proper rotation) for anchoring, plus a markerFrame 180-deg-about-X for the
  marker image convention. Library folding still undecided.
- Next investigation: replace the synthetic 70-deg-FOV camera with real
  camera_para.dat (ARParamLT) loading. The loaders are already vendored
  (arParamLoadFromBuffer, arParamChangeSize, arParamLTCreate); proposed a
  WebARKitCamera::loadCameraParamFromBuffer + bindings + optional
  arglCameraFrustumRHf projection.

Refs: webarkit/WebARKitLib#35

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Example-side correction so the static (canvas-2D, top-down) feed renders
correctly without GrayScale, on a normal right-side-up display:

- found(): negate the modelview Y row + Z column (a proper rotation, det +1)
  to correct the anchoring for top-down input — the library's pose is tuned
  for GrayScale's bottom-up convention (see docs + WebARKitLib#35).
- markerFrame child rotated 180 deg about X: marker image convention
  (+Y toward the bottom of the reference image, +Z into the marker).
- Standard projection, unflipped feed.

WIP / still to finalize tomorrow:
- Debug stand-ins present: a cube + AxesHelper on markerFrame; the real
  `sphere` mesh is currently unused. Swap back to the intended content and
  drop the debug axes before this is "done".
- Decision pending: keep this as an example-side correction or fold the
  equivalent into the library (regression canary: teblid_example).

Refs: webarkit/WebARKitLib#35

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pick up the WebARKitLib fixes and rebuild the WASM/dist artifacts: scale-factor double-application (webarkit/WebARKitLib#43), projection X-sign and D*R*D marker-frame handedness (webarkit/WebARKitLib#35, webarkit/WebARKitLib#42). The static-image example now tracks the pinball marker with content correctly localized on the marker and right-side-up (X=right, Y=up, Z=toward viewer), no example-side pose correction.

- bump emscripten/WebARKitLib submodule (9eb49d9, 3a9c58a)

- rebuild build/webarkit_ES6_wasm.js, .simd.js, dist/WebARKit.js

- examples/threejs_static_image_worker_ES6.js: drop debug scaffolding; attach cube + axes directly to the tracked root

Refs #30

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rewrite the design doc's resolution: the static-image AR bug was three orthogonal issues, headlined by the keypoint scale-factor double-application (webarkit/WebARKitLib#43), plus the projection X-sign (#35) and D*R*D marker-frame handedness (#42). Documents the diagnostic method (MATCH-centroid log, getCorners debug overlay, pose-log NDC math) and the final verified state. Demotes the superseded hypotheses (projection-only #35 plan, GrayScale Y-flip theory, example-side correction) to a clearly-marked history section.

Refs #30, webarkit/WebARKitLib#35, webarkit/WebARKitLib#42, webarkit/WebARKitLib#43

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pick up webarkit/WebARKitLib refactor fb78f85 (remove vestigial downsample/scale machinery; no behavior change) and rebuild build/ + dist/.

Refs #30, webarkit/WebARKitLib#43, webarkit/WebARKitLib#44

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
webarkit/WebARKitLib#45 merged into dev (rebased to 1021616, f448ef3, c1ae096). Re-point the submodule from the fork branch commit to the canonical dev tip. Source is identical, so build/ and dist/ are unchanged.

Refs #30, webarkit/WebARKitLib#45

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New live-camera AR example using the Teblid tracker, built on the static example's conventions (consume matrixGL_RH directly, projection as-is, no pose correction) + a continuous bufferCopy main<->worker ping-pong loop + a getUserMedia feed. RGBA end-to-end (tracker converts internally). Cube + axes anchored at the marker origin, hidden when not found; on-screen Marker-tracked/Searching status (console logging kept).

- examples/worker_teblid_webcam_threejs.js (dedicated bufferCopy worker, emits matrixGL_RH) - examples/threejs_teblid_webcam_worker_ES6.js (start() module / live loop) - examples/threejs_teblid_webcam_ES6_example.html (page + camera bootstrap) - examples/index.html (grouped landing page) - docs/design-webcam-teblid-example.md (design + decision log)

No existing example modified or removed. No library changes / no rebuild. Known limitation (not this PR): tracking is not declared lost when the marker leaves frame -- see webarkit/WebARKitLib#46.

Refs #36

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add an in-code comment by the tracking-status logic explaining that found/tracked reflects the library's isValid(), which does not reliably clear when the marker leaves frame (stale lock). Points readers to webarkit/WebARKitLib#46.

Refs #36, webarkit/WebARKitLib#46

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pick up the tracking-loss fix (webarkit/WebARKitLib#47, #46): the tracker now declares 'not found' when the marker leaves the frame instead of staying stuck on a stale pose. Rebuild build/ + dist/ and bump the submodule. Adds the design doc.

Verified with the webcam Teblid example: removing the marker hides the AR content and shows 'Searching...'; no flicker while the marker is held.

Refs #36, webarkit/WebARKitLib#46, webarkit/WebARKitLib#47

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
webarkit/WebARKitLib#47 merged into dev (rebased to 39183f0). Re-point the submodule from the fork-branch commit to the canonical dev tip; source is identical, build/ and dist/ unchanged.

Refs #36, webarkit/WebARKitLib#46, webarkit/WebARKitLib#47

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Expose the library's new setOriginCentered option to JS and use it in the examples so AR content anchors at the marker CENTRE instead of the reference top-left corner. Opt-in; default off (ArtoolkitX parity).

- emscripten/WebARKitJS.cpp/.h + bindings.cpp: bind setOriginCentered - src/WebARKitController.js: setOriginCentered(centered) - examples/worker_threejs.js + worker_teblid_webcam_threejs.js: call setOriginCentered(true) after init - rebuild build/ + dist/, bump WebARKitLib submodule (fe588e5) - docs/design-center-origin-option.md: design + decision log + ArtoolkitX investigation

Verified on the static + webcam examples: true -> content centred; false/default -> corner (unchanged). Depends on webarkit/WebARKitLib#49.

Closes #38

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
webarkit/WebARKitLib#49 merged into dev (rebased to 15dc93f). Re-point the submodule from the fork-branch commit to the canonical dev tip; source identical, build/ and dist/ unchanged.

Refs #38, webarkit/WebARKitLib#49

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… examples

Consolidate teblid/akaze/orb/freak_example.html (which differed only by the hard-coded string in setTrackerType()) into a single feature_trackers_example.html with a <select> picker. The choice is persisted in the URL query string (?tracker=akaze) so it survives the reload that re-initialises the worker; getTrackerFromUrl() validates against a SUPPORTED_TRACKERS allow-list and falls back to Teblid. worker_setup.js is left untouched -- the new page just provides setTrackerType() that reads the URL param.

Remove the four originals and the six under-review examples (teblid_example_4_threejs, teblid_advanced, threejs_speedy, threejs_bufferCopy, threejs_ES6, threejs_ES6_jsfeatNext) plus their dedicated helper/worker JS, the vendored js/jsfeatNext.js, and the speedy footprint (src/speedy-vision-mod/, the speedy webpack target, the package.json dep, the regenerated lockfile, and dist/SpeedyVisionSinkImageData.js). 22 files removed in examples/, plus the speedy module and build artifact.

Strictly scoped: every removed JS is referenced only by removed HTML; reference graph traced via <script src>, <link href>, and the new Worker() / importScripts() chains. The three remaining examples (feature_trackers, threejs_teblid_static_image, threejs_teblid_webcam) and their shared deps (worker_setup.js -> worker.js, worker_threejs.js, worker_teblid_webcam_threejs.js, initCamera.js, css/{style,nft-style}.css, js/stats.min.js, js/three.min.js, data/{pinball,pinball-demo,aframe-k}) are unaffected.

Closes #36

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…xample

Bump WebARKitLib to the part-A downsampling change (webarkit/WebARKitLib#52)
and rebuild build/ + dist/. Feature detection now runs on a pyrDown'd copy
of the live frame; matched keypoints are rescaled to full-frame coords.

- examples: point the Teblid static-image example at a marker-fills-frame
  1920x1440 demo image (pinball-demo-big.jpg) so HD downsampling is
  exercised (pyrLevel 1, scale 2.0) and the marker still acquires. The old
  pinball-demo.jpg (small marker in a large frame) falls below the detector
  threshold once downsampled.
- docs: add docs/design-detection-downsampling.md (understanding, ArtoolkitX
  reference, decision log, the four edits, testing, risks, non-goals).

Verified: Marker tracked, 1000 matches, content centered (#38) and
right-handed (#42/#46), no #43-style doubling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Re-point the submodule at the canonical webarkit/WebARKitLib dev tip after
#52 (detection-side pyramid downsampling, part A) merged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bump WebARKitLib to the part-B detection guard (webarkit/WebARKitLib#54)
and rebuild build/ + dist/. Feature detection is now skipped while optical
flow holds a lock, so the steady tracking state is much cheaper.

Measured on the Teblid webcam example (640x480): ~10-15 fps when detecting
every frame -> ~45 fps while tracking. Static example (1920x1440, pyrLevel 1)
still acquires and holds (no freeze).

- docs: add docs/design-detection-guard.md (understanding, ArtoolkitX
  reference, why the guard is on _isTracking rather than the marker counter,
  state walk-through, testing, risks, non-goals).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Re-point the submodule at the canonical webarkit/WebARKitLib dev tip after
#54 (skip detection while tracking, part B) merged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Manual cross-repo (C++ + JS/bindings) dead-code inventory for WebARKitLib#50,
audited at submodule 28ff065. Inventory only -- no code removed.

Key outcomes:
- All seven named suspects resolved; matrix getters classified as intentional
  public API (keep), with getPoseMatrix/getPoseMatrix2 -> getPoseMatrixCV/
  getPoseMatrixGL rename + the getPoseMatrix zero-matrix fix tracked in #55.
- Confirmed-dead internal/redundant code enumerated per file with a master
  cleanup decision table (KEEP-API / KEEP-live / REMOVE-redundant /
  REMOVE-internal / FIX / DECIDE).
- _trackVizActive / TrackerVisualization flagged DECIDE (unreachable, no setter).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Companion to webarkit/WebARKitLib#56. Bump the submodule to the rename+fix
commit and rebuild build/ + dist/.

- emscripten glue (bindings.cpp, WebARKitJS.{h,cpp}): rename the bound JS API
  getPoseMatrix -> getPoseMatrixCV, getPoseMatrix2 -> getPoseMatrixGL.
- src/WebARKitController.js: getPoseMatrix() -> getPoseMatrixGL() (the GL pose
  the render path uses), add getPoseMatrixCV(); process_raw calls
  getPoseMatrixGL().
- examples/worker_threejs.js: drop a stray debug log.

Verified: static + webcam examples track; getPoseMatrixCV() returns a real
4x4 pose (was zeros).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Re-point the submodule at the canonical webarkit/WebARKitLib dev tip after
#56 (getPoseMatrix zero-matrix fix + getPoseMatrixCV/GL rename) merged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…isions

Companion to webarkit/WebARKitLib#57. Bump the submodule to the cleanup
commits (remove update() stub, im_gray(), commented _trackables/getPoseMatrix3)
and rebuild build/ + dist/ (emscripten output is not byte-reproducible, so the
artifacts change even for a behavior-neutral source edit).

docs/audit-dead-code-issue50.md: add a "Decisions & status" section recording
what was removed in #57 and what was deliberately KEPT (OCVT-derived symbols for
ArtoolkitX parity, _trackVizActive scaffolding, and plausible WebARKit API /
accessors / config constants), plus the one pending item (computePose cluster).

Verified: static (pyrLevel 1) and webcam (pyrLevel 0) examples both track, 1000 matches.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Re-point the submodule at the canonical webarkit/WebARKitLib dev tip after
#57 (dead-code cleanup: update() stub, im_gray(), commented scaffolding) merged.
Build artifacts unchanged (source identical to the pre-merge branch SHA).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Companion to webarkit/WebARKitLib#58. Bump the submodule to the commit removing
the superseded computePose/invertPose/computeGLviewMatrix()-noarg, and rebuild
build/ + dist/ (emscripten output is not byte-reproducible).

docs/audit-dead-code-issue50.md: move the computePose cluster from "pending" to
"removed (#58)"; the #50 audit is now complete (everything else decided KEEP).

Verified: static example tracks (pyrLevel 1, 1000 matches); live pose path unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Re-point the submodule at the canonical webarkit/WebARKitLib dev tip after
#58 (Tier-3: remove superseded computePose/invertPose/computeGLviewMatrix())
merged. Completes the #50 dead-code cleanup.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
README: replace the stub with a developer-oriented guide -- what the superproject
is, repo layout, prerequisites, the two-step build flow (setup-docker ->
build-docker -> build-es6; OpenCV/opencv_contrib are vendored submodules, no
separate download), running the examples, the cross-repo submodule/PR-pair flow,
a design-docs index, and contributing. Version callout made version-agnostic.

Bump the submodule to webarkit/WebARKitLib#59 (README + version 0.8.0) and rebuild
build/ + dist/ -- the WASM now reports "Webarkit C++ lib v0.8.0".

Refs #51.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kalwalt and others added 5 commits June 21, 2026 11:16
Point at the WebARKitLib docs/readme-51 tip including the gtest version-assertion
fix (0.8.0). Test-only change upstream; build/dist unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… note

CONTRIBUTING.md: replace the emoji-commit guidance (Atom guide) with Conventional
Commits, add signed-commits, the rebuild step for C++/submodule changes, and the
cross-repo PR-pair flow. README: link to CONTRIBUTING.md + require Conventional Commits.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Re-point the submodule at the canonical dev tip after #59 (README rewrite +
version 0.8.0 + CONTRIBUTING.md) merged. Docs/version only upstream; build/dist
unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Point the submodule at WebARKitLib's master tip (the dev->master integration,
webarkit/WebARKitLib#60) instead of dev, and rebuild build/ + dist/. master now
contains the full OCVT tracker line (== dev) plus the vendored AR/NFT side.

Verified: rebuilt cleanly; static + webcam Teblid examples track (v0.8.0).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…it docs)

Remove the old gh-pages demo leftovers that no longer work: index.md (the landing
page) and the per-detector examples it linked (akaze/freak/orb/teblid_example.html),
worker.js, worker_setup.js, stats.min.js, and the css/ data/ dist/ asset dirs.
docs/ now holds only the design docs + the #50 audit. No remaining file references
the removed assets (checked).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@kalwalt kalwalt self-assigned this Jun 21, 2026
@kalwalt kalwalt added documentation Improvements or additions to documentation enhancement New feature or request javascript Emscripten / C / C++ all about Emscripten examples labels Jun 21, 2026
@kalwalt kalwalt moved this from To do to In progress in New markerless image tracking Jun 21, 2026
@kalwalt kalwalt added this to the Markerless tracking milestone Jun 21, 2026
@kalwalt kalwalt moved this from In progress to Review in progress in New markerless image tracking Jun 21, 2026
@kalwalt kalwalt moved this from Review in progress to Reviewer approved in New markerless image tracking Jun 21, 2026
@kalwalt kalwalt merged commit 54917eb into main Jun 21, 2026
@github-project-automation github-project-automation Bot moved this from Reviewer approved to Done in New markerless image tracking Jun 21, 2026
kalwalt added a commit that referenced this pull request Jun 21, 2026
Manual cross-repo (C++ + JS/bindings) dead-code inventory for WebARKitLib#50,
audited at submodule 28ff065. Inventory only -- no code removed.

Key outcomes:
- All seven named suspects resolved; matrix getters classified as intentional
  public API (keep), with getPoseMatrix/getPoseMatrix2 -> getPoseMatrixCV/
  getPoseMatrixGL rename + the getPoseMatrix zero-matrix fix tracked in #55.
- Confirmed-dead internal/redundant code enumerated per file with a master
  cleanup decision table (KEEP-API / KEEP-live / REMOVE-redundant /
  REMOVE-internal / FIX / DECIDE).
- _trackVizActive / TrackerVisualization flagged DECIDE (unreachable, no setter).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kalwalt added a commit that referenced this pull request Jun 21, 2026
…isions

Companion to webarkit/WebARKitLib#57. Bump the submodule to the cleanup
commits (remove update() stub, im_gray(), commented _trackables/getPoseMatrix3)
and rebuild build/ + dist/ (emscripten output is not byte-reproducible, so the
artifacts change even for a behavior-neutral source edit).

docs/audit-dead-code-issue50.md: add a "Decisions & status" section recording
what was removed in #57 and what was deliberately KEPT (OCVT-derived symbols for
ArtoolkitX parity, _trackVizActive scaffolding, and plausible WebARKit API /
accessors / config constants), plus the one pending item (computePose cluster).

Verified: static (pyrLevel 1) and webcam (pyrLevel 0) examples both track, 1000 matches.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kalwalt added a commit that referenced this pull request Jun 21, 2026
Companion to webarkit/WebARKitLib#58. Bump the submodule to the commit removing
the superseded computePose/invertPose/computeGLviewMatrix()-noarg, and rebuild
build/ + dist/ (emscripten output is not byte-reproducible).

docs/audit-dead-code-issue50.md: move the computePose cluster from "pending" to
"removed (#58)"; the #50 audit is now complete (everything else decided KEEP).

Verified: static example tracks (pyrLevel 1, 1000 matches); live pose path unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kalwalt added a commit that referenced this pull request Jun 21, 2026
Re-point the submodule at the canonical webarkit/WebARKitLib dev tip after
#58 (Tier-3: remove superseded computePose/invertPose/computeGLviewMatrix())
merged. Completes the #50 dead-code cleanup.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation Emscripten / C / C++ all about Emscripten enhancement New feature or request examples javascript

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant