Oculus Go Development

On 6/23/20 Oculus announced plans to sunset Oculus Go. Information about dates and alternatives can be found in the Oculus Go introduction.

Oculus Quest Development

All Oculus Quest developers MUST PASS the concept review prior to gaining publishing access to the Quest Store and additional resources. Submit a concept document for review as early in your Quest application development cycle as possible. For additional information and context, please see Submitting Your App to the Oculus Quest Store.

Understand Oculus Integration Package Components

The Oculus Integration package, OculusIntegration.unitypackage, is a collection of core VR features, components, scripts, and plugins to ease and enhance the Oculus app development process in Unity. It provides seamless integration with Unity and bundles a suite of SDKs to leverage rendering features, social and community building, sample framework, audio, and avatar development support.

Download Package

Download the package from either Unity Asset Store or from the Unity Integration Archive page. For instructions about integrating the package in Unity, go to the Import Oculus Integration Package topic.

Package Contents

The Oculus Integration package is an asset package. When you import the package, Unity adds it in the Assets folder and maintains the package’s original directory structure. It includes:

VR

The VR folder contains assets to help you create immersive VR apps.

FolderDescription
AudioClipsCollection of audio clips that you can use during development.
EditorScripts that add functionality to the Unity editor and enhance other C# component scripts.
MaterialsMaterials used for graphical components within the package, such as the main GUI display.
MeshesMeshes required by some OVR scripts, such as TrackerBounds.
PluginsContains a utility plugin, OVRPlugin, which provides built-in editor support and several core VR features. It also contains OVRGamepad.dll, which enables scripts to communicate with the Xbox gamepad on Windows, both 32-bit and 64-bit versions, and OVRGamepad.bundle for macOS.
PrefabsCollection of prefabs that provide the VR support in a scene, such as OVRCameraRig, OVRHandPrefab, and OVRPlayerController.
ResourcesCollection of shaders that you can use at runtime.
ScenesSample scenes illustrating common concepts.
ScriptsC# files that tie the VR framework and Unity components together.
ShadersCollection of shaders that you can use during development.
TexturesImage assets required by some script components.
ThirdPartyCollection of third-party APIs.

Prefabs

In Unity, prefabs are reusable game objects, such as 3D shapes, lights, audio, or camera. The Oculus Integration package contains several prefabs that facilitates you with essential VR features. To use these prefabs, drag and drop them into your scene. The Assets/Oculus/VR/Prefabs/ folder includes:

  • OVRCameraRig: A custom VR camera that optimizes rendering for a stereoscopic display on the Oculus device. It provides access to OVRManager, which is an interface to the VR hardware.
  • OVRPlayerController: Allows the player to move around in the vitual environment.It includes components and child objects that are necessary for 3D control. It includes OVRCameraRig prefab to serve as the VR camera and is attached to a character controller.
  • OVRCubemapCaptureProbe: Captures a static 360 screenshot of your app from the perspective of your scene camera, while the app is running. You lets you capture the screenshot at a specific time after launch, on a specific key press, or with the use of the OVRCubemapCapture.TriggerCubemapCapture static function.
  • OVRHandPrefab: Implements hands as input affordance.

Oculus Scripts and Scenes

The Oculus Integration package contains scripts that assist with the development and a handful of illustrative scenes that implement reusable game components.

Scripts are located in the Assets/OVR/Scripts/ and Assets/OVR/Scripts/Util folder. The following list of scripts are available for the app development. The ones that are not intended for use are omitted from the list.

Scripts available in the Assets/OVR/Scripts/ folder:

ScriptDescription
OVRBoundary.csProvides access to the Oculus boundary system
OVRHaptics.csProvides haptic feedback on the tracked controller
OVRInput.csProvides a unififed input system for the Oculus controllers and gamepads
OVROverlay.csAdd this script to an object with an optional mesh primitive rendered as a TimeWarp overlay instead by drawing it into the eye buffer.

Scripts available in the Assets/VR/Scripts/Util folder:

ScriptDescription
OVRGrabber.csAllows grabbing and throwing of objects by using Oculus Touch controllers.
OVRGrabbable.csAttaches to objects to allow them to be grabbed and thrown with the Oculus controllers.
OVRChromaticAberration.csAllows you to toggle aberration correction with a gamepad button press.
OVRModeParms.csLogs when the app enters power save mode and allows you to a low-power CPU/GPU level with a button press.
OVRMonoscopic.csAllows you to toggle monoscopic rendering with a gamepad button press.
OVRResetOrientation.csAllows you to reset VR input tracking with a gamepad button press.
OVRWaitCursor.csRotates the cursor at a given speed.

Scenes available in the Assets/VR/Scenes/Util folder:

SceneSetup
TrivialOne cube and a plain Unity camera. If this scene fails to render normally, it means that the Unity’s VR support is not functioning as intended.
CubesA 3D array of cubes and OVRCameraRig.
RoomA cubic room from six cubes enclosing OVRPlayerController. Includes the scripts such as OVRGrabber.cs and OVRGrabbable.cs to pick up cubes with the Oculus Touch controllers.

For more information about scripting reference, go to Oculus Scripting Reference for Unity. Undocumented scripts may be considered internal, and you should not modify them. For detailed samples including scripts and assets that you may reuse in your own apps, go to Unity Sample Framework.