Salta al contingut
The Virtual Layer cover

Projectes / The Virtual Layer

The Virtual Layer

Mixed-reality showroom for viewing, comparing, and deciding on real-world products together in a shared room, without transporting physical prototypes.

2026
UnityC#NetcodeAR FoundationOpenXR

Overview

The Virtual Layer is a mixed-reality showroom built for product companies that need to present furniture, lighting, curtains, and other spatial products before committing to a physical prototype. Customers can enter the same online room, browse a product catalogue, inspect designs at one-to-one scale, compare variations, and make decisions together.

The Virtual Layer product catalogue with furniture, lighting, and brand categories
A spatial catalogue lets the customer browse product families, variants, and brands directly from the room.

The problem

Many products are difficult to evaluate from a flat catalogue. Their proportions, materials, and relationship with the room only become clear when they are seen in context. Physical samples and prototypes are expensive to transport, slow to change, and hard to compare during a sales conversation.

The solution

The app places digital product models inside a shared mixed-reality room. A user can select a product, bring it into the scene, inspect it from different angles, switch configurations, and compare the result at full scale. The experience is designed around a simple sales loop: visualize, compare, decide.

A full-scale mixed-reality ceiling installation with product variants in the catalogue
One-to-one scale makes the relationship between the product, the architecture, and the available space immediately legible.
A virtual sofa displayed in a real showroom environment with a no physical prototypes message
The same room can be used to assess large pieces without building or transporting a physical prototype.

Spatial co-location without QR codes

The most technically distinctive part was making two separate headsets agree on the same room coordinate system without QR codes or printed visual markers.

The implementation uses two virtual calibration references placed on the floor from the controller. AlignmentManager raycasts against the floor, uses the midpoint between the two references as the shared scenario origin, and derives the room heading from the direction between them. AnchorManager then creates persistent ARAnchor objects through AR Foundation, saves them, and loads them again when the app starts. The product showroom is kept under a common ScenarioRoot, so the same furniture pose can be reconstructed in each headset’s local tracking space.

This separates two problems that are easy to confuse: the headset tracks its own space locally, while the app establishes a stable shared reference frame on top of that tracking. The result is co-located content without asking the customer to place or scan a physical marker.

Networked showroom

The host is authoritative for the shared product state. When a product is placed or moved, NetworkFurnitureManager converts its world pose into a position and rotation relative to ScenarioRoot. Those local coordinates are sent through Netcode for GameObjects and reconstructed by each client against its own aligned root.

NetworkFurnitureSync stores the local position and rotation in server-write NetworkVariables, applies changes on clients, and interpolates the resulting world transform for smoother motion. When a new client joins, the host sends the furniture already placed in the room so the session starts with the same showroom state for everyone.

A headset user inspecting shared virtual furniture inside the showroom
Networked avatars and synchronized objects turn the showroom into a collaborative review space rather than a solo viewer.

My role

Lead Developer · XR & Multiplayer

Responsibilities

  • Designed and implemented the shared mixed-reality showroom in Unity.
  • Built the headset co-location flow around floor references and persistent AR anchors.
  • Implemented host-authoritative product spawning, movement, and late-join synchronization with Netcode for GameObjects.
  • Integrated the product catalogue, brand categories, model variants, material changes, and one-to-one presentation scale.
  • Replicated headset, hand, name, and colour information so participants can understand each other’s presence in the room.
  • Tuned the interaction and presentation flow for a live product demonstration.
A customer inspecting a shared virtual product with a controller in mixed reality
The final interaction keeps the product in context while the customer inspects it from a natural standing position.

Engineering highlights

  • Markerless co-location: a shared ScenarioRoot is derived from two floor references and persisted AR anchors instead of QR or image markers.
  • Local-space networking: product poses are synchronized relative to the aligned showroom root, making the network state independent from each headset’s raw tracking origin.
  • Server-authoritative state: the host owns placement, movement, and deletion of networked products; clients receive the resulting state and interpolate it locally.
  • Collaborative presence: head and hand transforms are replicated through networked XR player avatars.
  • Designed for product decisions: catalogue navigation, full-scale inspection, material variants, and room context are treated as one continuous flow.

Stack

  • Unity + C#
  • Netcode for GameObjects 2.0
  • AR Foundation 6.0
  • OpenXR + PICO OpenXR integration
  • Unity Multiplayer Services / Lobby flow
  • XR Interaction Toolkit 3.0

Visit

Watch the demo video