opentrack 2.3.9

@sthalik sthalik released this Aug 14, 2017 · 428 commits to unstable since this release


Software dedication

The software is dedicated to my late cat, Koszka. He loved sleeping on my chest, and his gentle purring made opentrack development that much more pleasant. He was a darling to all of our family and a great friend. You can see Koszka on the photo album <>.

Stability status

No important issues raised for 3 weeks as of 20170907.


This is a bugfix release.

  • fix sliders from 2.3.7-and-before configs being reset
  • filter/accela: revert gain value changes -- reported by @petsild, #665
  • tracker/pt: contours are inaccurate, revert them entirely


  • tracker/pt: auto threshold slider now scales point size to lower resolutions
  • tracker/s2bot: new tracker interacting with the Smalltalk Squeak environment -- submitted by @achipa, #650
  • fix Linux and OSX builds -- submitted by @MrCapone, #668, #669

opentrack 2.3.8

@sthalik sthalik released this Jul 23, 2017 · 479 commits to unstable since this release


See #664 for 2.3.9 prereleases. Again, don't use 2.3.8.

Build the unstable git branch from source directly. Don't build point releases since they have no bugfixes.


  • Fix hatire tracker
  • Accela: use less sluggish gain function.
  • Accela: make nonlinearity useful, not resulting in microstutter anymore.
  • Camera angle rotation is gone now. It didn't work right. Use the current center pose to transform position value. Only happens with camera center mode.
  • Change the method PT tracker uses to extract LED centers. Change the video overlay somewhat.
  • In PT and Aruco, we were using RGB weights rather than BGR for transforming into grayscale. The colors were wrong. This bug was with us since the very beginning. ๐Ÿบ
  • Prevent mapping from having negative values or over the graph's maximum value. -- reported as #628 by @Forsaken-Player, as #651 by @unhappytroll, and as #641 by @Qiler
  • Russian translations for the calibration and game detector controls -- by @mrsanchos
  • PT: show separate calibration sample counts for yaw and pitch, as well as hints in case of low sample counts.
  • Allow for binding Caps Lock and Tab -- issue #646 reported by @BA1-Templar
  • Fix for Prepar3d 4.0 and overall SimConnect version mislabelling -- issue #627 by @ArnieWe; correct versions supplied by @ronh991.
  • PT: warn in UI not to turn on dynamic pose for clips
  • New tracker interfacing with embedded controllers supported by the Smalltalk Squeak environment -- by @achipa
  • reorder code in the compat/shm functionality to avoid false positive in braindead antivirus software such as Avira or Bitdefender -- issue #654 reported by @cofilippo to also affect Bitdefender.
  • spline/widget: prevent drawing the mapping past the graph's end. Ugly but didn't lead to bugs.


Thanks to @Len62 for pointing people to nightly builds after it was found that previous 2.3.7 had few serious bugs.


  • Don't try access Qt's install prefix where it was installed on the build machine.
  • Use higher timer resolution during tracking again.
  • Reduce CPU usage with mapping window open during tracking.
  • Workaround Falcon BMS in-game "bump" when pitching to exactly 90 degrees.
  • Speed up spline redraw when dragging a control point.
  • Tweak PT meanshift CPU usage in PT
  • Code cleanups, see actual git log. Idem for CMake module code.
  • We're not using Intel IPP anymore so remove the notice.
  • Fix 32-bit build on Visual Studio 2015 -- issue #640 reported by @ronh991
  • Don't call _Exit(2) on Linux or OSX.
  • pose-widget: fix use-after-free on Linux, found with Valgrind. Also fix one unitialized memory read, by Clang asan.


opentrack 2.3.7

@sthalik sthalik released this Jun 5, 2017 · 601 commits to unstable since this release


Stability status

Has multiple bugs, breaking trackers and other basic functionality.


  • The SteamVR tracker for HTC Vive now works. Big thanks to @KydDynoMyte for testing multiple builds in a row, and soliciting outside testing. It was ascertained that yaw works +-180 deg, pitch works +-180 deg, and roll works +-90 as it should be.
  • The "Fusion" tracker allows for receiving rotation and position data from two trackers. This was requested over a few years by multiple users.
  • The "Test" tracker allows for crashing the application on demand. Truly a feature of the year!
  • Mapping: fix points disappearing when moved close together in a particular way.
  • Mostly fix keyboard shortcuts on Linux. Thanks to @miniskipper for starting the work. -- issue #577
  • Fix bitrot in the X-Plane plugin, by @miniskipper -- issue #623
  • After pressing "toggle", "toggle while held" will enable the tracker while held. Previously it always disabled while held.


  • Install debug information along with the program. Because of this, it's way easier for users to report hard-to-find crashes.
  • Don't rebuild every single module if core library has only unit file .cpp changes, and no header changes. Greatly speeds up release builds.
  • tracker/hatire: try detect 100% cpu serial bug automatically.
  • Fix forcefully unloading QLibrary. It should now work on Linux also without _Exit(2).


@sthalik sthalik released this May 4, 2017 · 709 commits to unstable since this release

