LOCAL PROCESSING INSTALL & RUN NO SUBSCRIPTIONS

OpenVR Recorder Changelog

Complete release history of Brekel OpenVR Recorder, newest first. Converted verbatim from the release notes published with each version.

v1.58

  • fixed a potential multi-threaded race condition
  • switched to a new crash detection & logging system
  • added plugins for MotionBuilder 2024, 2025 & 2026
  • improved, streamlined, styled and updated installer

v1.57

  • updated to new build environment
  • installer and app are now signed by a new EV code certificate

v1.56

  • OSC sender will now skip models that are flagged as not recording
  • OSC sender will now skip models with invalid rendermodel or serial number

v1.55

  • added a check in OSC sender to only send valid packets
  • updated internal libraries to latest versions

v1.54

  • 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

v1.53

  • 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

v1.52

  • 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

v1.51

  • updated to latest OpenVR v2.2.3 SDK

v1.50

  • 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

v1.49

  • 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

v1.48

  • 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

v1.47

  • 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

v1.46

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

v1.45

  • 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

v1.43

  • added MotionBuilder 2023 plugin

v1.42

  • 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

v1.41

  • “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

v1.40

  • updated “Require HMD”
  • 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

v1.39

  • 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

v1.38

  • 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

v1.37

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

v1.36

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

v1.35

  • 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

v1.34

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

v1.33

  • 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

v1.32

  • added support for multiple virtual cameras

v1.31

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

v1.30

  • 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

v1.29

  • 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

v1.28

  • fixed an issue with “opencv_world430.dll” not loading on some machines in previous version

v1.27

  • small update to Remote Triggering
  • updated to OpenVR 1.12.5

v1.26

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

v1.25

  • 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

v1.24

  • 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,

v1.23

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

v1.22

  • 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

v1.21

  • fixed issue with crash report generation/upload

v1.20

  • 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)

v1.19

  • 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

v1.18

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

v1.17

  • 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

v1.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

v1.15

  • 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

v1.14

  • 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

v1.13

  • 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

v1.12

  • 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

v1.11

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

v1.10

  • 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

v1.09

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

v1.08

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

v1.07

  • 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

v1.06

  • 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

v1.05

  • 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)

v1.04

  • 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

v1.03

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

v1.02

  • 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

v1.01

  • “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

v1.00

  • 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) (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