You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The 3D pose WebARKit hands to GL renderers (three.js) is mirror/flipped in
orientation — overlays sit on the marker but the axes are wrong, requiring an
example-side compensation. Root cause traced in #35.
Analysis
The correct CV->GL pose conversion is D·R·D (D = diag(1,-1,-1)):
left D = flip the camera/eye frame (negate Y,Z rows) — done by arglCameraViewRHf.
right D = flip the marker/object frame (negate Y,Z columns) — done by
ArtoolkitX in ARTrackable2d::updateWithTwoDResults.
WebARKit's WebARKitPatternTrackingInfo::updateTrackable() originally negated
the Y,Z columns (matching ArtoolkitX), but that was removed, so the current
result is only D·R — the missing right D is the orientation mirror.
Proposed fix
Restore the Y,Z column negation in updateTrackable():
so matrixGL_RH = arglCameraViewRHf(trans) = D·R·D (+ D·t).
Why low risk
teblid_example uses the 2D homography (CSS transform), not the 3D pose, so
it would not be affected. The downstream static three.js example currently
compensates with a found() row+column negation and a markerFrame rotation;
those get removed once the library is correct.
Plan
Restore the column negation in updateTrackable (this repo).
Downstream (webarkit-testing): drop the example-side found()/markerFrame
corrections; consume matrixGL_RH directly; rebuild WASM + verify.
Problem
The 3D pose WebARKit hands to GL renderers (three.js) is mirror/flipped in
orientation — overlays sit on the marker but the axes are wrong, requiring an
example-side compensation. Root cause traced in #35.
Analysis
The correct CV->GL pose conversion is D·R·D (D = diag(1,-1,-1)):
arglCameraViewRHf.ArtoolkitX in
ARTrackable2d::updateWithTwoDResults.WebARKit's
WebARKitPatternTrackingInfo::updateTrackable()originally negatedthe Y,Z columns (matching ArtoolkitX), but that was removed, so the current
result is only D·R — the missing right D is the orientation mirror.
Proposed fix
Restore the Y,Z column negation in
updateTrackable():so
matrixGL_RH=arglCameraViewRHf(trans)= D·R·D (+ D·t).Why low risk
teblid_exampleuses the 2D homography (CSS transform), not the 3D pose, soit would not be affected. The downstream static three.js example currently
compensates with a
found()row+column negation and amarkerFramerotation;those get removed once the library is correct.
Plan
updateTrackable(this repo).found()/markerFramecorrections; consume
matrixGL_RHdirectly; rebuild WASM + verify.Refs: #35