-
Notifications
You must be signed in to change notification settings - Fork 0
Drag individual pieces out of the assembly, inspect them, and snap them back #3
Copy link
Copy link
Open
Labels
area: sceneThree.js scene, geometry, cameras, renderingThree.js scene, geometry, cameras, renderingarea: uiControls, panels, layout, interactionControls, panels, layout, interactionenhancementNew feature or requestNew feature or requestfeatureA new user-facing capabilityA new user-facing capabilitypriority: mediumImportant, after the high itemsImportant, after the high itemssize: LRoughly one to two weeks of focused workRoughly one to two weeks of focused workv0.2.0Planned for the v0.2.0 releasePlanned for the v0.2.0 release
Milestone
Description
Activity
Metadata
Metadata
Assignees
Labels
area: sceneThree.js scene, geometry, cameras, renderingThree.js scene, geometry, cameras, renderingarea: uiControls, panels, layout, interactionControls, panels, layout, interactionenhancementNew feature or requestNew feature or requestfeatureA new user-facing capabilityA new user-facing capabilitypriority: mediumImportant, after the high itemsImportant, after the high itemssize: LRoughly one to two weeks of focused workRoughly one to two weeks of focused workv0.2.0Planned for the v0.2.0 releasePlanned for the v0.2.0 release
The separation slider moves every piece at once along a path we decide. Learners also want to grab one part, pull it out, turn it over, and put it back. Direct manipulation makes the parts feel like objects instead of a rendering.
What is needed
Drag any piece out of the assembly, inspect it, and snap it back to its home position. Users should be able to:
Success criteria
Suggested approach
ExplosionControlleralready owns acurrentmatrix per piece and writes it into the instanced batches every frame. Add an optional per-pieceoffsetmatrix that is composed on top of the derived separation pose. The slider path and the drag path then share one write routine and cannot fight each other.pieceIds. Reuse it for pointer down. During drag, intersect the pointer ray with a plane through the piece's current position facing the camera and update the offset translation.hidden,isolatedand the newdisplaced: string[]list inViewerStateso "Show all components" can clear all three.Out of scope
Physics, collisions, and saving displaced layouts across reloads.
Touchpoints
lib/engine/explosion-controller.ts,components/engine/engine-scene.tsx,app/page.tsx,scripts/check-explosion.mjs