5 February 2021

Week 4 : Setup of a basic scene for the Oculus Quest

Structure

This tutorial is structured as follow :

Requirements

This tutorial requires the following items :

Setup of the Oculus Quest

Initialization

N.B. : This step is already done by TAs thus you can skip this section.

In order to setup an Oculus Quest, you need to install on your smartphone the Oculus application. You can download this application directly from the PlayStore or the AppStore.

From this application you need to pair the Oculus Quest. Once the paring done you need to follow the tutorial until the end to be able to use the Oculus Quest.

Enable developer mode

N.B. : This step is already done by TAs thus you can skip this section.

To enable the Developer mode you must select, from the Oculus application on the smartphone, your headset in the list of paired devices and click on More settings, Developer Mode and slide the slider to toggle the option.

N.B. : You have to register on the Oculus Developer Program to be able to enabled the Developer Mode of your Oculus Quest / Oculus Quest 2.

Pair the device with the computer

With the developer mode enabled, connect the Oculus Quest / Oculus Quest 2 to your computer.

You can make sure that the USB connection is working fine by executing the following command :

adb devices

The first time your device should not recognize your computer :

Untrusted Computer

Thus you need to recognize the computer from within the Oculus Quest / Oculus Quest 2.

N.B. : To avoid to iterate this task each time you connect your device to your computer you can check the option to keep the computer in the list of authorized devices.

N.B. : If the device does not show up in the list, you can try to unplug it and re-plug it. Also please make sure the cable you use is a data cable and not just a power cable. For instance you can try to retrieve pictures from your smartphone using the same cable to see if the cable supports data transfer. Finally, you can also install specific drivers available on the following link if the computer still struggles to list the device : Oculus ADB Drivers

Once this operation performed, your device should no longer appear as unauthorized :

Trusted Computer

Select Always trust and then Accept to allows your computer to debug your device.

Your device will now recognize your computer.

Create the project

From the Unity Hub, create a new project, select 3D template, give a name to the project and then validate :

Create empty project

Chose Unity template

Versioning

A good practice is to keep a track of the evolution of your project. This allows rollbacks in case you accidentally deleted an important file or to understand why after a simple change of a class name followed by a desperate Ctrl + Z your project doesn’t work anymore.

In this section we will mainly focus on git.

git overview

As it is important to keep this baseline of your blank project safe (e.g. you want to restart from scratch but don’t want to redo the boring configuration of the project settings) you can create a commit. This create a snapshot of the files of your project repository into an history you can access anytime you want. This is why versioning a project is really important (mandatory).

