NOTE: CognitiveVR has been rebranded to Cognitive3D. Code references, methods, menus, and variables remain untouched.


General Debugging

On the cognitiveVR_Manager prefab, there is an 'Enable Logging' checkbox to help log more information from cognitiveVR components.

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

This will open the settings window again so you can select your SDK.


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

Polygons everywhere!


  • The rectangular roomscale boundary mesh created by SteamVR sometimes causes issue with exporting the scene from Unity
  • When exporting, make sure you do not export this mesh. Or temporarily disable the [CameraRig] gameobject while you are exporting
  • Be careful with any procedurally generated meshes in your scene!

Some meshes are not exported

  • The Scene Export settings will only export Static gameobjects by default. This can be set with the 'Export Static Meshes Only' option
  • Minimum Export Size allows you to skip exporting small meshes that are not significant to your scene. If some of your meshes are not being exported, it is likely they are below this size threshold. Try lowering this value.
  • Exporting Skinned Mesh Renderers requires SDK version 0.6.2 or later

The export/upload process fails

  • There have been many changes to this process in version 0.5 of the SDK. If you are experiencing any issues with exporting/uploading scenes, please contact us using Intercom (the blue speech bubble in the bottom right).

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 SceneKeySettings in the CognitiveVR_Preferences asset.

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.CognitiveVR_Manager.SendPlayerRecording(); will send player data to SceneExplorer

Gaze points are a slightly off from where the player is looking

  • This is a known issue with Gamma colourspace. If you need precise gaze points, Linear colourspace is more accurate. This can be set in Edit>Project Settings>Player under 'Other Settings'.

linear colorspace

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.

For example: Try it on the Kitchen Demo

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

Tuning Variable in wrong format

By default, the ExitPoll searches for a Tuning Variable called ExitPollQuestion (case sensitive). This can be modified on the ExitPoll prefab. The value of this variable should be "yourtitlehere|yourquestionhere" without quotes.

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");


Make sure the LayerMask is correctly configured on the ExitPoll prefab. 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.

In some cases, it may be easier to Initialize the ExitPoll Panel at a known point. This will NOT check collision

Vector3 playerPosition = PlayerCharacter.transform.position + PlayerCharacter.transform.forward*5;
CognitiveVR.ExitPollPanel.Initialize(action, playerPosition);