General Debugging

In the Project Settings window (from the Edit menu), you can enable 'Mute Info Messages' or 'Mute Error Messages'.

debug toggles

Newer Versions

Unreal Engine 4.14.3 is supported with the SDK. Only a few small changes should be required to support newer versions of the engine. These changes are listed below.

If you are having trouble implementing the SDK into your version of the Unreal Engine, please get in touch!


No changes should be required


Line 7 in the file Plugins/CognitiveVR/Source/CognitiveVR/CognitiveVR.Build.cs needs to be changed from

public CognitiveVR(TargetInfo Target) to public CognitiveVR(ReadOnlyTargetRules Target)


Line 7 in the file Plugins/CognitiveVR/Source/CognitiveVR/CognitiveVR.Build.cs needs to be changed from

public CognitiveVR(TargetInfo Target) to public CognitiveVR(ReadOnlyTargetRules Target)

Line 77 in the file Plugins/CognitiveVR/Source/CognitiveVR/Public/DynamicObject.h needs to be changed from

USTRUCT() to USTRUCT(BlueprintType)

The file Plugins/CognitiveVR/Source/CognitiveVR/Private/PlayerTracker.h requires

#include "HeadMountedDisplayFunctionLibrary.h" before #include "PlayerTracker.generated.h"

Converting a Blueprint Project to C++

This assumes you have Visual Studio set up to develop for C++. From the Unreal Docs:


It's important to note that Visual Studio 2015 (VS2015) doesn't install C++ tooling support by default. When installing VS2015, choose Custom installation and then choose the C++ components that you'll need for your workflow. If you've already installed Visual Studio 2015, choose File > New > Project > C++ to install C++.

This is an example of how the root folder should look when the project has C++ enabled. Notice the Binaries, Intermediate and Source folders.


To enable C++ in the project, open the project. In the Content Browser, press 'Add New' and select 'New C++ Class...'


In this example, the parent class 'None' is fine. Press Next.


Name your class whatever you would like. This class can safely be deleted later. Press Create Class.


This should create the Binaries, Intermediate and Source folders in your project root. Your project now has C++ enabled and can use plugins!

Scene Explorer

Some textures don't appear correctly on

Special Characters

  • This is a known bug. It is related to special characters in the names of texture and/or materials in Unreal.
  • ä, á â, ã 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 Unreal 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.


  • Really complex materials in Unreal may not correctly find the diffuse texture required to display in SceneExplorer.
  • Transparent and Masked materials require 'Export Transparent Textures' in the cognitiveVR Export Settings. Otherwise, they will be exported solid red.


Why is my camera so slow?

  • The camera might not be slow - the Unreal scene might be giant!
  • Due to the scale used in Unreal, you must include the settings.json file that is created when running Blender to reduce scene geometry. The contents of this file are {"scale":100,"sceneName":"YourSceneName","sdkVersion":"0.5.0"}

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. If you use an alternate method, make sure to include the settings.json file (see above) when uploading to

  • Blender is also used to convert .bmp image files to .png. Without Blender you would have to do this manually.

Some meshes are not exported

  • The Scene Export settings will only export actors with a non-movable StaticMeshComponent by default.
  • 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.
  • Some types of rendering components are not exported correctly. This includes TextRenderers.
  • BSP does not export correctly through Export Selected. If you need to export BSP, you can use Export All in the cognitiveVR Settings. This will (unsurprisingly) export everything from your scene.

Some meshes I don't want are exported

  • You can use the Exclude Meshes string in CognitiveVR Settings to ignore these. There are comma separated values to ignore Actors. It is Actors with a name on this list that are ignored, not meshes with these names.

  • After selecting meshes, you can manually select or deselect meshes before exporting the scene.

  • In some cases, it can be convenient to simply modify the exported scene.obj file in a 3d modeling program.


Player Tracker

No data uploaded to Scene Explorer

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

No PlayerTracker Component

Make sure there is a PlayerTracker component parented to your player's camera.

The scene does not have a SceneKey associated with it

The SceneId is used by the PlayerTracker component to send data to the correct scene on SceneExplorer. Without a SceneId, data is not collected and not uploaded. Make sure you have uploaded your scene.

Application is closed before data is sent

See Send Data.

Known Issues

References to Dynamic Object not saved in Blueprint

In a rare case, it appears that Blueprint (both components on Blueprint Classes and nodes in the Event Graph) will not save references to Dynamic Object components. This occurs in 4.14 but may be fixed in newer versions.

get component

A reference may reset if: a class is defined in C++ AND implements a Blueprint Event Graph. If this broken class references a Dynamic Object component OR any other Blueprint class which references a Dynamic Object component, the reference may reset.

The solution is: add GetOwner()->GetComponentByClass(UDynamicObject::StaticClass()); in a non-constructor function in the broken class's C++ definition. It may also require that you add #include "DynamicObject.h" to the header of your broken class.