Furthermore, git is a really convenient tool to share code with colleagues using a remote repository (i.e. server such as https://github.com or a gitlab such as the one from the EPFL you can access under https://gitlab.epfl.ch)

You can install git on your machine by following the documentation available here : https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

For those preferring visual interfaces to track the history you can complete the installation of git with one of the gui (Graphical User Interface) available here : https://git-scm.com/downloads/guis

For Windows users I recommend GitExtensions available from : https://gitextensions.github.io/ and providing such king of interface :

GitExtensions

Project repository initialization

Once installed and configured (i.e. mainly the setting of the username and the email in git’s global config) you can initialize your project repository by typing in a shell within the current project repository :

git init .

You should also add the default .gitignore file into the root of the project repository from : https://raw.githubusercontent.com/github/gitignore/master/Unity.gitignore to avoid tracking temporary files :

curl https://raw.githubusercontent.com/github/gitignore/master/Unity.gitignore -o .gitignore

You can now create a first commit (i.e. snapshot of your project state) with the following commands :

# Tell git we want to include changes from all files since the last commit in our snapshot
# without the ones described in the .gitignore files
git add .

# Create the snapshot with the label "Initialize this project"
git commit -m "Initialize this project with a blank Unity3d project"

In order to easily retrieve this commit latter you can add a tag on it with this command :

# Tell git we want to tag this commit as "blank_project"
git tag blank_project -a -m "Blank Unity3d project"

This will allow to rollback to this commit using the following command.

Important ! : This command will override all pending changes non committed : thus non committed changes will be deleted !

# Tell git we want to get files from the commit tagged "blank_project" and that we want to override non committed changes
git checkout blank_project -f

rather than searching for it and copy pasting it’s hash using git log.

Remote repository

The EPFL offers a gitlab instance allowing student and collaborators to store your code on it’s servers. You can login to https://gitlab.epfl.ch in order to create your remote repository attached to your Gaspar account.

ssh authentication

To skip authentication each time you want to connect git to the remote repository you can use an authentication based on a public ssh key.

Creating a couple of private and public key

If you don’t already have a pair of public / private key, i.e. that

ls ~/.ssh/

does not contain id_rsa and id_rsa.pub, you can create such a pair using the following command :

ssh-keygen

and then press enter to validate each steps.

Important ! : The content of id_rsa.pub can be made public but you must not provide the content of id_rsa to anyone as this file is your private key and anyone having this key is considered as you from a computer point of view.

Adding public key to the EPFL’s gitlab

To authenticate your computer on the EPFL’s server you need to navigate to your profile setting section :

Profile settings

Navigate to the SSH Key section and copy paste the content of the file ~/.ssh/id_rsa.pub to the Key field of the webpage.

Set ssh key

You can print the content of the file ~/.ssh/id_rsa.pub using the command :

cat ~/.ssh/id_rsa.pub

Once copy pasted you just have to click on Add key to save your key.

From now, you won’t have to use anymore your Gaspar credentials to connect git to the EPFL’s gitlab.

Creating a remote repository

Now, you will have to create a new project :

Create new project

Then select a Blank project among the proposed templates :

Select project template

Then set the project’s name, description and ensure that the Visibility Level is set to Private as your project is confidential :

Create project

Once created you should be automatically redirected to a page like this :

Project created

Then you can add the remote repository to your local project using the following command than you can copy paste from the webpage :

git remote add origin git@gitlab.epfl.ch:username/projectname.git

Finally you can push your changes to the remote repository using the following command :

git push -u origin --all
git push -u origin --tags

N.B. : This step needs to be performed each time you want to update the remote repository with your local changes.

Once this step validated, you should be able to see on the EPFL’s gitlab website the content of your project repository when you refresh the webpage.

Collaboration

To collaborate with your comrades on this project you can shared one repository and use merge/pull requests.

In this case, one of the student must create the project repository as explained in the creating a remote repository section and navigate to the Members section to invite his comrades with the minimal grade of Reporter.

In this approach, the main idea is to keep the branch master always stable. Thus, the implementation of new features in done in dedicated sub-branches.

Once the feature is implemented and tested, the person in charge of this feature (or branch as there is one branch per feature and one feature per branch) will launch a merge (gitlab) / pull (github) request to import the added value from the development branch to the stable master branch.

The procedure to create such requests is described in details here : https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html

And use cases are described here : https://gitlab.epfl.ch/help/user/project/merge_requests/index.md

An important thing to keep in mind is to design to the structure of the application before implementing it.

Indeed, less links between two features means less risks of conflicts during the merge of these two features !

N.B. : Merging scenes using git is complex hence it is better to only have one member editing a scene at a time.

Configuring a project for the Oculus Quest / Oculus Quest 2

Create new branch

As just explained before, we can create a new branch to commit our changes while we are not ready to integrate the tested changes into the master branch :

git checkout -b edit_build_config

Edit build settings

As we want our project to run on the Oculus Quest, we must configure the Build Setting as by default the targeted platform is Desktop.

To edit these settings, from the File menu on the top bar, click on Build Settings… :

Unity Build Settings

From this menu click on Android and then click on Switch Platform :

Select Target Platform

Click on Add Open Scenes to add opened scenes to the build :

Add scenes

Then select the correct target device in the list :

Select Oculus Quest in the list

N.B. : The device ID should match the one you observed from the command adb devices of the pairing section.

Edit player settings

Now you need to enter in Player Settings… :

Entering player settings

Project names

In the Player section, edit the Company Name with the ID of your group and the Product Name with the name you want to give to your Game :

Edit names

adb level configuration

To ensure a cross compatibility between the old and new gen of the Oculus Quest you need to enforce the level of the adb API and select the Android 7.1 ‘Nougat’(API Level 25) version in the Other Settings section :

Other Settings

Edit adb API

XR Plugin Setup

In the XR Plugin Management tab click on Install XR Plugin Management :

Install XR Plugin

Then under the android tab, click on Oculus :

Install Oculus XR Plugin

Now you can close the player settings window.

Commit and merge with master

Now that we are satisfied of your configuration which works we can commit our changes

# Commit changes on the development branch
git add .
git commit -m "Edit player settings of the project"

# Merge with master branch
git checkout master
git merge edit_build_config --no-ff
git tag player_setting_ok -a -m "Player setting defined for the Oculus Quest"

# Push changes
git push --all
git push --tags

N.B. : If you clone and add a project already prepared for the Oculus Quest from the remote repository :

You should change immediately the targetted platform in the Unity Hub interface rather than opening the project.

This will prevent Unity to pre-build some elements of the game that would be recompiled a second time for the Android platform which consumes a lot of time.

If you missed this step, you just need to go back to the Build Setting pannel and re-change the targetted platform to Android and wait a second time.

Import Oculus Integration

Create a new branch

As previously, we can create a new branch :

git checkout -b import_oculus_integration

Import the package

In order to take advantage of the Oculus Framework you need to navigate to the Oculus Intergration Plugin webpage here using a web browser and click on Open in Unity

N.B. : You must login using your Unity credentials to install the plugin.

Oculus Asset

Using firefox, you may be prompted to allow to open the link and to select which app is supposed to open the link :

Allow Opening Link

Chose Program

This will open within Unity the Package Manager on the Oculus Integration module :

Import Oculus Asset

Once the download completed click on Import to start the import of the plugin into this project :

Import Oculus Asset

Then import all files :

Import Oculus Asset Files

N.B. : Although you might skip many files for the import, we recommend you to import all of them as some sample might be useful later.

N.B. : During this process you might be asked to update some components, in such a case you can accept those updates and the associated restart :

Update Oculus

Update Oculus Restart

Update Spatializer

Update Oculus Restart

N.B. : This operation might take a while.

Commit and merge with master

Once the import finished without issue we can merge our branch with the master one :

# Commit changes on the development branch
git add .
git commit -m "Import the Oculus Integration package in the project"

# Merge with master branch
git checkout master
git merge import_oculus_integration --no-ff
git tag oculus_integration_package_imported -a -m "Oculus Integration package correctly imported"

# Push changes
git push --all
git push --tags

Composing the first scene

Create a new branch

git checkout -b integrating_player_rig

Edit the scene

You can already start by removing the Main Camera from the SampleScene :

Remove camera

Then you can create a terrain in the scene :

Create terrain

Adjust it’s position in the Inspector and set it’s position to X:-500; Y:0; Z:-500 :

Move terrain location

Then you can add an element in the scene you can use as a referential such as a cube :

Create a cube

And adjust it’s position to X:2; Y:0.5; Z:2 for instance :

Move the cube

Then fetch from the folder ./Assets/Oculus/VR/Prefabs the prefab OVRPlayerController.prefab and slide it into the hierarchy of the scene :

Select Player Rig

Drag Player Rig

To attach a 3D model of the controller to the scene select and drag the OVRControllerPrefab.prefab to both the LeftHandAnchor and the RightHandAnchor :

Select the controller prefab

Drag the controller prefab to the left hand

Drag the controller prefab to the right hand

And finally, change the values of the Controller field in the inspector to the corresponding type (i.e. L Touch and R Touch) :

Set left touch controller

Set right touch controller

Now your sample scene is ready to be compiled and pushed to the Oculus Quest / Oculus Quest 2.

Build and Push the game to the Oculus Quest

To build and push the game to the Oculus Quest / Oculus Quest 2 you need to click on the File menu and Build And Run or, more quickly, using the Ctrl + Shift + B shortcut :

Build and run

Then you must specify where you want to save the build. In our case we will create the ./Build/ folder and store the build under ./Build/build.apk

Save build

Save build

Once you click on Save Unity will try to build your project, to push it directly onto the device and it will launch your game in the HMD.

N.B. : If the game is not automatically loaded you can launch it manually in the Oculus Quests’ Library under the Unknown Sources section.

N.B. : From now you can automatically build and run the game using the shortcut Ctrl + B or by clicking on File and then Build and Run.

This should be the kind of result you might expect :

N.B. : Controllers’ color change between the Oculus Quest and the Oculus Quest 2.

At this stage, your project should works and represents an interesting milestone : is a perfect time to commit your changes. Thus you can run to save a snapshot of your project and merge changes with the master branch :

# Commit changes on the development branch
git add .
git commit -m "Edit the scene to add the Player Rig"

# Merge with master branch
git checkout master
git merge integrating_player_rig --no-ff
git tag player_rig_set -a -m "Player rig set in the scene"

# Push changes
git push --all
git push --tags

Debugging tool

logcat

logcat is a tool from the Android SDK allowing developers to access the logs from the device trough adb. It’s basic call displays logs without any filters and logs from other process ( application, the OS, etc. ) may appears :

adb logcat

N.B. : You can stop this process by pressing Ctrl-C in the shell.

Filters are implemented in this tool to filter log entries to : a level and/or an application. These filters are supplied as a command tag with the following syntax :

adb logcat <application>:<log_level>

Available log levels are the following one (ordered by priority) :

Log level Description
v Verbose
D Debug
I Info
W Warning
E Error
F Fatal
S Silent (highest priority, on which nothing is ever printed)

Thus to retrieve only logs with a level above the Warning level (included) for a Unity application we can use the following command (Unity : Warning and above, others : Silent) :

adb logcat Unity:W *:S

N.B.1 : This might be useful as Unity build are quite verbose by default as we will see just after.

N.B.2 : For MacOS users, some quotes might be required:

adb logcat "Unity:W *:S"

More details on logcat are available here : LogCat and here : Oculus LogCat

Project settings

To get more details for each log entry we need to enable the Development Build allowing us to enable the Script Debugging in the build settings of our project :

Enable debug flags

Without these options, details such as the script raising the exception, or the line number might be missing in the logs.

Example

In order try this tool, we can start by adding an empty GameObject in the hierarchy :

Creating new game object

Then we can search for the name of the script we want to create to show the option New script :

Search for script name

And finally Create and Add :

Create script

Then you can double click on the script to launch the script editor :

Double click on the script to launch Visual Studio

Then you can copy and paste this content to the file :

using UnityEngine;

public class HoneyPot : MonoBehaviour {

	void Start () {

		Debug.Log( "This is just a simple log lost among others :'-( " );

		Debug.LogWarning( "This is a warning way easier to find :-) " );

		int an_int = 123456;
		Debug.LogWarning( an_int );

		Debug.LogError( "This is an error ;-) !" );

		int[] array = new int[5];
		array[5] = 5;   // This will raise an error

	}

}

Edit script with Visual Studio

Finally, you can push your application to the headset using the shortcut Ctrl + B.

As all these logs will appear only when the scene is launched (c.f. Unity Execution Order) you must start by manually closing the application by pressing the Oculus button on the right controller and then clicking on Quit :

Quit the application

Then, back on the computer side, start the log recording using the following command :

adb logcat Unity:I *:S

And finally, re-launch the application from the Library under Unknown Sources :

Filter Unknown Sources

Launch the Game

N.B. : The name of the game corresponds to the name you entered in the build settings section.

After few seconds your log will be filled with a lot of data :

--------- beginning of system
--------- beginning of tracking
--------- beginning of main
02-06 00:25:35.907 17200 17200 I Unity   : onResume
02-06 00:25:35.939 17200 17200 I Unity   : windowFocusChanged: true
02-06 00:25:35.945 17200 17223 I Unity   : MemoryManager: Using 'Dynamic Heap' Allocator.
02-06 00:25:35.975 17200 17223 I Unity   : SystemInfo CPU = ARM64 FP ASIMD AES, Cores = 3, Memory = 5838mb
02-06 00:25:35.975 17200 17223 I Unity   :
02-06 00:25:35.975 17200 17223 I Unity   : SystemInfo ARM big.LITTLE configuration: 3 big (mask: 0x70), 0 little (mask: 0x0)
02-06 00:25:35.975 17200 17223 I Unity   :
02-06 00:25:35.975 17200 17223 I Unity   : XR UsableCoreMask: 0x70
02-06 00:25:35.975 17200 17223 I Unity   :
02-06 00:25:35.976 17200 17223 I Unity   : ApplicationInfo com.MathiasDELAHAYE.MyFirstGame version 0.1 build 07411161-9ac5-4833-af79-919b27d9fbe4
02-06 00:25:35.976 17200 17223 I Unity   :
02-06 00:25:35.976 17200 17223 I Unity   : Built from '2020.2/release' branch, Version '2020.2.2f1 (068178b99f32)', Build type 'Development', Scripting Backend 'mono', CPU 'armeabi-v7a', Stripping 'Disabled'
02-06 00:25:35.976 17200 17223 I Unity   :
02-06 00:25:36.095 17200 17223 I Unity   : Company Name: Mathias DELAHAYE
02-06 00:25:36.095 17200 17223 I Unity   : Product Name: My First Game
02-06 00:25:36.773 17200 17223 I Unity   : XRGeneral Settings awakening...
02-06 00:25:36.773 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:36.773 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:36.773 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:36.773 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:36.773 17200 17223 I Unity   : UnityEngine.XR.Management.XRGeneralSettings:Awake () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Library/PackageCache/com.unity.xr.management@3.2.17/Runtime/XRGeneralSettings.cs:91)
02-06 00:25:36.773 17200 17223 I Unity   :
02-06 00:25:36.773 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:36.773 17200 17223 I Unity   :
02-06 00:25:42.266 17200 17223 E Unity   : DllNotFoundException: AudioPluginOculusSpatializer
02-06 00:25:42.266 17200 17223 E Unity   :   at (wrapper managed-to-native) ONSPAudioSource.OSP_SetGlobalVoiceLimit(int)
02-06 00:25:42.266 17200 17223 E Unity   :   at ONSPAudioSource.OnBeforeSceneLoadRuntimeMethod () [0x00001] in C:\Users\mathias\Desktop\unity_projects\cs444_project__mathias_delahaye\Assets\Oculus\Spatializer\scripts\ONSPAudioSource.cs:41
02-06 00:25:42.266 17200 17223 E Unity   :
02-06 00:25:42.313 17200 17223 I Unity   : Unity v2020.2.2f1, Oculus Utilities v1.55.1, OVRPlugin v1.55.1, SDK v1.1.40.0.
02-06 00:25:42.313 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.313 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.313 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.313 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:42.313 17200 17223 I Unity   : OVRManager:InitOVRManager () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1248)
02-06 00:25:42.313 17200 17223 I Unity   : OVRManager:Awake () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1409)
02-06 00:25:42.313 17200 17223 I Unity   :
02-06 00:25:42.313 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.313 17200 17223 I Unity   :
02-06 00:25:42.337 17200 17223 I Unity   : SystemHeadset Oculus_Quest_2, API VRAPI
02-06 00:25:42.337 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.337 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.337 17200 17223 I Unity   : UnityEngine.Logger:LogFormat (UnityEngine.LogType,string,object[])
02-06 00:25:42.337 17200 17223 I Unity   : UnityEngine.Debug:LogFormat (string,object[])
02-06 00:25:42.337 17200 17223 I Unity   : OVRManager:InitOVRManager () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1253)
02-06 00:25:42.337 17200 17223 I Unity   : OVRManager:Awake () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1409)
02-06 00:25:42.337 17200 17223 I Unity   :
02-06 00:25:42.337 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.337 17200 17223 I Unity   :
02-06 00:25:42.353 17200 17223 I Unity   : OVRPlugin.Media initialized
02-06 00:25:42.353 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.353 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.353 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.353 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:42.353 17200 17223 I Unity   : OVRManager:StaticInitializeMixedRealityCapture (OVRManager) (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1993)
02-06 00:25:42.353 17200 17223 I Unity   : OVRManager:InitOVRManager () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1350)
02-06 00:25:42.353 17200 17223 I Unity   : OVRManager:Awake () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1409)
02-06 00:25:42.353 17200 17223 I Unity   :
02-06 00:25:42.353 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.353 17200 17223 I Unity   :
02-06 00:25:42.357 17200 17223 I Unity   : [MRC] SetMrcAudioSampleRate(48000)
02-06 00:25:42.357 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.357 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.357 17200 17223 I Unity   : UnityEngine.Logger:LogFormat (UnityEngine.LogType,string,object[])
02-06 00:25:42.357 17200 17223 I Unity   : UnityEngine.Debug:LogFormat (string,object[])
02-06 00:25:42.357 17200 17223 I Unity   : OVRManager:StaticInitializeMixedRealityCapture (OVRManager) (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:2000)
02-06 00:25:42.357 17200 17223 I Unity   : OVRManager:InitOVRManager () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1350)
02-06 00:25:42.357 17200 17223 I Unity   : OVRManager:Awake () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1409)
02-06 00:25:42.357 17200 17223 I Unity   :
02-06 00:25:42.357 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.357 17200 17223 I Unity   :
02-06 00:25:42.361 17200 17223 I Unity   : [MRC] Active InputVideoBufferType:TextureHandle
02-06 00:25:42.361 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.361 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.361 17200 17223 I Unity   : UnityEngine.Logger:LogFormat (UnityEngine.LogType,string,object[])
02-06 00:25:42.361 17200 17223 I Unity   : UnityEngine.Debug:LogFormat (string,object[])
02-06 00:25:42.361 17200 17223 I Unity   : OVRManager:StaticInitializeMixedRealityCapture (OVRManager) (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:2004)
02-06 00:25:42.361 17200 17223 I Unity   : OVRManager:InitOVRManager () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1350)
02-06 00:25:42.361 17200 17223 I Unity   : OVRManager:Awake () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1409)
02-06 00:25:42.361 17200 17223 I Unity   :
02-06 00:25:42.361 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.361 17200 17223 I Unity   :
02-06 00:25:42.364 17200 17223 I Unity   : [MRC] ActivateMode: Automatic
02-06 00:25:42.364 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.364 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.364 17200 17223 I Unity   : UnityEngine.Logger:LogFormat (UnityEngine.LogType,string,object[])
02-06 00:25:42.364 17200 17223 I Unity   : UnityEngine.Debug:LogFormat (string,object[])
02-06 00:25:42.364 17200 17223 I Unity   : OVRManager:StaticInitializeMixedRealityCapture (OVRManager) (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:2008)
02-06 00:25:42.364 17200 17223 I Unity   : OVRManager:InitOVRManager () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1350)
02-06 00:25:42.364 17200 17223 I Unity   : OVRManager:Awake () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1409)
02-06 00:25:42.364 17200 17223 I Unity   :
02-06 00:25:42.364 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.364 17200 17223 I Unity   :
02-06 00:25:42.403 17200 17223 I Unity   : Current display frequency 72, available frequencies [60, 72, 80, 90]
02-06 00:25:42.403 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.403 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.403 17200 17223 I Unity   : UnityEngine.Logger:LogFormat (UnityEngine.LogType,string,object[])
02-06 00:25:42.403 17200 17223 I Unity   : UnityEngine.Debug:LogFormat (string,object[])
02-06 00:25:42.403 17200 17223 I Unity   : OVRManager:InitOVRManager () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1363)
02-06 00:25:42.403 17200 17223 I Unity   : OVRManager:Awake () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1409)
02-06 00:25:42.403 17200 17223 I Unity   :
02-06 00:25:42.403 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.403 17200 17223 I Unity   :
02-06 00:25:42.449 17200 17223 I Unity   : TcpListener started. Local endpoint: 0.0.0.0:32419
02-06 00:25:42.449 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.449 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.449 17200 17223 I Unity   : UnityEngine.Logger:LogFormat (UnityEngine.LogType,string,object[])
02-06 00:25:42.449 17200 17223 I Unity   : UnityEngine.Debug:LogFormat (string,object[])
02-06 00:25:42.449 17200 17223 I Unity   : OVRNetwork/OVRNetworkTcpServer:StartListening (int) (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/Util/OVRNetwork.cs:95)
02-06 00:25:42.449 17200 17223 I Unity   : OVRSystemPerfMetrics/OVRSystemPerfMetricsTcpServer:OnEnable () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/Util/OVRSystemPerfMetrics.cs:186)
02-06 00:25:42.449 17200 17223 I Unity   : UnityEngine.GameObject:AddComponent (System.Type) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/GameObject.bindings.cs:235)
02-06 00:25:42.449 17200 17223 I Unity   : UnityEngine.GameObject:AddComponent<OVRSystemPerfMetrics/OVRSystemPerfMetricsTcpServer> () (at /Users/bokken/bu
02-06 00:25:42.450 17200 17223 I Unity   : [OVRNetworkTcpServer] Start Listening on port 32419
02-06 00:25:42.450 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.450 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.450 17200 17223 I Unity   : UnityEngine.Logger:LogFormat (UnityEngine.LogType,string,object[])
02-06 00:25:42.450 17200 17223 I Unity   : UnityEngine.Debug:LogFormat (string,object[])
02-06 00:25:42.450 17200 17223 I Unity   : OVRNetwork/OVRNetworkTcpServer:StartListening (int) (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/Util/OVRNetwork.cs:107)
02-06 00:25:42.450 17200 17223 I Unity   : OVRSystemPerfMetrics/OVRSystemPerfMetricsTcpServer:OnEnable () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/Util/OVRSystemPerfMetrics.cs:186)
02-06 00:25:42.450 17200 17223 I Unity   : UnityEngine.GameObject:AddComponent (System.Type) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/GameObject.bindings.cs:235)
02-06 00:25:42.450 17200 17223 I Unity   : UnityEngine.GameObject:AddComponent<OVRSystemPerfMetrics/OVRSystemPerfMetricsTcpServer> () (at /Users/bokken/
02-06 00:25:42.513 17200 17223 I Unity   : OVRControllerHelp: Active controller type: Quest2 for product Oculus Quest
02-06 00:25:42.513 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.513 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.513 17200 17223 I Unity   : UnityEngine.Logger:LogFormat (UnityEngine.LogType,string,object[])
02-06 00:25:42.513 17200 17223 I Unity   : UnityEngine.Debug:LogFormat (string,object[])
02-06 00:25:42.513 17200 17223 I Unity   : OVRControllerHelper:Start () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/Util/OVRControllerHelper.cs:84)
02-06 00:25:42.513 17200 17223 I Unity   :
02-06 00:25:42.513 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.513 17200 17223 I Unity   :
02-06 00:25:42.514 17200 17223 I Unity   : This is just a simple log lost among others :'-(
02-06 00:25:42.514 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.514 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.514 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.514 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:42.514 17200 17223 I Unity   : HoneyPot:Start () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/HoneyPot.cs:7)
02-06 00:25:42.514 17200 17223 I Unity   :
02-06 00:25:42.514 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.514 17200 17223 I Unity   :
02-06 00:25:42.515 17200 17223 W Unity   : This is a warning way easier to find :-)
02-06 00:25:42.515 17200 17223 W Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.515 17200 17223 W Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.515 17200 17223 W Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.515 17200 17223 W Unity   : UnityEngine.Debug:LogWarning (object)
02-06 00:25:42.515 17200 17223 W Unity   : HoneyPot:Start () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/HoneyPot.cs:9)
02-06 00:25:42.515 17200 17223 W Unity   :
02-06 00:25:42.515 17200 17223 W Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.515 17200 17223 W Unity   :
02-06 00:25:42.515 17200 17223 W Unity   : 123456
02-06 00:25:42.515 17200 17223 W Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.515 17200 17223 W Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.515 17200 17223 W Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.515 17200 17223 W Unity   : UnityEngine.Debug:LogWarning (object)
02-06 00:25:42.515 17200 17223 W Unity   : HoneyPot:Start () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/HoneyPot.cs:12)
02-06 00:25:42.515 17200 17223 W Unity   :
02-06 00:25:42.515 17200 17223 W Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.515 17200 17223 W Unity   :
02-06 00:25:42.516 17200 17223 E Unity   : This is an error ;-) !
02-06 00:25:42.516 17200 17223 E Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.516 17200 17223 E Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.516 17200 17223 E Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.516 17200 17223 E Unity   : UnityEngine.Debug:LogError (object)
02-06 00:25:42.516 17200 17223 E Unity   : HoneyPot:Start () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/HoneyPot.cs:14)
02-06 00:25:42.516 17200 17223 E Unity   :
02-06 00:25:42.516 17200 17223 E Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.516 17200 17223 E Unity   :
02-06 00:25:42.518 17200 17223 E Unity   : IndexOutOfRangeException: Index was outside the bounds of the array.
02-06 00:25:42.518 17200 17223 E Unity   :   at HoneyPot.Start () [0x0003b] in C:\Users\mathias\Desktop\unity_projects\cs444_project__mathias_delahaye\Assets\HoneyPot.cs:17
02-06 00:25:42.518 17200 17223 E Unity   :
02-06 00:25:42.518 17200 17223 I Unity   : OVRControllerHelp: Active controller type: Quest2 for product Oculus Quest
02-06 00:25:42.518 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.518 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.518 17200 17223 I Unity   : UnityEngine.Logger:LogFormat (UnityEngine.LogType,string,object[])
02-06 00:25:42.518 17200 17223 I Unity   : UnityEngine.Debug:LogFormat (string,object[])
02-06 00:25:42.518 17200 17223 I Unity   : OVRControllerHelper:Start () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/Util/OVRControllerHelper.cs:84)
02-06 00:25:42.518 17200 17223 I Unity   :
02-06 00:25:42.518 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.518 17200 17223 I Unity   :
02-06 00:25:42.594 17200 17223 I Unity   : The current MSAA level is 0, but the recommended MSAA level is 4. Switching to the recommended level.
02-06 00:25:42.594 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.594 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.594 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.594 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:42.594 17200 17223 I Unity   : OVRManager:Update () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1562)
02-06 00:25:42.594 17200 17223 I Unity   :
02-06 00:25:42.594 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.594 17200 17223 I Unity   :
02-06 00:25:42.596 17200 17223 I Unity   : [OVRManager] HMDAcquired event
02-06 00:25:42.596 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.596 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.596 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.596 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:42.596 17200 17223 I Unity   : OVRManager:Update () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1602)
02-06 00:25:42.596 17200 17223 I Unity   :
02-06 00:25:42.596 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.596 17200 17223 I Unity   :
02-06 00:25:42.598 17200 17223 I Unity   : [OVRManager] HMDMounted event
02-06 00:25:42.598 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.598 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.598 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.598 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:42.598 17200 17223 I Unity   : OVRManager:Update () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1636)
02-06 00:25:42.598 17200 17223 I Unity   :
02-06 00:25:42.598 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.598 17200 17223 I Unity   :
02-06 00:25:42.600 17200 17223 I Unity   : [OVRManager] VrFocusAcquired event
02-06 00:25:42.600 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.600 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.600 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.600 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:42.600 17200 17223 I Unity   : OVRManager:Update () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1670)
02-06 00:25:42.600 17200 17223 I Unity   :
02-06 00:25:42.600 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.600 17200 17223 I Unity   :
02-06 00:25:42.607 17200 17223 I Unity   : [OVRManager] TrackingAcquired event
02-06 00:25:42.607 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.607 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.607 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.607 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:42.607 17200 17223 I Unity   : OVRManager:Update () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1806)
02-06 00:25:42.607 17200 17223 I Unity   :
02-06 00:25:42.607 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.607 17200 17223 I Unity   :
02-06 00:25:42.610 17200 17223 I Unity   : Recenter event detected
02-06 00:25:42.610 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:42.610 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:42.610 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:42.610 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:42.610 17200 17223 I Unity   : OVRDisplay:Update () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRDisplay.cs:137)
02-06 00:25:42.610 17200 17223 I Unity   : OVRManager:Update () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1818)
02-06 00:25:42.610 17200 17223 I Unity   :
02-06 00:25:42.610 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:25:42.610 17200 17223 I Unity   :
02-06 00:25:47.881 17200 17223 I Unity   : [OVRManager] HMDUnmounted event
02-06 00:25:47.881 17200 17223 I Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:25:47.881 17200 17223 I Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:25:47.881 17200 17223 I Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:25:47.881 17200 17223 I Unity   : UnityEngine.Debug:Log (object)
02-06 00:25:47.881 17200 17223 I Unity   : OVRManager:Update () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/Oculus/VR/Scripts/OVRManager.cs:1622)
02-06 00:25:47.881 17200 17223 I Unity   :
02-06 00:25:47.881 17200 17223 I Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)

