VR: avatar head and neck follow the headset (look-at style), body turns past the neck's limits #1121
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#1121
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #1072 (first pass on VR animation control). Owner, 2026-10-26: hook the avatar's head and neck up to follow the VR camera, similar to look-at but with tilt as well, and have the avatar turn when the head turns past its limits.
Behaviour:
What others see -- check before promising: local joint rotations are not transmitted. Others normally see head direction only through the look-at target (yaw/pitch) and the body's rotation; roll is probably local only. Decide: drive the transmitted look-at target from the headset as well (so others see where you look), and keep tilt local.
Comfort: the VR camera stays on the headset; this only moves the avatar (no camera coupling back into the view). Mouselook-style body follow must not fight the snap/smooth turn.
Test: in VR, look left/right/up/down and tilt: your avatar's head follows (mirror window or a second viewer); turn past ~70 deg: the body turns; a second viewer sees the head direction change.
Owner decision (2026-10-26): tilt (roll) is sent alongside the look-at so other users see your head tilt.
The look-at effect (ViewerEffect, LookAt type) carries only a target position (TypeData: source id, target id, global position, look-at type: 57 bytes) -- no roll. So:
Colorfield (4 bytes, sent for every effect; check stock viewers ignore it for look-at and the sim relays it unchanged);Owner, 2026-10-26: compatibility with stock viewers is a non-issue -- they already cannot show our look-at on mesh avatars (they do not get the head/neck treatment Slipstream gives them). So choose the roll encoding on what is cleanest for Slipstream-to-Slipstream; the only hard requirement is that the sim relays it.