5.9 KiB
5.9 KiB
UX Design — HS_DollyCam
Interaction Modalities
HS_DollyCam supports three primary input modalities:
| Modality | Description | Use Case |
|---|---|---|
Chat Commands (/88) |
Text-based commands on channel 88 | Primary workflow; precise control; scripting |
| Touch Menu | Dialog menu opened by touching the HUD prim | GUI-based workflow; discovery; quick actions |
| Visual Markers | Clickable pyramid markers rezzed in-world | Spatial navigation; previewing presets |
Chat Command Reference (/88)
/88 help — Show all available commands
/88 cam on|off — Request/release camera control
/88 save <idx> — Save current camera as preset
/88 load <idx> — Instant cut to preset
/88 moveto <idx> [ms] — Smooth move to preset
/88 del <idx> — Delete preset
/88 list [from] [count] — List saved presets
/88 play <notecard> [gap_ms] — Play playlist from notecard
/88 stop — Stop current playback/movement
/88 tour <ms> [mode] <idx1> ... — Continuous tour across presets
/88 dollyzoom <ms> [mode] <idxA> <idxB> — Dolly zoom between two presets
/88 cfg reload|dump — Reload/dump engine configuration
/88 show cams [N] — Rez marker pyramids
/88 hide cams — Remove marker pyramids
/88 lock on [<x,y,z>|uuid] — Lock camera to target
/88 lock off — Release lock
/88 follow on [uuid] [mode] [ms] — Follow target object
/88 follow off — Release follow
/88 fov <rad> — Set viewer FOV (radians)
/88 fovdeg <deg> — Set viewer FOV (degrees)
Touch Menu Structure
The touch menu (opened by touching the HUD ROOT prim) provides the following workflow groups:
┌─────────────────────────────────┐
│ HS DollyCam │
├─────────────────────────────────┤
│ [Save 1] [Save 2] [Save 3] │
│ [Load 1] [Load 2] [Load 3] │
│ [MoveTo 1] [MoveTo 2] │
├─────────────────────────────────┤
│ [Play] [Stop] [Tour] │
├─────────────────────────────────┤
│ [Follow] [Lock] [FOV] │
├─────────────────────────────────┤
│ [Markers] [Cams] [Help] │
└─────────────────────────────────┘
Menu Workflow Details
| Screen | Purpose | Key Actions |
|---|---|---|
| Preset Grid | Save/load/move to presets | Save current, load preset, moveto preset |
| Playback | Playlist and tour controls | Play notecard, stop, build tour |
| Tracking | Lock/follow/FOV controls | Enable tracking, adjust FOV |
| Helpers | Markers and camera tools | Show/hide markers, cam on/off |
Notecard Playlist Syntax
Lines are parsed sequentially. Supported commands:
moveto 1 2500 — Smooth move to preset 1 over 2500ms
goto 2 — Instant cut to preset 2
load 3 — Alternative: instant cut to preset 3
wait 1000 — Hold for 1000ms before next command
tour 5000 spline 1 2 3 — Begin continuous tour (5s, spline interp)
— ... intermediate waypoints ...
endtour — End tour block, load final position
dollyzoom 2000 1 3 — Dolly zoom from preset 1 to 3 over 2s
fov 1.047 — Set FOV to 60°
lock on <uuid> — Lock to target
follow on <uuid> yaw — Follow target in world coordinates
State Machine
┌──────────────┐
│ IDLE (root) │
└──────┬───────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ MOVING │ │ TOURING │ │ LOCKED │
│ (single) │ │ (multi) │ │ / FOLLOW │
└──────────┘ └──────────┘ └──────────┘
│ │ │
└────────────┴────────────┘
▼
┌──────────────┐
│ STOPPED │
└──────────────┘
Key transitions:
- Any → STOPPED:
stop,load,moveto, menu action, marker click - IDLE → MOVING:
movetowith duration > 0 - IDLE → MOVING:
load(instant, duration = 0) - IDLE → TOURING:
tourcommand or playlisttourblock - IDLE → LOCKED/FOLLOW:
lock onorfollow on - Any → IDLE:
cam off, detach, permission denied
Memory-Sensitive Design Rules
- No full string splitting in hot paths — Timer events,
link_messageforCE_INT_SET_CAM, preset loading must use targeted parsing - Runtime data in script memory — Tour playback lists (positions, focuses, segment lengths) stay in
HS_CamEngineTour.lsl, not Linkset Data - Short-lived lists — Tour payload building stores indices first, loads position/focus at
endtour, then builds final payload - Throttled output — Camera frames sent at ≤30Hz via
tour_cam_min_interval