As we can see, it is a bit difficult to find our debug entries in this long list… However, if we relaunch the same application but increase the log level to Warnings and above with the following command :

adb logcat Unity:W *:S

we will obtain and output way more readable :

--------- beginning of system
--------- beginning of tracking
--------- beginning of main
02-06 00:27:07.156 17487 17510 E Unity   : DllNotFoundException: AudioPluginOculusSpatializer
02-06 00:27:07.156 17487 17510 E Unity   :   at (wrapper managed-to-native) ONSPAudioSource.OSP_SetGlobalVoiceLimit(int)
02-06 00:27:07.156 17487 17510 E Unity   :   at ONSPAudioSource.OnBeforeSceneLoadRuntimeMethod () [0x00001] in C:\Users\mathias\Desktop\unity_projects\cs444_project__mathias_delahaye\Assets\Oculus\Spatializer\scripts\ONSPAudioSource.cs:41
02-06 00:27:07.156 17487 17510 E Unity   :
02-06 00:27:07.368 17487 17510 W Unity   : This is a warning way easier to find :-)
02-06 00:27:07.368 17487 17510 W Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:27:07.368 17487 17510 W Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:27:07.368 17487 17510 W Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:27:07.368 17487 17510 W Unity   : UnityEngine.Debug:LogWarning (object)
02-06 00:27:07.368 17487 17510 W Unity   : HoneyPot:Start () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/HoneyPot.cs:9)
02-06 00:27:07.368 17487 17510 W Unity   :
02-06 00:27:07.368 17487 17510 W Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:27:07.368 17487 17510 W Unity   :
02-06 00:27:07.369 17487 17510 W Unity   : 123456
02-06 00:27:07.369 17487 17510 W Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:27:07.369 17487 17510 W Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:27:07.369 17487 17510 W Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:27:07.369 17487 17510 W Unity   : UnityEngine.Debug:LogWarning (object)
02-06 00:27:07.369 17487 17510 W Unity   : HoneyPot:Start () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/HoneyPot.cs:12)
02-06 00:27:07.369 17487 17510 W Unity   :
02-06 00:27:07.369 17487 17510 W Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:27:07.369 17487 17510 W Unity   :
02-06 00:27:07.369 17487 17510 E Unity   : This is an error ;-) !
02-06 00:27:07.369 17487 17510 E Unity   : UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
02-06 00:27:07.369 17487 17510 E Unity   : UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
02-06 00:27:07.369 17487 17510 E Unity   : UnityEngine.Logger:Log (UnityEngine.LogType,object)
02-06 00:27:07.369 17487 17510 E Unity   : UnityEngine.Debug:LogError (object)
02-06 00:27:07.369 17487 17510 E Unity   : HoneyPot:Start () (at C:/Users/mathias/Desktop/unity_projects/cs444_project__mathias_delahaye/Assets/HoneyPot.cs:14)
02-06 00:27:07.369 17487 17510 E Unity   :
02-06 00:27:07.369 17487 17510 E Unity   : (Filename: /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs Line: 37)
02-06 00:27:07.369 17487 17510 E Unity   :
02-06 00:27:07.371 17487 17510 E Unity   : IndexOutOfRangeException: Index was outside the bounds of the array.
02-06 00:27:07.371 17487 17510 E Unity   :   at HoneyPot.Start () [0x0003b] in C:\Users\mathias\Desktop\unity_projects\cs444_project__mathias_delahaye\Assets\HoneyPot.cs:17

