This guide shows you how to use the Google Cardboard XR Plugin for Unity for Unity to create your own Virtual Reality (VR) experiences.
You can use the Cardboard SDK to turn a mobile phone into a VR platform. A smartphone can display 3D scenes with stereoscopic rendering, track and react to head movements, and interact with apps by detecting when the user presses the viewer button.
To get started, you'll use HelloCardboard, a demo game that demonstrates the core features of the Cardboard SDK. In the game, users look around a virtual world to find and collect objects. It shows you how to:
- Set up your development environment
- Download and build the demo app
- Scan the QR code of a Cardboard viewer to save its parameters
- Track the user’s head movements
- Render stereoscopic images by setting the correct distortion for each eye
- Turn VR mode on and off
Set up your development environment
Software requirements:
- Unity 2021.3.32f1 or later
- Make sure to include Android and iOS Build Support during installation.
- Git must be installed and the
git
executable must be on thePATH
environment variable. See Unity's package manager git support docs for more details.
Import the SDK and create a new project
Follow these steps to import the Unity SDK and create a new project.
- Open Unity and create a new 3D project.
- In Unity, go to Window > Package Manager.
- Click + and select Add package from git URL.
- Paste
https://github.com/googlevr/cardboard-xr-plugin.git
into the text entry field.
The package should be added to the installed packages. - Navigate to the Google Cardboard XR Plugin for Unity package. In the
Samples section, choose Import into Project.
The sample assets should be loaded intoAssets/Samples/Google Cardboard/<version>/Hello Cardboard
.
Configuring HelloCardboard scene
- Navigate to
Assets/Samples/Google Cardboard/<version>/Hello Cardboard/Scenes
, select Add Open Scenes, and choose HelloCardboard to open the sample scene. - Open the Layers menu and select Edit Layers....
- Define a new layer called "Interactive".
- Click on the Treasure GameObject to open the Inspector window. Set its layer to be "Interactive". If a pop up window appears asking if you want to set layer to Interactive for all child objects as well, click on "Yes, change children".
- Click on the Player > Camera > CardboardReticlePointer GameObject to open the Inspector window. In the "Carboard reticle pointer" script, select "Interactive" as the Reticle Interaction Layer Mask.
Configuring Android project settings
Navigate to File > Build Settings.
- Select Android and choose Switch Platform.
- Select Add Open Scenes and choose HelloCardboard.
Player Settings
Resolution and Presentation
Navigate to Project Settings > Player > Resolution and Presentation.
- Set the Default Orientation to Landscape Left or Landscape Right.
- Disable Optimized Frame Pacing.
Other Settings
Navigate to Project Settings > Player > Other Settings.
- Choose
OpenGLES2
,OpenGLES3
, orVulkan
, or any combination of them in Graphics APIs. - Select
Android 8.0 'Oreo' (API level 26)
or higher in Minimum API Level. - Select
API level 33
or higher in Target API Level. - Select
IL2CPP
in Scripting Backend. - Select desired architectures by choosing
ARMv7
,ARM64
, or both in Target Architectures. - Select
Require
in Internet Access. - Specify your company domain under Package Name.
- If
Vulkan
was selected as Graphics API:- Uncheck Apply display rotation during rendering checkbox in Vulkan Settings.
- If the Unity version is 2021.2 or above, Select
ETC2
in Texture compression format.
- If the Unity version is 2023.1 or later, select
Activity
and clearGameActivity
in Application Entry Point.
Publishing Settings
Navigate to Project Settings > Player > Publishing Settings.
- In the Build section, select
Custom Main Gradle Template
andCustom Gradle Properties Template
. Add the following lines to the dependencies section of
Assets/Plugins/Android/mainTemplate.gradle
:implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.gms:play-services-vision:20.1.3' implementation 'com.google.android.material:material:1.6.1' implementation 'com.google.protobuf:protobuf-javalite:3.19.4'
Add the following lines to
Assets/Plugins/Android/gradleTemplate.properties
:android.enableJetifier=true android.useAndroidX=true
XR Plug-in Management Settings
Navigate to Project Settings > XR Plug-in Management.
- Select
Cardboard XR Plugin
under Plug-in Providers.
Build your project
Navigate to File > Build Settings.
- Select Build, or choose a device and select Build and Run.
Configuring iOS project settings
Navigate to File > Build Settings.
- Select iOS and choose Switch Platform.
- Select Add Open Scenes and choose HelloCardboard.
Player Settings
Resolution and Presentation
Navigate to Project Settings > Player > Resolution and Presentation.
- Set the Default Orientation to Landscape Left or Landscape Right.
Other Settings
Navigate to Project Settings > Player > Other Settings.
- In Camera Usage Description, write
Cardboard SDK requires camera permission to read the QR code (required to get the encoded device parameters).
. - In Target minimum iOS Version, write
12.0
. - Specify your company domain under Package Name.
XR Plug-in Management Settings
Navigate to Project Settings > XR Plug-in Management.
- Select
Cardboard XR Plugin
under Plug-in Providers.
Build your project
Navigate to File > Build Settings.
- Select Build or Build and Run.
Recentering
The Cardboard SDK allows you to
recenter the head tracker using
Recenter()
.
Follow these steps to try it out using the sample application:
- Move the device to the position you want to recenter (use as new looking forward head pose).
- Hold the trigger of your Cardboard device active for at least three seconds.
- Release the trigger.
- The initial pose is now in the direction the camera is pointing.
Turning VR mode on and off
The Unity XR Plugin Management API lets you turn VR mode on or off for the Google Cardboard XR Plugin for Unity. End-user documentation and usage examples are available in Unity's End-user documentation.
The VrMode scene in HelloCardboard sample shows a basic usage of the aformentioned API. In this scene, VR mode can be turned off by tapping exit , and can be turned on again just by tapping anywhere on the screen. Check VrModeController.cs for details about how this is performed.
Next steps
- Review the Cardboard branding guidelines.