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


Step 1: Setup the SDK plugin in Unreal

If you have not already done so, please install the plugin as explained here Get Started.

Step 2: Install Blender

Blender is used to reduce the geometry of the scene. This can dramatically reduce the load time of your scene at Blender is free and open source.

Download Blender

Simplygon is another tool to reduce your scene's geometry, but we do not automate and support this at this time.

Step 3: Export the scene

This process and interface will change in upcoming patches.

Open Project Settings... and scroll to the Cognitive3D settings near the bottom.

settings menu

Select Blender

Use this popup will tell Unreal where the Blender.exe is located. If Blender was installed into Program Files, this may be completed automatically.

Select Export Meshes

Press this button to select all static mesh objects. There are options above, but the defaults should be fine for most projects.

  • Min Polygons sets the lower threshold for meshes with few than this many faces. By default, meshes with <500 polygons are not reduced
  • Max Polygons sets the upper threshold for meshes with more than this many faces. By default, meshes with >20000 polygons are reduced to 10%. Between these two thresholds is a linear scale of the amount the meshes will be reduced
  • Static Only selects only non-movable actors. This is usually the correct behaviour
  • Increase the Minimum Size option to ignore any small detail meshes you might have
  • Maximum Size allows you to ignore any massive meshes you have, such as skyboxes
  • Texture Resize Factor reduces the resolution of your textures. 2 reduces the resolution to half. 4 reduces the resolution to a quarter. This should be a power of two greater than zero.

Select any other meshes you wish to export. Text meshes are known to not work. See Troubleshooting if you need to export Geometry Brushes (BSP).

Export Selected

Change the export option to .obj and select a new empty folder. Press YES to export materials.

save materials

You should have a folder with

export original

Export Transparent Textures

This will export diffuse textures used in materials that support transparency. Specifically, this will export textures connected to the BaseColor property in materials NOT set to Opaque Blend Mode. This functionality may be merged into the Export Selected and Export All buttons eventually.

Reduce Meshes

This will run a python script within Blender to reduce the geometry. This will output a smaller version of the obj.

export cleanup

Reduce Textures

This will also run a python script in Blender. It will downsize textures and save them as pngs.

This script will also remove the folders with the _old suffix so these original assets are not uploaded to SceneExplorer

export final

Upload Scene

This step will take all the files in the Export Directory and upload them to SceneExplorer. This process may take some time. When it is complete, there should be a Log in the Unreal Editor Console indicating a success.

upload success

Copy this into the SceneData array in Project Settings. This value is the SceneKey and identifies where to send collected user data.

upload response settings

Step 4: Attach Player Tracker

The Player Tracker records where the HMD is positioned and the point the HMD is looking towards.

  • Add the PlayerTracker component as a child actor to your character's camera

player tracker

Step 5: Send Data

Transactions, Gaze and Sensor data can be automatically sent to SceneExplorer when enough 'snapshots' have been collected. In the cognitiveVR Settings you can adjust the threshold of snapshots to send.

send data

Sending player data to SceneExplorer can also be done manually using Flush Events. This is recommended before loading a new scene and when closing your application.


The Flush Events blueprint node will upload saved player data to SceneExplorer.

This example shows how to Flush the player's data to SceneExplorer 10 seconds after the level has begun.

send data


To send the collected player data using C++, use this code:

    TSharedPtr<FAnalyticsProviderCognitiveVR> cognitive = FAnalyticsCognitiveVR::Get().GetCognitiveVRProvider();