Back to selected work

VIVE Desk

Building Spatial Interactions for a Flexible Virtual Workspace

  • 2023–2025
  • XR
  • Spatial Interaction
  • Unity
A user wearing a VR headset at a physical desk, pointing toward three surrounding virtual displays.
Conceptual illustration of a user interacting with multiple virtual displays in VIVE Desk.AI-assisted conceptual illustration based on original sketches.

/ 01 Overview

VIVE Desk is a virtual workspace application developed by HTC VIVE and shipped with VIVE XR Elite and VIVE Focus Vision. This app allows users to view their PC screens in VR and work in a virtual workspace beyond the limitations of physical monitors and desk space.

As a software engineer on the VIVE R&D App team, I was responsible for most of the client-side development using Unity. I contributed to this project by implementing features such as hand-based interaction, in-app workspace redefinition, and window manipulation.

During this project, my role included not only implementing predefined functionality but also helping identify interaction problems and proposing solutions. I worked with engineers and incorporated feedback from UX designers to refine and implement these interactions.

Details

OrganizationHTC VIVE
ProductVIVE Desk
RoleSoftware Engineer — VR Client
Engineering Team2 engineers
Timeline2023–2025
PlatformUnity / C# / Android VR

Product walkthrough

VIVE Education - Setting up and using VIVE Desk

Watch on YouTube
/ 02

Product Evolution

When I joined the team in 2023, VIVE Desk already supported PC streaming with a fixed display layout of up to three virtual monitors.

VIVE Desk was publicly released in 2024 and continued to evolve through subsequent updates.

During my time on this project, our team refactored the application architecture and developed several features, including flexible display layouts, multiple display resolutions, free window arrangement, hand-based interactions, in-app workspace redefinition, and additional content types such as WebView and App View.

My primary contribution to this evolution was developing and refining client-side interactions rather than the underlying streaming systems or overall application architecture.

Before / Early 2023

Three matching virtual monitors in a fixed arrangement.

Fixed Virtual Monitors

Up to 3 PC displays with fixed 16:9 aspect ratios

Input methods

Mouse + controller

After / Product Evolution

Freely arranged flat and curved virtual windows.

Flexible Spatial Workspace

Resizable, freely arranged windows with varied content and flat or curved displays

Input methods

Mouse + controller+ Hand interaction

Comparison of fixed virtual monitors and a flexible workspace with freely arranged flat and curved windows.AI-assisted diagram based on original sketches.
/ 03

Key Contributions

A hand adjusting a physical desk boundary highlighted in red with corner handles.

01 /

Workspace Redefinition

Participated in defining, designing, and implementing interactions for configuring the virtual workspace to align with the user’s physical desk, including height and orientation adjustments. This work contributed to a patented invention for which I am listed as the first inventor.

A hand directly pressing a virtual toolbar button beneath a settings panel, with red visual feedback.

02 /

Hand-Based Interaction

Worked as a team to develop and refine hand-based interactions. My contributions included prototyping and refining direct-touch behaviors, implementing gesture detection and toolbar recentering, and making UI adjustments to support other hand gestures.

A VR user moving, curving, and resizing virtual windows around a physical desk.

03 /

Spatial Workspace Interactions

Implemented client-side interactions supporting flexible virtual workspaces, including window positioning, resizing, display configuration, and curvature controls

AI-assisted conceptual illustration based on original sketches.

/ 04

Feature Deep Dives

04.1 /

Workspace Redefinition

One of my contributions to VIVE Desk was improving the workflow for redefining the user’s virtual workspace.

Problem

Aligning the virtual workspace with the user’s physical desk is an important part of setting up VIVE Desk.

Before this feature, users had to leave VIVE Desk and open the headset’s settings to reconfigure their workspace. After making adjustments, they had to return to the app to continue working. This interrupted their workflow and added unnecessary steps.

Before: users leave VIVE Desk, adjust the desk position and height in headset settings, then return to the app. After: users adjust their workspace directly within VIVE Desk.
Comparison of workspace setup in headset settings and directly within VIVE Desk.AI-assisted diagram based on original sketches.

Define Workspace

Form an L-shape, align the workspace preview with the physical desk, then pinch to confirm.

