Skip to content

Shared Space for Multi-Player VR #42

@skim0119

Description

@skim0119

Current status: the system is being developed and tested for a single active VR player plus one browser viewer. A true multi-player shared-room experience, where two or more headset users appear in the correct relative physical locations, is not implemented yet.

Why this matters

Each headset normally tracks itself in its own local XR coordinate frame. That means sending headset or controller poses over the network is not enough, by itself, to place multiple users correctly in the same real-world room. To support multi-player co-location, the system needs a shared spatial frame first, and then each player’s head/body/arm rig can be placed inside that common frame.

Possible extension path

This can be extended in the future by adding a room-alignment layer before the existing player/arm sync. The best options are:

  • Shared spatial anchors / co-location support from Meta’s native stack.
  • Experimental shared-space support in Quest Browser WebXR, if staying browser-based.
  • A manual calibration flow, such as aligning all users to one known point or marker.

Implementation hint for future work

  • Add a shared_room_transform or equivalent world anchor concept.
  • Place each player’s root/body from headset pose inside that shared frame.
  • Define arm bases relative to the player root, not fixed global positions.
  • Keep the current arm simulation logic, but transform each player rig into the shared room frame before broadcasting/rendering.
  • If browser support is insufficient, evaluate whether this feature should move from WebXR-only to a native Meta SDK path.

Caveat

  • Motion (translation + rotation) should affect arm motion (Corriolus, Lagrange transportation terms)

Good starting sources

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions