opentrack 2.3.0

@sthalik sthalik released this Nov 29, 2016 · 99 commits to unstable since this release

Koszka, a cat with heart of gold who died in January

The opentrack-2.3 branch is dedicated to my late cat, Koszka. He was an amazing friend, and many days I've spent improving opentrack He sat on my lap, insisting that I lean backwards, so that He can climb on my chest and be closer. He can never be replaced. You can see how He looked like on Google Photos

Please report bugs

We actually listen to your bug reports and fix stuff as you report it.

Changes since rc15

  • fix hatire serial parameter selection in dialog crashing, this time for good (reported by @huliqan)
  • rifts, hydra: license the code as authorized by @mm0zct
  • fix a dubious build error on msvc 2017 preview

Why now?

There are still few bugs and missing features. But overall it's good to go. We'll iron out the remaining issues in followup releases.

But this is so anticlimatic!

I agree. 🐱 🍺

best regards,
Stanislaw Halik, maintainer


opentrack 2.3.0 release candidate 15

@sthalik sthalik released this Nov 25, 2016 · 108 commits to unstable since this release

Please report bugs

We're close to stable release. Please report bugs on the issue tracker. They actually get fixed once reported.


  • Add Oculus Rift SDK 1.4.0.
  • Add translation support! The main interface now has a Russian translation (thanks to Alexander Orokhovatskiy) as well as Dutch (Thanks @MathijsG). More modules are planned for translating into Russian.
  • Fix Aruco solver going bonkers. This took a while. Thanks to @Emton for reporting it again and testing several versions.
  • Fix rotation nonlinearity's discontinuity in Accela. You need to increase your nonlinearity values a bit.


  • The mappings are now drawn antialiased.
  • Fix joystick tracker swapping sign on maximum values.
  • Resize the game detector interface to full options window size.
  • Code maintainability improvements.
  • Reword some descriptions in the user interface.
  • Allow for disabling program translation (interface in different languages, not translation as in "position").
  • Remove camera offset from centered position checkbox. It doesn't work properly, and probably doesn't make sense.
  • Fix an infinite loop bug during tracking. This probably hasn't occured to anyone.
  • Remove disabling axis for relative translation. Leave only the option to disable the Z value. -- removed from the build due to feedback.
  • Don't consume too much memory for each mapping. Please report if Accela is too jumpy.

In progress

  • Support for SteamVR controllers. We already receive the data but need to perform geometric transformations which aren't yet implemented.
  • Joystick input for Linux and OSX. It can be tested on Windows so it's not a big deal.


opentrack 2.3.0 release candidate 14

@sthalik sthalik released this Oct 28, 2016 · 175 commits to unstable since this release

Core changes

  • Unbreak auto translation camera offset when used together with relative translation -- tested by @Len62, #473
  • Prevent freeze on multi-display desktops -- debug info by @kzfr, #469
  • The Octopus is now more slim and not square.
  • Higher snap in the mapping window. It was so small that hitting the right value was a pain.
  • Don't allow points to occupy the same place when dragging in the mapping window. Bug allowed that to happen in some cases.

Module changes

  • PT: Don't call calibration more often than intended.
  • PT, aruco: Don't delay camera stop artificially.
  • PT: display tracker info immediately, and don't refresh it when tracking is stopped.
  • freetrack: support few more games.

Known bugs

These didn't make it in time sadly. The multi-display bug is serious enough to release now rather than fix more known issues.

  • Aruco still has solver problems resulting in nonsensical poses.
  • The FreePIE app won't show debug sensor data unless "send raw" is selected also.


opentrack 2.3.0 release candidate 13