Stability status

The software was only tested and deemed stable before release by few dedicated users. Thanks to @Len62 and @mrsanchos and others whom I unfortunately forgot to mention.

The SteamVR tracker for HTC Vive is broken. Use the next release if you need it.

Important changes

  • Accela: filter all DOF together. This makes diagonal rotation less staircase-like. Please report any new issues with the filter's operation. -- discussed and tested with @mrsanchos
  • Accela: smoothing works a lot better. This is indirectly caused by 3DOF rotation filtering. -- requested by @olegiy
  • Accela: adjust gain to prevent microstutter. -- tested together with @mrsanchos
  • Support HTC Vive. Thanks to a community effort the tracker's now complete and ready for initial general use. The tracker name is SteamVR. It should work with both the HMD and controller. Please report issues for this new tracker in #352. -- code submitted by @subnet- and @antcodd, additionally tested by @KydDynoMyte.


  • PT, Aruco: use Intel's IPP library to speed up image processing for each user's CPU architecture.
  • PT, Aruco: update OpenCV. The new version has separate code depending on the user's CPU. It speeds up image processing similarly to Intel IPP.
  • The software now uses less CPU on the core functionality.
  • Accela: don't allow for very high sensitivity and deadzone values. This should help with configuring the filter as only sensible values are shown on the slider. -- tested by few users
  • Accela: don't behave real stupid when switching between -180->180 in a quick succession -- reported by @evan-king in #600
  • PT, Aruco: allow for roll calibration. It's hard to perform hence not recommended. However, it's technically possible to keep static translation values despite calibrating for roll in addition to yaw and pitch.
  • PT, Aruco: show calibration sample count feedback after done calibrating.
  • PT: point centers are now only shown as crosses. The circle is gone since it was twice too big because of a bug. Making it as small as it should be makes it too unreadable over the camera display. The rotation center cross is now yellow, not red. It looked bad when only tracking the red channel.
  • Fix path to Intel RealSense driver installer. -- by @ph0b
  • FlightGear: few of the axis were inverted. Fix that. -- reported by @rayinny
  • mapping: fix points lumping together when moved close under some circumstances.
  • mapping: allow for an X value up to 100 centimeters. This isn't the default.
  • update the Russian translation -- by @mrsanchos
  • rename the UDP tracker and protocol to make it less confusing. -- requested by @adeldex

Boring changes

  • Include debug data in software builds. Users looking to fix crashes now have much less a burden.
  • Simplify how we handle 90 deg pitch rotation in the Octopus widget.
  • Vastly simplify how the Octopus is drawn.
  • Simplify the build system.
  • Simplify how we format values saved in the .ini file, making Accela's dialog code shorter.
  • Register the project on the Coverity's initiative for open-source. The software detected several non-critical faults that since got fixed.
  • Make our expected timer resolution less invasive on the whole system's operation. Use an undocumented Windows API.
  • Remove one camera angle option that wasn't doing anything.
  • Other random boring code quality changes, of course.

What next

Given we're now done with HTC Vive, the next step is the Tobii EyeX controller. Expect accumulative and snap modes. The tracker is already WIP but has some formulae wrong.

We'll get switching profiles on a hotkey. The idea is to stop tracking, switch the profile and start tracking again. It's been requested multiple times, also recently. The hotkeys will get stored globally just like game detection profile switching.

๐Ÿ™ ๐Ÿˆ ๐Ÿบ


@sthalik sthalik released this Mar 21, 2017 · 886 commits to unstable since this release

Changes since

Stability status

Individual fixes were tested by users reporting the issues. No widespread usage yet. I recommend you to try it, in case of issues report a bug and go back to the previous build.


  • PT, aruco: the calibrator will now work even if you look at the same spot for a while, and you calibrate with varying speed. -- a major pain reported by many, recently discussed with @Len62 and @MathijsG in #575
  • aruco: now uses the exact same calibration code as PT, with above improvement


  • PT: correct logic error relating to camera reopen with resolution/fps change during tracking
  • accela: doesn't do a large movement when moving from +180 to -180. This is for inertial trackers. - #533, reported by @Ounicron
  • the "custom center pose" ignores mapping and doesn't affect relative translation as it's not meant to. -- #572, reported by @olegiy
  • cmake: some msvc fixes
  • PT: simplify camera vs tracker code. we'd like to reuse the camera code for other camera-based trackers eventually.
  • cmake, dinput, compat: fix minor bugs no one ever run into
  • I started going over the modules with a disassembler to verify optimized code quality. For now it's a start but I plan to do it more.

Done for the next version

  • HTC Vive works for 6DOF (issue #352, work done by @subnet-)
  • Accela filter works well with diagonal and circular movement

What to expect next

  • Assistive technology support for controlling the computer other than the traditional keyboard and mouse. It's meant to help quadriplegic people, as well as paraplegic suffering muscle pain due to heavy arm use.
  • We're still missing fully working code for the HTC Vive and Tobii EyeX trackers.
  • Implementing Linux/OSX joystick support is a pushover thanks to the QtGamepad module.