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
Follow-up to closed #286 / closed PR #287. The post-mount idea is good; the rotation-axis path we took in #286 was the wrong rabbit hole. This issue captures the locked direction.
Direction (locked, not TBD)
Add a STATIC cylindrical post connecting the plinth working surface to the back of each readout's back-plate. Both endpoints fixed; the post doesn't yaw, doesn't track the camera, doesn't articulate. Purely structural mounting hardware extruded from the plinth body.
Remove faceCamera from PanelReadout entirely. The readout mounts statically with its face along the surface normal direction. Since the plinth's working surface is nearly vertical and faces the user's standing pose, the surface-normal direction already points roughly toward the user — no billboard math needed for the face to be readable from the default viewing position.
All four cluster scenes (quadrics / tangent-planes / gradient-levels / saddle-extrema): cluster-wide consolidation, single PR.
Possibly include rackLabel (quadrics' canonical-forms heading) — the last surviving Label.faceCamera in-tree caller per #280 §3.7, originally deferred to feat(scaffold): display-mock visual-language pass on plinth-mounted readouts (post-#252) #270 which has since closed. Same vocabulary call applies: static-locked on the plinth surface is the cluster's surface-mounted-text posture now.
Why this is the right move
Third domino in the same surface-locked vocabulary thread:
This — readouts + rackLabel consolidated to static-mounted, completing the move.
After this, the only faceCamera caller on the plinth is WorldAxes (which legitimately needs orientation: 'world' for math-frame semantics — see #257). Everything else is static. Big coherence win for the plinth vocabulary going into v1.0.
Tradeoff (accepted)
User has to position themselves to read the readout, rather than the readout tracking them. Same tradeoff #280 accepted for per-slider labels; validated in headset smoke there.
Conceptual benefit: the readout reads as a physical instrument on the desk (like a real LCD bolted to a real stand), not as a billboard chasing the viewer. Matches the "museum exhibit" framing of the v1.0 staged-exhibit vocabulary.
Composes naturally with #271 (plinth layout finalization) — removing readout yaw may surface a need to retune PLINTH_*_READOUT_Y per-scene so the static readout face sits at a comfortable reading angle for the typical viewer pose.
Plan doc convention: this issue warrants a _private/plans/ doc when picked up (foundational scaffold + cluster-wide diff = feedback_roundtable_plan_review_for_foundational_work applies).
Follow-up to closed #286 / closed PR #287. The post-mount idea is good; the rotation-axis path we took in #286 was the wrong rabbit hole. This issue captures the locked direction.
Direction (locked, not TBD)
faceCamerafromPanelReadoutentirely. The readout mounts statically with its face along the surface normal direction. Since the plinth's working surface is nearly vertical and faces the user's standing pose, the surface-normal direction already points roughly toward the user — no billboard math needed for the face to be readable from the default viewing position.quadrics/tangent-planes/gradient-levels/saddle-extrema): cluster-wide consolidation, single PR.rackLabel(quadrics' canonical-forms heading) — the last survivingLabel.faceCamerain-tree caller per #280 §3.7, originally deferred to feat(scaffold): display-mock visual-language pass on plinth-mounted readouts (post-#252) #270 which has since closed. Same vocabulary call applies: static-locked on the plinth surface is the cluster's surface-mounted-text posture now.Why this is the right move
Third domino in the same surface-locked vocabulary thread:
feedback_static_orientation_for_embossed_glyph).tangent-planes/gradient-levels/saddle-extrema.rackLabelconsolidated to static-mounted, completing the move.After this, the only
faceCameracaller on the plinth isWorldAxes(which legitimately needsorientation: 'world'for math-frame semantics — see #257). Everything else is static. Big coherence win for the plinth vocabulary going into v1.0.Tradeoff (accepted)
User has to position themselves to read the readout, rather than the readout tracking them. Same tradeoff #280 accepted for per-slider labels; validated in headset smoke there.
Conceptual benefit: the readout reads as a physical instrument on the desk (like a real LCD bolted to a real stand), not as a billboard chasing the viewer. Matches the "museum exhibit" framing of the v1.0 staged-exhibit vocabulary.
Scope
Does:
ReadoutPostprimitive (or revival of the one from PR feat(scaffold): post-mount stem for plinth-hosted readouts (#286) #287's commit0bf09e8— it's structurally fine, just no longer participates in any rotation pipeline).PanelReadout.faceCameraand its per-scene callers (the fourif (camera) readout.faceCamera(camera)blocks in each scene'supdate()).rackLabel.faceCamerainquadrics/index.ts:1561if Brad wants the full plinth-text consolidation in one PR.Doesn't:
PanelReadout's text layout, back-plate, depth, or color (feat(staging): panel-backed readout visual (#225 E1.4c) #252 / feat(scaffold): display-mock visual-language pass on plinth-mounted readouts (post-#252) #270 work preserved).WorldAxes(feat(scaffold): production-value pass on the WorldAxes math-frame indicator (stub) #257 is the dedicated stub).Composition with adjacent work
PLINTH_*_READOUT_Yper-scene so the static readout face sits at a comfortable reading angle for the typical viewer pose.Refs
_private/plans/doc when picked up (foundational scaffold + cluster-wide diff =feedback_roundtable_plan_review_for_foundational_workapplies).