@sthalik sthalik released this Oct 1, 2016 · 224 commits to unstable since this release

  • Translation compensation got renamed to relative translation. Also, effect of each rotation axis on translation can be disabled, and each translation axis can be excluded from relative translation.
  • Mapping snap got lowered to (1, 1) and (.5, .5) for rotation and translation respectively. We have tooltips so it's not a problem.
  • Tracking stop won't reset unsaved dialog changes. Only closing a dialog without saving will reset unsaved changes.
  • Tracking will try very hard to keep running at constant framerate (250 Hz). Previously it only adjusted based on the last delta.
  • The Octopus now has larger resolution, and looks more correct when rolled.
  • Trackers submitting rotation over +-180 will have it normalized.
  • PT tracker had too small auto threshold point area. We forgot to multiply by Pi. Now the area is larger by 3.14.
  • PT tracker finds point centers a bit more accurately.
  • Some Accela settings had their maximum values reduced to prevent user confusion. They didn't make sense at these high values.
  • Settings dialog in PT and Aruco won't show itself for A4 TECH cameras, in addition to PS3 Eye. The former crash when trying to open the dialog.
  • All Rift versions now work without gimbal lock. It was only tested on 0.8.0 but the code is pretty much the same for all the versions.


opentrack 2.3.0 release candidate 12

@sthalik sthalik released this Sep 21, 2016 · 251 commits to unstable since this release


This build and well as future releases will be provided for the community active with reporting bugs and requesting features, first. This helped fix simple bugs that made the software unusable before this release.

I'd like to thank (in chronological order): @albertolg, @Sone989, @olegiy, @MathijsG, @Ec0nomist, @Emton, @Len62, @FlyMakerBR, @H-Bear-22, for help with important but hard to find issues, @sheepsskullcity for finding and fixing the UDP issue, as well as @DaMichel for his assistance as a professional programmer.

The OSX port won't have any releases until it finds its own maintainer.

A few wiki pages got rewritten to use active voice and be more terse by dispensing with polysyllabic formalities. Some gaps in documented functionality exists still, but several community members wrote their own tutorial. Thank you for that.

Core changes

  • Fix tray support. A separate option now controls whether to minimize to tray on startup. Tray now has a right-click menu.
  • Fix freezes with some webcams and some joysticks.
  • Mappings: show tooltip with actual value while moving, hovering, and placing points.
  • Tapping a button that is "while held" made the function stuck. Now tapping works no matter how fast.
  • Fix "while held" functions bound to joysticks. They were getting stuck.
  • Mappings: XYZ isn't snapped to 5 units anymore. One unit's used here.
  • Saving settings is overall more efficient.
  • Settings are now migrated from previous versions. There won't be a need to set everything again.
Minor changes
  • Rework profile refresh. If the profile directory can't be created and written to, the software exits.
  • Changing profiles will now reload everything, including mappings.
  • Changes such as checkboxes propagate immediately e.g. tray appears right after checkbox is toggled.
  • Mapping: some visual fixes. Less artifacts and easier on the CPU.
  • Experimental centering option for camera-based trackers.
  • Mapping: saving to .ini is performed only once now, not 12 times (once for each graph).
  • Multiple kinds of data were considered always modified when stored in the .ini.
  • RealSense: the code now resides in its module and there's no separate .dll anymore.
  • Mappings: alt-tabbing away from the window while a point is dragged will stop dragging it.
  • Add shortcut for "translation compensation off while held" for precise gunsight aiming.
  • Tracker data logging interface simplified (by @DaMichel).
  • Mappings: settings are now stored more easily but sadly they aren't plain text anymore.

Module changes

  • Accela filter: maximum position and rotation change is now back to a large value like it was in rc7. The smaller value caused problems for hatire and joystick input users.
  • PT: calibration now doesn't have its sign swapped.
  • UDP tracker was accidentally broken in p11 (fix by @sheepsskullcity).
  • PT: calibration user interface is less confusing as to how to begin and end calibration.
  • Kalman filter: improved again by @DaMichel. By now the filter is in a good shape and you can give it a try if you want.
Minor changes
  • PT, Aruco: The camera settings button is back. It's automatically greyed out with PS3 Eye selected since it doesn't work with it.
  • freetrack output: game list update.
  • Rift trackers: show informative error messages whenever possible.
  • PointTracker is now default for new configs and new users.
  • Accela filter: simplify the way settings are stored.
  • Accela filter: show nonlinearity filter's exponent in a larger font. It was barely visible.
  • Aruco: X and Y translation values are smaller, allowing for more movement overall before they're clamped to the maximum value.
  • Aruco: show 75 FPS as a camera option.

