This is a training and assessment application that lets users operate networking devices in a virtual datacenter. One very interesting feature is that all elements are synchronized in real-time with actual Cisco devices running in the cloud, creating a bridge between the virtual world and real-life.
The most challenging part was getting the cables right. To create each cable, we used a skinned mesh with 22 rigid bodies chained together using joint primitives. Physics-driven objects are always a potential source of bugs which made me spend a great amount of time making sure that cables would not only feel realistic but also would respond well to abuse.
Since there are many interactive elements so close to each other, it’s also very important to fine-tune many other details such as visual cues, haptic feedback, and smooth grab/release transitions. All these features working together can turn a complex interaction into something that feels natural.
Rope & Tire
This interaction showcases part of a training session that requires the user to scan different elements looking for smuggled items.
Rope physics can be tricky to implement, and even more so in VR if you give the user freedom to swing them around. The rope in this video is modeled using approximately 20 bones that can be grabbed individually. The narrower part that goes through the hand is simulated by scaling the bone when it’s grabbed which makes the mesh shrink along that point. For such a simple operation it provides a significant visual impact.
The tire at the end makes it difficult to move the rope around, which increases the perceived weight. To simulate the haptic feedback I use the movement of the tire itself, sending signals that are proportional to the relative speed at which it is moving, an approach that works really well—especially when it swings around.
– – — – –
As you can see, developing interactions in VR is a detailed and challenging task, but one of the most rewarding for both developers and users. Compelling interactions in VR are usually the by-product of many different iterations until the result feels as natural and satisfying as possible.
Thanks for sticking with me. I’ve been inspired by many talented VR developers out there; I’d be honored if some of these examples can inspire other fellow developers as well.