# VRChem: A Virtual Reality Molecular Builder
## 2 Implementation
### User Experience
The motivation behind this was that while our hands are anatomically symmetrical and could logically perform the same actions, most of us are more skilled in using one over the other and are already familiar with the asymmetric user interface of a mouse and keyboard, and many instruments, vehicles and more. During the implementation of VRChem, we carried out user studies, comparing the use of traditional desktop application and VRChem for building molecules [41]. A user test group consisting of 11 students in chemistry, game design and graphic design, carried out three different molecule-building tasks, which were performed with both a regular keyboard-mouse user interface and the VRChem software using the Leap Motion controller. The molecules that the users had to build from scratch included ethylene glycol, 3,3\({}^{\prime}\)/3\({}^{\prime\prime}\)-benzene-1,3,5-triyltripyridine and 3-(N-methyl-N-ethynylamino)-1,2-propadien-1-ol. In the case of the simplest molecule (ethylene glycol), the students built the molecule on average in approximately the same time as with VR and regular user interfaces. For the two more complex molecules, the students were able to build them 20-30% faster with the regular interface. Not surprisingly, those students with little previous VR experience struggled most with the VR interface. Notably, one student could not complete the test, as the hand gesture VR interface had been designed for right-handed users and the student was left-handed. While the VR user interface did not lead to significant advances over the refular keyboard-mouse builder interface, the overall feedback from non-chemistry students suggested that a VR environment is good for understanding molecular 3D structures. Some chemistry students also appreciated the powerful 3D visualization in virtual reality, even if the manipulation of the molecules with hand gestures were not as convenient as with a traditional keyboard-mouse interface. Overall, the early testing proved that the Leap Motion device's hand tracking could not provide an adequate level of accuracy for precise VR use. Most test users experienced occasional tracking errors that resulted in missing an intended target. Another common failure was related to gesture recognition, where a pinch-and-move gesture would be  
Figure 2: Hand gestures used in a hand tracking based control scheme. **(1)** Pinch gesture—create new atoms and bonds. **(2)** Point gesture—select atoms and bonds for measuring and editing, interact with menus. **(3)** Thumb up—delete atoms or bonds. **(4)** Grab gesture—move atoms, rotate bonds or rotate molecule. released prematurely. Updates to the device driver could improve the experience, as could the improved hardware that is now being integrated into some VR devices, but due to these problems the development focus was shifted to a UI based on the HTC Vive controller pictured in Figure 3. The hand gestures chosen previously were adapted to be used with the controller buttons with relative ease. The pinch was mapped to the index finger-activated trigger button, and the grab was mapped to a button on the side of the controller. Functions previously tied to touching objects with an extended finger were implemented by using the controller track pad. The asymmetric design was maintained by creating a pair of controller modes, one for modeling and another for viewing and menu manipulation, which could be toggled using the menu button. Object selection when using hand tracking is done by touching objects with the virtual hand model, but the controller uses a ray cast from the controller that acts as a pointer. Both input implementations use comparable motions and hand muscles, and familiarity in one should be transferable to the other. The controller-based scheme also presents a slight accessibility improvement, as it can be used with a single controller by switching between interaction modes. Figure 4 shows a typical view from the HMD when using the controllers in a modeling task.