N.B. : The letter displayed before each log entry matches the log level described in the table in the logcat section.

Versioning

As this section was just an illustration and doesn’t provide any added value to the project we can either discard the changes with :

git reset --hard

Or commit the changes into a branch we will never merge with master :

# Create new branch
git checkout -b test_adb

# Commit
git add .
git commit -m "Add sample script to test adb logcat"

And then rollback to the master branch :

git checkout master -f

Recording Video

Streaming to VLC

You can stream the video from the screens of the Oculus Quest / Oculus Quest 2 to your computer and forward it to vlc in order to mirror in live the HMD view. You can use the following command (assuming that both vlc and adb are in the $PATH) :

adb exec-out "while true; do screenrecord --bit-rate=20m --output-format=h264 -; done" | vlc --demux h264 --h264-fps=60 --clock-jitter=0 -

N.B. : To exit this process, just press Ctrl-C

N.B. : screenrecord can accept the following options : --size <width>x<height> to set the size of the video (default = device resolution), --bit-rate <bitrate> to tweak the quality, --time-limit <time_limit> to set a duration length.

More details are available here Oculus - Wired Mirroring with ADB

Recording and Streaming Display

Record the video on the device and pull it back after

This method provide then best stability and image quality.

# Record 10s of video on the device
adb shell screenrecord /sdcard/screen_video.mp4 --bit-rate=20m --time-limit 10s

# OR

# Record a video from the HMD until the user press Ctrl-C
adb shell screenrecord /sdcard/screen_video.mp4 --bit-rate=20m

# Retrieve video in the current folder of the computer
adb pull /sdcard/screen_video.mp4

# Delete the video from the HMD
adb shell rm /sdcard/screen_video.mp4

Record the video directly on the computer

This method can provide bad quality video and is less reliable.

# Record 10s of video from the HMD
adb exec-out "while true; do screenrecord --bit-rate=20m --output-format=h264 -; done" | vlc --no-repeat --no-loop -I dummy --demux h264 --h264-fps=60 --clock-jitter=0 --sout='#transcode{vcodec=h264,deinterlace}:std{access=file, mux=ps, dst="screen_video.mpg"}' -

N.B. : To exit this process, just press Ctrl-C

Screenshot

You can take a screen shot of the content of the HMD screen directly on your computer using the following command :

# Save a screenshot of the HMD to the file screenshot.png in the computer's current folder
adb exec-out screencap -p > screenshot.png

Please feel free to use the forum if you have a question or want to give your feedback on this hands-on !