OpenVR Recorder Retail Downloads

(All files checked against 50+ virus scanners at


SteamVR must be installed and running

Main installer 64 bit versions

v1.54 64bit
v1.53 64bit
v1.52 64bit
v1.51 64bit
v1.50 64bit
v1.49 64bit
v1.48 64bit
v1.47 64bit
v1.46 64bit
v1.45 64bit
v1.44 64bit
v1.43 64bit
v1.42 64bit
v1.41 64bit
v1.40 64bit
v1.39 64bit
v1.38 64bit
v1.37 64bit
v1.36 64bit
v1.35 64bit
v1.34 64bit
v1.33 64bit
v1.32 64bit
v1.31 64bit
v1.30 64bit
v1.29 64bit
v1.28 64bit
v1.27 64bit
v1.26 64bit
v1.25 64bit
v1.24 64bit
v1.23 64bit
v1.22 64bit
v1.21 64bit
v1.20 64bit
v1.19 64bit
v1.18 64bit
v1.17 64bit
v1.16 64bit
v1.15 64bit
v1.14 64bit
v1.13 64bit
v1.12 64bit
v1.11 64bit
v1.10 64bit
v1.09 64bit
v1.08 64bit
v1.07 64bit
v1.06 64bit
v1.05 64bit
v1.04 64bit
v1.03 64bit
v1.02 64bit
v1.01 64bit
v1.00 64bit



(also included with installer)



- enlarged font for object names in 3D viewport a bit for better readability
- added a flag to better support printing Unicode characters to the console window

- fixed issue with device table sometimes not initializing at the right moment after startup
- added some additional checks to filter out rare cases of empty device being returned by drivers
- keyboard are now defined globally so it doesn't matter which widget is currently active
- added keyboard shortcut to start/stop recording (CTRL + Space)
- added keyboard shortcuts to hide/show the dockwidgets in the GUI

- device type is now checked earlier in the internal processing
- internally devices are now processed in parallel in multiple threads
- updated to latest OpenVR v2.5.1 SDK

- updated to latest OpenVR v2.2.3 SDK

- optimized internal algorithm a bit to be more memory efficient
    - static devices
    - devices that set internal velocity (Vive)
    - and devices that do not set internal velocity (SlimeVR)
    - are all handled optimally now
- updated code signing certificate

- removed internal check on device's velocity during fetch/update cycle
    - turns out some devices (like SlimeVR) would not set this velocity value
    - causing the app to only receive the first frame and then early out from then on even if the transform of the device had changed
- fixed issue with devices with '/', '\' or ':' characters in their name
    - they would cause issues with saving/loading settings
    - these characters are now substituted for '_' when saving/loading settings

- fixed issue with custom device names not always being read correctly at startup from previous settings
- added device serial number to OSC packets
- added shortcuts  to desktop, documents and home folder to file browser window sidebar
- updated to latest OpenVR v2.0.1.0 SDK

- added option to save quaternions instead of euler angles for TXT & CSV rotational data
- added buttons to change background and floor color in 3D viewport
    - right clicking on the button resets the color to default
- updated internal libraries to latest versions

- fixed issue with some button/axis data not getting saved properly on some devices

- rolled back some of the memory savings from v1.44 since they were a bit too aggressive and caused issues on some setups
- changed to a different data structure that can hold more data, to prevent a crash on very long recordings
- during data export (after recording) 3D viewport will now also report progress
- added feature to playback an audio file during recording (so you can sync your actions to music or audio cues for example)
- fixed issue where device data table would sometimes not be updated
- fixed issue with loading device names
- updated to latest OpenVR v1.23.7

 v1.44 [this version is quite buggy]
- recording now automatically stops if memory usage reaches above 90% to avoid crashing
- exporting after recording reports percentage of object types to GUI and displays in progress bar
  - since export of very long recordings can take a while
  - exact single percentage of everything is hard to determine up front so it's split up per object/section
- improved memory usage during recording by optimizing data structure
- improved memory usage after recording is stopped and raw data is converted to animation curves
- updated internal libraries to latest versions
- updated to FBX 2020.3.1
- updated to FFmpeg 5.0.1
- updated to Visual Studio 2022 with all the latest compiler optimizations

- added MotionBuilder 2023 plugin

- fixed issue with OSC where it could send the same frame multiple times
  - timestamps are now internally checked and data is only sent if there is an timestamp increase
- fixed issue where OSC timestamps could get too high leaving not enough digits of precision left for meaningful data
  - instead of using system clock the time since start of the application is now used to leave more fractional digits for usefull data
  - attempts at sending data as double (instead of float) would result in some OSC readers not being able to handle the data correctly

- "Snap Origin to Device" now:
  - internally uses transform matrix for more accurate result
  - internally uses device ID, in case you have multiple devices with the same name

- updated "Require HMD"
  - will now set value for "requireHmd", "forcedDriver" and "activateMultipleDrivers"
  - added additional info in the mouse over tooltip
  - as outlined here:
- added button to reset Global Offset (effectibely putting it back to SteamVR's room setup)
- added option to snap Global Offset to device
  - automatically adjusts Global Offset position/rotation so selected device is at the origin
  - option to enable/disable position/rotation individually
- fixed display glitch where "Virtual Camera" tab would always display "none" even when virtual cameras existed

- some additional checks to prevent a crash when OpenVR does not return a rendermodel for a device
- fixed a bug with crash on recording stop that could happen on some machines when outputting meshes to FBX file
- device details are now added to the message log to help for (crash) debugging
- added MotionBuilder 2022 plugin

- lots of small bugfixes, prevention measures, optimizations and potential memory leaks based on static code analysis
- fixed potential crash on devices with invalid render model

- various small speed/memory optimizations
- updated to latest OpenVR v1.16.8

- fixed possible crash in recorder
- added some additional debug info to the crash uploader to help isolate where exactly it crashed

- fixed issue with buttons/axis not being recorded even though they did show up in the GUI
- added option to add a global offset to all devices

- improved compatibility with more audio devices
- updated internal libraries
- updated code signing certificate

- added more precision to virtual camera position offset widgets
- internally now forces the use of desktop OpenGL drivers (which was the default on almost all machines anyway)
  - overruling a QT_OPENGL environment setting that a user or other program may have set
  - a QT_OpenGL setting of "angle" could prevent some GUI widgets from being drawn
- small cosmetic fix to virtual camera display widgets list
- updated internal libraries
- updated to latest OpenVR 1.14.15
- updated to latest OpenCV 4.5.0

- added support for multiple virtual cameras

- added option to attach a virtual camera to any device
  - visualized in the 3D viewport
  - exported to the 3D output file formats

- added the option to choose between sending Euler angles or Quaternions for OSC data packets
  - euler angles are in XYZ format (this used to be the default)
  - quaternions are in XYZW format
  - positions have not changed and are still sent as XYZ position vectors

- added description of hand OSC data structure to documentation
- last message log file is now moved to a _old folder at startup so we always keep the current and previous log for debugging / crash reporting purposes
- updated 2D & 3D OpenGL windows and drawing internals to a more modern widget class
- updated to new compiler profiting from new optimizations
- updated a bunch of internal libraries to the latest versions

- fixed an issue with "opencv_world430.dll" not loading on some machines in previous version

- small update to Remote Triggering
- updated to OpenVR 1.12.5

- fixed an issue where starting a recording could cause a crash on some occasions

- custom device names are now saved/loaded referencing device serial numbers
  - hopefully this is more deterministic than using device ids as used in previous versions

- fixed some issues when a new device connected or one would disconnect while the app is running
  - possible crash in GUI
  - device table not updating correctly
- fixed issue where formatting in the default.vrsettings file changed between SteamVR versions for the require HMD setting
  - used to be: "requireHmd" : true,
  - now is:     "requireHmd": true,

- updated internal libraries
- added some extra checks for invalid devices in drawing methods

- trigger, grip & touchpad button data is now fetched in a different way
  (seems axis data is always returned as 0 in current OpenVR version when using skeleton data)
- updated to OpenVR 1.10.30

- fixed issue with crash report generation/upload

- moved all licensing options to their own menu in the top menu bar
- added functionality to the top menu to remove license file (so you can install it on a different machine)

- added MotionBuilder 2020 plugin
- consolidated some cross application code
- added option to directly upload a crash report to the Brekel server
- added toggle option to Settings menu at the top for turning High DPI Scaling On/Off on next application start
- started digitally signing executable to help alleviate anti-virus false positives

- added error message popup window when a file cannot be written to alert the user more vigorously
- updated internal libraries to latest versions

- updated the GUI stylesheet
- added option to set custom names for devices (double click the name in the table to change it)
- added option to enable/disable recording for each device (toggle the checkbox in the table)
  - disabled devices will draw as semi transparent in the 3D viewport
- finger skeletons are no longer written if there is no data on them (for example when recording without controllers)
- fixed finger drawing in 3D viewport if they don't exist (for example when recording without controllers)
- fixed trial version TXT & CSV being incorrectly trimmed to a maximum 4 seconds instead of 10
- updated to latest OpenVR v1.9.16

- fixed potential multi-threading race condition
- changed application type during initialization so SteamVR will now automatically be started if it's not running already

- added support for fingers
  - Vive/Valve Knuckle/Index controllers support quite accurate finger poses
  - other controllers still solve fingers but can only produce rough finger poses
- fixed an issue with v1.14 missing a few DLL files
- MotionBuilder plugins update
  - devices no longer create animation nodes for channels it doesn't have (for example buttons on a HMD)
  - added support for fingers

- internally switched to a different library packaging system
- updated a bunch of libraries to latest versions
- cleaned up dll files
- updated to latest OpenVR 1.8.19

- added video codec selection
- added MotionBuilder 2019 plugin
- rearranged MotionBuilder plugins page in the installer
- moved log and all other user settings file to Brekel folder in Documents folder
  - to avoid clutter when using multiple Brekel apps on a machine
- updated to latest Qt and OpenCV libraries
- updated to OpenVR 1.1.3b

- added "-noVRpanel" commandline option to disable VR panel (in case you don't want it or it produces a problem on your setup)
- updated to OpenVR 1.0.15
- switched to latest FBX SDK
- added extra options for writing older FBX formats
- changed FBX file type naming to 2006-2018 naming convention, with internal file format (v6.1 - v7.5) in parentheses

- added CSV export option
- added functionality to render preview to a movie file

- fixed bug where "Require HMD" setting wasn't being saved
- fixed bug where "Universe Origin" setting wasn't being saved
- fixed bug where "Remote Triggering" setting wasn't being saved
- added toggle to switch adding machinename & PID to the record triggering filename
  - having this enabled (which was the default) can help file overwriting when multiple Brekel apps are writing to the same folder

- maintenance release
- upgraded internal libraries for latest security and performance updates
- now compiled with visual studio 2017

- fixed an issue where the MotionBuilder plugins stopped working due to a recent change in OpenVR

- updated to the latest OpenVR version
- fixed crash log files as some filetypes were giving issues with the new mail server
- added extra digit for position/rotation in the table so it's easier to spot small differences
- in TXT files:
  - added resampling framerate to header (for non-raw TXT files)
  - changed "Export date/time" to a more accurate "Recording start year, month, day, hour minute, second, millisecond
  - when resampling device ID and timestamps are now correct
- when using "Record Triggering" the "Append Date/Time" is now respected when it's enabled on the Master 

- Toggle & path for audio recording wasn't saved/loaded, fixed now
- Fixed a regression in the internal recorder code causing audio files to be corrupt

- Text file output now respects keyframe resampling and filtering by default
- Added toggle to export raw data to text files (as was the case before)

- timestamps in TXT text files now always start at 0.0 on the first frame
- timestamps in TXT text files now have more digits of precision
- updated to the latest OpenVR version

- now includes a MotionBuilder plugin for live streaming (and recording)

- added logger class
  - the info from the black console window is now displayed in a logging window in the GUI of the app
  - logging info is also saved to a log file (in your My Documents folder)
- Added crash reporting feature
  - when a crash is detected log files and debugging info is collected
  - a zip file will be placed on your desktop
  - and a dialog box will ask you to send this file by email so the cause can be debugged

- "Auto Filename" is now renamed to "Append Data/Time"
  - it will now always respect the manually set filename
  - and when turned ON simply append the date/time to it
- selected audio device should now be saved/loaded
- canceling a recording after a file overwrite warning should behave more as expected now
- fixed a bug where the program would crash when running SteamVR without a Vive headset and only trackers
- added option to change SteamVR setting to be able to run without a headset
  - usefull in case you want to only track Vive controllers/trackers without a headset
  - note that this is a bit experimental and can cause SteamVR to give you some warning/error popup messages
- added some visualization options for lighthouse basestations and tracking cameras
  - these are mainly visual aids to help align things for optimal coverage during setup and calibration
- made VR Overlay text bigger and checkboxes easier to interact with

- added chapter to documentation describing how to control the app from within VR
  - for changing basic output settings
  - for starting/stopping recording
- Resample FPS controls in VR Overlay should now disable/enable according to Resample toggle
- added option to top menu to extend the right docking area to the bottom or not
  can be helpfull to fit the GUI more efficiently on smaller screens
- when camera is in follow mode you can now still dolly in/out
- camera follow mode now applies some smoothing
- adjusted axis sizes slightly
- stopping a recording while countdown is running not correctly stops
- fixed video of Vive camera being horizontally flipped in GUI (recording was correct)

 v0.56 (Beta)
- implemented preview mode tab to playback the last recorded take
  - toggle to automatically switch to preview window after recording
  - button to delete or keep the take and switch back to live mode
- moved audio recording path from Audio tab to Output Formats tab
  - only enabled when audio device is selected in Audio tab
- Video output now displays message when
  - camera is disabled (in camera dock)
  - camera is not supported (only HTC Vive has an onboard camera)
- fixed some issues where some object names in FBX files weren't correct
- added option to select texture file format
- Display-Redirect devices are now exported (whatever they may be)
- removed unnecessary dll file from the installer

 v0.55 (Beta)
- included documentation in PDF form (shortcut in start menu)
- removed FBX embed media from GUI (as it wasn't working anyway)

 v0.54 (Beta)
- implemented audio recording functionality
- added audio waveform widget just below the 3D viewport
- implemented OSC network streaming
- cleaned up the tooltip rendering
- when camera presence is detected but no frames can be fetched
  print warning that the user may need to enable it in SteamVR settings
- fixed a bug where sometimes a recording wouldn't stop correctly
- fixed a bug where camera could get too close to it's target
- fixed a bug where a device that would connect while running would not fetch its name/serialnumber

 v0.53 (Beta)
- added device serial numbers to spreadsheet in GUI
- trackers that are connected to a periphiral with buttons should now (in theory) also record that button data
- added VR Overlay functionality
  - you can now start/stop recordings while in VR
  - you can now control most settings while in VR
  - settings in desktop app and VR panel are mirrored both ways
  - to use this on Vive
    - click the System button (below the trackpad)
    - click (Trigger button) the "Brekel" circlular item that appears at the bottom
      (next to Steam, Desktop and Settings)
    - a familiar panel with controls should now appear in front of you
  (not tested on Rift yet, not sure where/if this overlay panel shows up)

 v0.52 (Beta)
- added tooltips (mouse over) to all elemets in the GUI
- tooltips sizes should now better conform their contents
- added Drawing FPS text to 3D view
- added memory / cpu usage text to 3D view
- "Draw FPS" toggle (from Settings menu) now works
- "Warn for File Overwriting" toggle (from Settings menu) now works
- cosmetic changes to about window
- added a "Frame" button to frame the 3D viewport camera on the devices in the scene (also CTRL+A or CTRL+F)
- added a "Follow" button to follow the devices in the scene
- added a "Framing Mode" selector to select to frame only the devices (HMD/controllers/trackers) or everything
- Universe Origin should now actually work (not sure how usefull it really is though)
- implemented "Record Triggering" to synch start/stop/filenames across multiple Brekel apps
- implemented video recording

 v0.51 (Beta)
- file export process now runs in a separate thread so the GUI remains responsive
- fixed link to downloads page in Help menu
- opened up a new category in the forums, accesible through the Help menu
- added switch for Universe Origin (Seated, Standing, Raw and Uncalibrated)
- changed "Resample Frame Rate" default to 30 (for new installs)
- added OpenVR version numbers to the About window
- when exporting texture a pre-existing texture will now be skipped (to save time)
- camera framerate should now be more accurate
- when no camera is available (on Oculus Rift) the camera/video widget should display a message now
- implemented TXT exporter

 v0.50 (Beta)
- initial public beta release