November 6, 2019 update:
  • There's a new open source Cardboard SDK for iOS and Android NDK that offers a streamlined API, improved device compatibility, and built-in viewer profile QR code scanning. A corresponding Unity package (SDK) is planned for a future release. We recommend that all developers actively building for Google Cardboard migrate (iOS, Android NDK) to the new Cardboard SDK.
October 15, 2019 update:
  • The Daydream View VR headset is no longer available for purchase. However, you can continue to use the existing Google VR SDK to update and distribute your apps to the Google Play Store, and make them available to users in the Daydream app.

Degrees of freedom

Degrees of freedom (DoF) refer to the number of basic ways a rigid object can move through 3D space. There are six total degrees of freedom. Three correspond to rotational movement around the x, y, and z axes, commonly termed pitch, yaw, and roll. The other three correspond to translational movement along those axes, which can be thought of as moving forward or backward, moving left or right, and moving up or down.

VR headsets and input devices are generally 3DoF or 6DoF.

3DoF means we can track rotational motion but not translational. For the headset, that means we can track whether the user has turned their head left or right, tilted it up or down, or pivoted left and right.

6DoF means we can additionally track translational motion. That means we can track whether the user has moved forward, backward, laterally, or vertically.

For example:

  • Daydream View features a 3DoF headset and 3DoF controller, commonly referred to as "3.3".
  • Daydream Standalone features a 6DoF headset and 3DoF controllers, commonly referred to as "6.3".

We recommend that developers target 3.3 and 6.3 in a single app.

Key development differences

  • 3DoF head-tracking means you can only track rotational movement.
  • 6DoF head-tracking means you can track both position and rotation.
  • In 3DoF you need to use a neck model to simulate realistic movement, which Daydream provides.
  • In 6DoF a neck model is not necessary because the actual position and rotation of the head are known.
  • When you use 6DoF tracking and WorldSense has to fall-back to 3DoF, WorldSense will handle the neck model implementation for your app so you don't have to write it in yourself.
  • When updating from 3DoF to 6DoF, if you wrote a custom neck model, you may need to remove it. If you used the Daydream neck model it will be turned off automatically.