Development information

  • Building opentrack is now easier than ever as Visual Studio 2015 Community is supported on Windows. It's also regularly built with that toolchain.
  • The compiler used is now Microsoft Visual Studio preview 4. There weren't any regressions reported and the software still works on Windows XP.
Minor changes
  • Full text of the ISC license is now used, including the warranty. You have the same rights but it protects from some bullshit that depends on jurisdiction.
  • Add missing licensing to some source files. Stupid AT&T vs BSD suit made it so by default no rights are granted. We want to make it clear that you can do whatever the hell you want with opentrack, including making commercial derivatives with no source code available. Which we wouldn't like but nevertheless won't use the legal system to prevent you.
  • Build system improvements. Writing plugins requires barely any work with the build system.
  • Fix build on older Qt versions, also on Debian sid's Qt 5.6.0.
  • Tobii EyeX tracker: merge in the work done so far. It's not provided for end-users since it's not working well enough.


opentrack 2.3.0 release candidate 11

@sthalik sthalik released this Aug 14, 2016 · 498 commits to unstable since this release

Do not use. Will break mapping migration in rc12+.

  • Gimbal lock is no more. No longer will you get roll output on pitch + yaw input. This was fixed in a crude way but works.
  • Fix axis signs swap for various axis introduced in rc10.
  • There are new optimizations used. Please report random crashes so the optimizations can be backed out!
  • SimConnect: fix total breakage after moving to "modules" subdirectory.
  • SimConnect: add instructions for SDK install.
  • Replace Headsoft VJoy with the vjoystick project. The former gave "trial expired" error which is unacceptable.
  • Max output translation is now 75, from 50.
  • Fix tray icon being broken for some time. Also, add a tray icon menu. Tray now toggles on a single click, not only double click.
  • Install source code with right directory layout.
  • Make tracker Hz as constant as possible. The tracker thread now sleeps less to "catch up" with the Hz requirement.

Do not use. Will break mapping migration in rc12+.


opentrack 2.3.0 release candidate 10

@sthalik sthalik released this Aug 5, 2016 · 566 commits to unstable since this release

  • tracker/pt: point extraction code got replaced with the original version by Patrick Ruoff.
  • tracker/pt: dynamic pose was utterly broken accidentally.
  • tracker/pt: dynamic pose auto-resets if point is away from the last position by more than 8 pixels.
  • install cleye.config also to modules directory. the PS3 Eye camera should allow for full fps range now.
  • filter/kalman: rewritten by @DaMichel. it's way better than old broken Kalman we had. give it a try.
  • filter/accela: add rotation nonlinearity slider. It helps when there's noise at the beginning but high sensitivity is undesirable (almost always).
  • filter/accela: even without nonlinearity there should be less noise at the beginning.
  • experimental option for "offset translation based on camera center" with caveat.
  • it's now possible to log tracking output to a CSV file (@DaMichel).
  • config file is checked for writability. If the file can't be read and written, a warning pops up.
  • window element color also gets applied for user interface, not just overall control shape.
  • gui: mapping window background doesn't look that bad anymore.
  • scaling for HiDPI displays should work better now.
  • camera feeds for tracker/{aruco,pt} should now work with HiDPI.
  • The Octopus and video feed from camera don't get displayed when they're occluded, for performance.
  • wrong formula for matrix -> euler was used. use the right Tait-Bryan formula.
  • official binaries are somewhat smaller.
  • each build will now include source code.


opentrack 2.3.0 release candidate 9

@sthalik sthalik released this Jul 18, 2016 · 673 commits to unstable since this release

Recalled due to serious PT tracker bug

  • improve PT tracker Z translation accuracy
  • fix freetrack protocol breakage (issue #385)
  • modules now go to to the modules/ subdirectory. they still work as usual.
  • slight accela gain changes to allow for lower sensitivity on non-inertial devices
  • octopus doesn't have some axis inverted on the main display
  • reduce translation range. no one used that high a range.