Snapdragon and Qualcomm branded products are products of
Qualcomm Technologies, Inc. and/or its subsidiaries.
Qualcomm Technologies, Inc. (QTI) is no stranger to virtual reality (VR) development, with our previous Snapdragon® 835 VR Development Kit. Recently we launched the Snapdragon 845 VR Dev Kit, which represents a premium tier VR head mounted display (HMD) built around the Snapdragon 845 mobile platform. In my previous blog about VR, I talked about the technical considerations for VR developers, but there are also unique considerations for project leads.
Most notably, VR experiences can be quite different from traditional 3D environments where a world is seen through a 2D viewport. With an HMD completely immersing the player, VR can often blur the line between games, movies, and other media, creating both new possibilities and challenges. With this in mind, let’s look at considerations for planning and designing VR projects.
Key Considerations for Planning
By definition, the minimal functionality for VR is to allow a player to look around a virtual world. The availability of additional mechanics (e.g., moving, throwing items, etc.), will be dictated by the capabilities of target platform. Identifying device capabilities up front is important, especially if you’re trying to develop a cross-platform VR application, as this will dictate both development costs and the cost of hardware to ship.
Start by establishing what degrees of freedom (DoFs) are provided by your hardware. For example, while some devices only support 3DoF head tracking, the Snapdragon 845 VR Dev Kit comes with 6DoF room-scale head tracking, meaning the HMD captures both rotations (yaw, pitch, and roll) and translations (across x, y, and z). The latter means your app can provide room-scale VR, which will require more development efforts. Also identify what functionality you will support from any additional hardware such as eye tracking (included on the Snapdragon 845 Dev Kit) as well as the controllers, each of which have varying degrees of DoFs including movements, buttons, and haptics.
With room-scale VR, an important consideration is how to achieve positioning. Some devices use a “constellation” system in which an external device tracks lights (e.g., LEDs) emitted from the HMD, while another approach is the “light house system” in which external devices emit infrared signals that the HMD detects its position with. The Snapdragon 845 VR Dev Kit uses a different approach of dual forward-facing cameras to determine depth from the surrounding physical space, eliminating the need for external hardware.
Another up-front consideration is how collisions and boundaries are enforced in relation to the amount of movement. Here translation DoFs are limited by the physical space so you should decide how that space maps to virtual space, and what will happen at boundaries, as this will affect the design of your environments and the user interface.
Key Considerations for Design
Story boarding, requirements, and conceptual drawings are important with VR projects because they help ensure that the environment and mechanics map well to a VR experience. Such resources should include extensive designs around movements of HMD’s and controllers, showing the cause and effect of DoFs. This will help both content creators and programmers to clearly understand what needs to be accomplished.
Art assets, in particular the environment platform, terrain, and bounding geometry, should be developed based on device capabilities. A device like the Snapdragon 845 VR Dev Kit for example, provides a generous 110° field of view (FOV) which means a substantial portion of the typical 180° FOV that we see, should render in high detail. Similarly, the dev kit’s target rendering performance of 2560x1440 at 60hz means developers would capture input/movement, update logic, and render, all within a 16ms time frame, while art assets would contain the right level of detail to meet this target. This will also affect how much effort goes into optimizing your graphics pipeline.
Design wise, allocate time to the designing feature toggles or modifications based on device capabilities. Here designers should think of alternative methods when lacking dev capability on a platform, such as changing or even limited certain mechanics.
Finally, with all of this talk about immersive graphics, don’t forget that audio helps complete the immersive VR experience. The goal is to have sound objects follow a user as they move and/or rotate, just like in the real world, so audio assets and the code that “renders” audio, will need to be developed accordingly.
For example, the Snapdragon 845 VR Dev Kit supports stereo, binaural positional audio and 3D surround sounds. For 3D audio, Qualcomm® 3D Audio Plugin for Unity provides a sound field of up to 64 spatial sounds that can be offloaded to the platform’s DSP. With the ability to define the field’s radii, and audio that renders according to the position and rotation of the HMD, careful planning and design will need to be allocated for both programmers and audio engineers to provide an optimal audio experience.
Making it a Reality
When developing a VR project, you should always strive towards the next “minimal” proof of concept, and a dev kit like the Snapdragon 845 VR Dev Kit can allow you to do just that. The dev kit is manufactured by Thundercomm and is available for order. Once purchased, you will be provided with a product code that allows you to download the Snapdragon 845 VR SDK.
The SDK includes support for native (C++) development and as well as integrations with Unity and Unreal, along with supporting samples, which can facilitate artist and data-driven workflows. And since this is a Snapdragon-based platform, you can also use tools and libraries available on QDN including the Snapdragon Profiler, Snapdragon Heterogeneous SDK, and Qualcomm® Neural Processing SDK for AI.
So, when planning and designing a VR project, be sure to build a plan around target device capabilities, create an explicit design that helps the whole team understand what must be accomplished in a VR environment, and choose a development platform that will allow you to iterate on prototypes, and ideally provide you with a rich tool set.