Introduction
How can users perceive different weights of virtual objects when motion controllers do not provide force feedback? Creative studio B-Reel explored several approaches and published their experimental results for community discussion.
B-Reel is a creative company founded in Stockholm, Sweden, in 1999. It has more than 170 staff and multiple offices worldwide. Services include strategy, concept, design, programming, animation, direction, and production.
Background and motivation
Over the past year, from internal projects to work with Google Daydream at Google I/O, we have carried out a series of VR experiments. These experiments helped us learn the production workflow and practical requirements of the medium. We then focused on foundational interaction principles that could improve VR experiences. The Daydream platform inspired this work because practical VR platforms rely on the kinds of interactions we wanted to explore. We therefore decided to investigate a specific interaction in depth.
Visual interaction model vs physical interaction model
Most practical VR interfaces today are simple 2D panels fixed in space. VR games, by contrast, often emphasize physical interactions over visual UI. For example, Cosmic Trip uses physical buttons for menu navigation, while Job Simulator largely abandons the point-and-click interaction paradigm.
We brainstormed and arrived at a compelling idea: simulate the sense of weight when interacting with virtual objects. When a user picks up an object, can we alter the apparent speed of their motion to convey different weights? Heavier objects would be picked up more slowly, while lighter objects would move at normal speed. This idea is not necessarily novel or directly applicable in every practical scenario, but it was worth exploring experimentally.
Platform targeting and tools
We sought a method applicable across motion-controller platforms: from Daydream-style controllers to room-tracked controllers like Vive and Rift. We started by designing for high-end platforms (using Vive as a baseline before Oculus Touch), then explored simplified approaches for Daydream, and finally gaze-based controls for Gear VR and Cardboard.
For development we chose the Unity engine, though we plan to try Unreal in future experiments.
Goals
We set explicit success criteria for this effort:
- Establish a collaborative Unity workflow and familiarize more team members with it.
- Create a basic internal template environment to accelerate future VR experiments.
Research process
After defining direction and goals, we formed a team of three 3D/motion artists, two designers, and one creative technologist. We used Git as our version control and resource-sharing solution across devices. Each scene was edited by one person at a time while others produced prefabs for the main scenes. This workflow suited our small team, and we also investigated methods for efficient collaboration on larger projects.
Step one: learn to be object-lifting artists
To implement weight feedback, we first clarified the basic physics of picking up and moving objects. We found that the necessary concepts were consistent and not yet standardized in the VR industry, so we experimented with several ideas grouped into two categories: direct attachment and loose attachment. The attachment type determines how we simulate weight.
Direct attachment
With direct attachment, the object fully matches the controller's movement. If the controller moves too quickly, the object may not keep up due to its simulated weight, the connection can break, and the object will fall to the ground.
Loose attachment
With loose attachment, objects have different attraction strengths according to weight. Lighter objects react faster and feel closer to direct attachment. Heavier objects lag behind the controller and require more simulated "force" to lift. We initially expected this approach to perform poorly because objects do not perfectly track the controller, which can break immersion. However, the effect proved surprisingly convincing.
Two practical insights emerged:
- We continue to render the controller while lifting to preserve the user's sense of direct control over the environment.
- When the controller first contacts an object, we lock them together into a direct attachment. We added this mechanism because the sense of weight is most useful during the pickup action; after that, continuous weight simulation can distract the user.
ALLPCB