Repository navigation
52-browser: V4 Asset Browser in VR + light hand tracking - #423
Merged
Merged
Conversation
…s f-vr-place)
- placeDrag RAY mode: beginRayPlace / updateRayPlace / commitRayPlace lay the ghost out in the
objectsGroup's frame, so a moved or shrunk world rig (miniature, dollhouse) places at the
scene-unit spot under the laser; desktop pointer path unchanged (frame = identity)
- placeGhost.setGhostFrame + a frame for the pending drop boxes; explorerDrop.rayHit +
placeFromGhost(items, placements, {frame})
- prefabs get measured dims (their ghost was the 1 m unknown box and they landed half sunk)
- vr/placeRay.js: the VR glue — pointer laser per frame, stick flick turns 15 deg, the trigger
places (stays armed, keeps the turn), a trigger-drag drops on release, a grip cancels, no ghost
while the laser is on a panel
- the VR prefabs window's private ghost moved onto the shared one
- hooks: registerGripHooks (a feature may take a squeeze before anything grabs); the select
swallow learns which controller (IWER fires select BEFORE selectstart on press)
- suites: vr-asset-browser-iwer row G (new, IWER), vr-prefabs taught the shared ghost
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…CC0, your library) - vr/assetBrowser.js + assetBrowserDraw.js: one canvas on one plane (one draw call) on the OFF hand's wrist, facing the head; Add > Assets toggles it; steps aside while the radial is open on that hand; one-handed it opens pinned in front - tabs Packs (drill into a pack) / Free CC0 (Poly Haven models: a card downloads into the Library through the Explorer import, the card shows the progress, then it rides the laser) / My library (models + prefabs); search via the VR keyboard, filtering as you type; pages by the buttons or the stick while the laser is on the panel - a trigger-DRAG from a card drops the item where you let go (once); a CLICK arms it (the next trigger places, stays armed); the status line says what the trigger / grip do now - a GRIP lifts the panel off the wrist: let go in the air = pinned 1.6x, near the wrist = back on it; the Pin / To wrist button does both - a trigger on the panel is the panel's: never a select of what is behind it, never a placement (also under IWER's select-before-selectstart order) - suite vr-asset-browser-iwer row B (55 checks with G), evidence panel shots Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… precise tools ask for a controller
- a pinch IS the trigger: the panel and the laser ghost read the session's select events,
so a pinch presses a card, a pinch held while the hand moves drops the item where it lets
go, a pinch-click arms it and the next pinch places; the panel speaks hands ("pinch to
place", "let go over the world")
- vr/handInput.js: isTrackedHand + controllerRequired(tool, slot) - a tracked hand gets
"Pick up a controller to <tool>" on a small chip at that hand (one draw call) and the
tool stands down; wired into the VR sculpt brush, face edit and vertex edit; exported
from the vrControls facade for 52-measure / 52-paint
- the placing hint outranks a passing info line on the panel
- suite vr-asset-browser-iwer row H (IWER tracked hands; 70 checks with G + B)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…cost on the Quest 3 profile - the panel compares a few inputs per frame and builds its card list only when one moved (the Free tab is 400 rows; it used to be walked every frame); one laser raycast per slot - frame-hook and repaint counters on the panel and the laser ghost - suite row P (IWER metaQuest3, CPU x4): panel 0.59 ms/frame, a repaint 1.5 ms (only when the view changes), the ghost 1.17 ms/frame, +1 draw call for the panel, +2 for a box ghost Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Collaborator
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Roadmap 52 · V4 — the Asset Browser in VR + light hand tracking (lane 52-browser).
What
vr/placeRay.js: trigger places (stays armed, keeps the turn), trigger-drag drops on release, stick flick turns 15°, grip cancels, no ghost while the laser is on a panel. The VR prefabs window uses the same ghost. Prefabs get measured dims (they landed half sunk).controllerRequired(tool, slot)shows "Pick up a controller to …" by the hand for precise tools (wired: VR sculpt, face edit, vertex edit; on the vrControls façade for 52-measure / 52-paint).Shared-file touch points (small, additive)
vr/hooks.jsregisterGripHooks + select swallow receives the slot index ·vr/grip.jstwo grip-hook lines + controllerRequired gates ·Scene.svelteVRAssetBrowser mount + swallow(index) ·vrControls.jsfaçade exports ·debugHooks.jsrows vrPlace / vrAssetBrowser / vrHands ·vr/panels.jsprefab ghost → shared ·vr/sculpt.jsgate ·placeDrag.js,placeGhost.js,explorerDrop.js(ray mode, frame).Proof
vr-asset-browser-iwerrows G B H P: 75/0. vr-prefabs 17/0 (taught the shared ghost), place-drag 38/0, place-drag-extras 15/0, vr-iwer 36/0, vr-grab / vr-sleeve / vr-nav-suppression / vr-panels-on-top green.selectbeforeselectstarton press (a headset: selectstart on press, select + selectend on release) — the panel and the ghost claim per controller so both orders give one action.Owed on a real Quest
Wrist panel position/tilt and readability; pin/return grip feel; ghost + stick turn feel; pinch press/drag with real hand tracking; frame time on the device.
🤖 Generated with Claude Code