General Debugging

Click cognitive3D->Advanced Options to select the CognitiveVR Prefernces. The Enable Logging checkbox will log more information from cognitiveVR components. This should be disabled in a release build.

Selecting your SDK

In the Settings window, you can select an SDK for a VR plugin you are using. This will set a scripting define symbol to enable code. If you do not have the SDK in your project or it is not the correct version, you may have compile errors. To manually clear the SDK settings, you can use Edit->Project Settings->Player. In Other Settings, clear any symbols that begin with CVR_.

scripting define symbols


Some textures don't appear correctly on

  • This is a known bug. It is related to special characters in the names of texture and/or materials in Unity
  • ä, á â, ã and other special characters may not correctly keep their references when using Blender to decimate your scene
  • Replacing these characters in these texture/materials names in Unity with ascii characters should fix this issue. After replacing these characters, make sure to export your scene again
  • Alternatively, modifying the exported .mtl and .obj files can fix the references to these textures and/or materials. Only try this if you are familiar with the .mtl and .obj file formats

Do I really need Blender?

  • Technically no; however, reducing your scene's complexity makes the scene load much faster when viewed on You could use other methods and programs to simplify your scene, such as Simplygon

Some meshes are not exported

  • The defaults presented in the cognitive3D->Scene Setup wizard should be fine, but you can fine tune the export settings in cognitive3D->Advanced Options. Make sure the Minimum Export Size is low enough and that Export Static Meshes Only is disabled

Player Position and Gaze Tracking

Main Camera

  • It is expected that the player's hmd will use a camera tagged MainCamera. This is used as a fallback when a camera cannot be found in SteamVR [CameraRig] or Oculus OVRCameraRig

No data uploaded to Scene Explorer

There are a few common reasons data from your play session might not display on

No CognitiveVR_Manager

Make sure there is a CognitiveVR_Manager in your scene.

The scene does not have a Scene Key associated with it

The Scene Key is the ID used by SceneExplorer to send data to the correct scene. Without a scene key, data is not collected and not uploaded. This is automatically set when you export your scene. See Exporting Scene. You can also see your Scene Settings from the cognitive3D->Advanced Options menu.

Application is closed unexpectedly

Unity's implementation of OnQuit does not work as expected when the process is ended without calling Application.Quit. This also doesn't work as expected on mobile. Reliable ways of sending data to SceneExplorer are:

  • Enable Send Data on Level Load in Tracker Options Window
  • Call CognitiveVR.Core.SendDataEvent(); will send player data to SceneExplorer

Gaze points aren't visible in

Debug view at

Enable debug view in At the end of the URL for your scene, add ?debug to view gaze points as though they were events.

Gaze points aren't appearing on Dynamic Objects

  • Make sure 'Track Gaze on Dynamic Object' is enabled. This will override ReleaseId settings so the gaze is unique to the object.
  • There is a known issue with calculating the gaze position and rigidbodies. Do not set a DynamicObject to be a child of a Rigidbody or the gaze position will be incorrect. A Rigidbody component on the same GameObject as the DynamicObject component is fine, though.

Additional Requirements for your HMD

If you are using the Fove or Pupil Labs headsets, there are additional steps you may need to take before collecting data. See this page for details.

Valve Lab Renderer

There is a known issue with the Valve Lab Renderer. If you are using these shaders, you should add Fallback "Standard" after the SubShader.

Shader "Valve/vr_standard"
        //properties are here
            //forward + lighting
            //meta pass

    Fallback "Standard" //Add this here!
    CustomEditor "ValveShaderGUI"

Exit Poll

Exitpoll panel never appears

Not spawning from code

This code will log when the ExitPoll Panel is created and the ExitPoll is closed. There may be other issues, but this sanity check can be helpful

    IEnumerator Start()
        yield return new WaitForSeconds(6);
        Debug.Log("Initialize ExitPoll");

        System.Action action = () => Debug.Log("ExitPoll Closed");


Collision is off by default, but make sure the LayerMask is correctly configured when the ExitPoll is spawned. If you are using the Oculus Utilities OVRPlayerCharacter prefab, it could be colliding with the CharacterController collider. It may also be colliding with the player's hands or held items.

Local Data Cache

Where are is the cache located?

The local data cache is in the c3dlocal folder in Application.PersistentDataPath. This is different for each platform. This has been tested on Windows 10 and Android.

When is data read from the cache?

The data from the cache is read and removed when you have an internet connection and while running the application. A cvr-request-time response header is checked to determine if the device is connected to the internet and not blocked by a capture portal.

Manually sending data from Local Data Cache

You can manually send data from the cache using the following code:

CognitiveVR.NetworkManager.UploadAllLocalData(() => Debug.Log("complete"), () => Debug.Log("failed"));

This will quickly try to upload all outstanding requests and invoke the callbacks when it is completed. This will fail if the device is offline or if Local Storage is disabled.