Define a workspace using an L-shape and pinchA physical desk stays in place. A relaxed right hand forms an L-shape with the index extended, the thumb pointing left and the other three fingers folded. Only then does a translucent workspace preview appear. The hand and plane move together until the preview aligns with the tabletop. The index and thumb meet in a pinch to confirm the position and height. Two translucent curved resize areas at the near corners and a translucent height handle at the front center appear only after confirmation.

Resize Workspace

Pinch the right corner and pull to widen the workspace. The center handle stays horizontally centered.

Resize a workspace by pinching and dragging the right cornerThe confirmed translucent workspace has two curved corner areas and one front-center handle. A relaxed right hand moves toward the right corner, prepares a pinch, and closes its fingers. The grabbed corner becomes darker. Pulling right extends only the right side while the left side and physical desk remain fixed. The center handle moves by half the width change to stay centered.

Adjust Height

Pinch the center handle to lift the workspace, lower it back to the desktop, then release.

Adjust workspace height using the center handleA relaxed hand approaches the central handle with separated fingers, then pinches it. The handle darkens and the hand, handle and entire translucent plane move upward together while the physical desk stays fixed. Still pinching, the hand lowers the plane back to the desktop. Only after alignment does the hand release and withdraw to idle. The plane keeps its size and orientation; both corner areas remain inactive.

AI-assisted conceptual illustration based on original sketches.

Design Decisions

VIVE Desk uses the desk’s position and orientation as a reference for the virtual workspace. The default positions of the toolbar and virtual windows are determined relative to the desk, making its placement especially important.

To reduce the time needed for setup, we wanted a gesture that could define the desk’s position, height, and orientation in a single step. The gesture was inspired by the right-hand rule, which uses the relationship between two vectors to determine a perpendicular direction.

We decided to use a default desk size for the initial setup, while keeping options for fine-tuning the size, height, and orientation afterward.

Iteration & Outcome

Our initial prototype used a plain image to indicate the interaction area. The UX team helped refine the visual presentation and tune the interaction thresholds of our original design.

The feature was shipped in a production release, allowing users to redefine their workspace without leaving VIVE Desk.

This work also contributed to a patented invention for which I am listed as the first inventor.

04.2 /

Hand-Based Interaction

Context

When I joined the project, VIVE Desk supported only mouse and controller inputs. As the product evolved, our team began adding hand-based interactions to provide another input method without requiring physical controllers.

Direct Touch Click
Direct-touch hover, transfer, press and releaseA finger approaches the star button, which rises right and up while an outline marks its original position. Moving to the neighboring moon restores the star and raises the moon. The finger pad covers the moon's center and pushes it back to its original position. Lifting away restores its neutral state without a release arrow. The raised button covers neighboring buttons, the panel stays fixed, and the sequence loops.
Conceptual sequence of a finger hovering over, pressing, and releasing virtual toolbar buttons.AI-assisted conceptual illustration based on original sketches.

Design & Implementation

Our team used hand-tracking data from Wave SDK to develop custom interactions for VIVE Desk, including direct touch and gesture-based controls.

I initially developed a prototype for direct-touch interaction. The project owner later took the lead in refining and implementing the core behavior, while I contributed to subsequent adjustments and UI integration.

For gesture-based controls, we discussed possible gestures and their behaviors together. I implemented gesture detection for selected interactions and took primary responsibility for the toolbar recentering feature. I also made UI adjustments to support other gestures, including toolbar collapse.

During pinch-based dragging, I noticed that the UI would jitter when following the tracked hand position directly. I used linear interpolation (Lerp) to smooth the movement and adjusted gesture recognition thresholds to maintain a more stable pinch state.

Outcome

These interactions were integrated into VIVE Desk, expanding the available input methods beyond mouse and controllers.

/ 05

Reflection

Working on VIVE Desk helped me improve my engineering skills and learn to identify interaction problems. Looking back, I realized that reducing the number of steps alone is not sufficient evidence of better usability.

Although the redesigned workflow removed the need to leave the app, I did not systematically compare our interaction design with alternative approaches, so I could not determine how much it improved usability.

If I were to revisit this project, I would compare the one-step calibration approach with a step-by-step alternative through usability testing, measuring task completion time, adjustment errors, and user effort to better understand their trade-offs.

Back to selected work