├── .clang-format ├── .clang-tidy ├── .editorconfig ├── .gitattributes ├── .github ├── CONTRIBUTING.md └── workflows │ ├── build-windows.bat │ ├── cmake.yml │ └── linux-package.yml ├── .gitignore ├── .gitmodules ├── 3rdparty-notices ├── ARUCO-COPYING.txt ├── FACETRACKNOIR-COPYING.txt ├── Kinect-V2-SDK-Eula.rtf ├── LIBOVR-COPYING.txt ├── LIBQXT-COPYING.txt ├── LIBUSB-COPYING.txt ├── NFAILCLIENT-CREDIT.txt ├── ONNXRUNTIME.txt ├── OPENCV-COPYING.txt ├── QT5-COPYING.txt ├── VALVE-STEAMVR-COPYING.txt ├── VJOYSTICK-COPYING.txt ├── WIIYOURSELF-NONFREE.txt └── ps3eyedriver │ ├── libusb0-AUTHORS.txt │ ├── libusbK-AUTHORS.txt │ ├── libusbK-LICENSE-bsd.txt │ ├── libusbK-LICENSE-libusb.txt │ ├── ps3eyedriver-LICENSE.txt │ └── ps3eyedriver-opentrack-LICENSE.txt ├── AUTHORS.md ├── CMakeLists.txt ├── OPENTRACK-LICENSING.txt ├── README.md ├── WARRANTY.txt ├── api ├── CMakeLists.txt ├── export.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── plugin-api.cpp ├── plugin-api.hpp └── plugin-support.hpp ├── bin ├── NPClient.dll ├── NPClient64.dll ├── TrackIR.exe ├── build-msvc.cmd ├── cleye.config ├── drmemory-suppressions.txt ├── freetrackclient.dll ├── freetrackclient64.dll └── qt.conf ├── cmake ├── COPYING.txt ├── FindONNXRuntime.cmake ├── GetGitRevisionDescription.cmake ├── GetGitRevisionDescription.cmake.in ├── apple.cmake ├── linux.cmake ├── mingw-w64.cmake ├── mrproper.cmake ├── msvc.cmake ├── opentrack-boilerplate.cmake ├── opentrack-hier.cmake ├── opentrack-i18n.cmake ├── opentrack-install.cmake ├── opentrack-load-user-settings.cmake ├── opentrack-mrproper.cmake ├── opentrack-opencv.cmake ├── opentrack-org.cmake ├── opentrack-pkg-config.cmake ├── opentrack-platform.cmake ├── opentrack-policy.cmake ├── opentrack-qt.cmake ├── opentrack-variant.cmake ├── opentrack-version.cmake ├── translation-stub.ts └── unix.cmake ├── compat ├── CMakeLists.txt ├── activation-context.cpp ├── activation-context.hpp ├── arch.hpp ├── base-path.cpp ├── base-path.hpp ├── camera-names.cpp ├── camera-names.hpp ├── check-visible.cpp ├── check-visible.hpp ├── correlation-calibrator.cpp ├── correlation-calibrator.hpp ├── enum-operators.hpp ├── euler.cpp ├── euler.hpp ├── export.hpp ├── hamilton-tools.cpp ├── hamilton-tools.h ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── library-path.hpp ├── linkage-macros.hpp ├── linkage.hpp ├── macros.h ├── math-imports.hpp ├── math.hpp ├── meta.hpp ├── mutex.cpp ├── mutex.hpp ├── process-list.cpp ├── process-list.hpp ├── qhash.hpp ├── qt-dpi.hpp ├── qt-signal.cpp ├── qt-signal.hpp ├── run-in-thread.hpp ├── shm.cpp ├── shm.h ├── simple-mat.hpp ├── sleep.cpp ├── sleep.hpp ├── sysexits.hpp ├── thread-name.cpp ├── thread-name.hpp ├── time.hpp ├── timer.cpp ├── timer.hpp ├── tr.hpp └── variance.hpp ├── contrib-noinst ├── ft_tester │ ├── Makefile.am │ ├── Makefile.in │ ├── fttester.rc.in │ ├── main.cpp │ └── resource.h ├── important-stuff │ ├── NPClient.h │ ├── NPClient.spec │ ├── NPClient_dll.h │ ├── NPClient_main.c │ ├── game-data.exe │ ├── game_data.c │ └── game_data.h ├── make-csv.pl └── tester │ ├── Makefile.am │ ├── Makefile.in │ ├── main.cpp │ ├── npifc.c │ ├── npifc.h │ ├── npview.rc.in │ └── resource.h ├── contrib ├── FlightGear │ ├── Protocol │ │ └── headtracker.xml │ └── readme.txt ├── Tir4Fun │ ├── npclient.dll │ ├── readme.txt │ └── tir4fun.exe ├── aruco │ ├── README.txt │ ├── aruco_create_marker.exe │ └── test3.png ├── cute-octopus-vector-material_15-1831.jpg ├── freepie-udp │ ├── FreePIE_IMU_Android9.apk │ ├── com.wishsalad.wishimu-debug.apk │ ├── license.txt │ └── src-WishIMU.zip ├── freetracktest │ ├── freetracktest.exe │ └── readme.txt ├── fs2002 and fs2004 │ └── fsuipc.dll ├── glovepie │ ├── facetracknoir2trackir.pie │ └── readme.txt ├── hatire-test-data │ ├── README.txt │ └── puttyLog1MIN.zip ├── libusbK-dev-kit │ └── libusbK-3.1.0.0-setup.exe ├── libusbK-inf-wizard │ ├── libusbK-inf-wizard.exe │ └── license │ │ ├── AUTHORS-libusb0.txt │ │ ├── AUTHORS-libusbK.txt │ │ ├── LICENSE-bsd.txt │ │ ├── LICENSE-gpl3.txt │ │ └── LICENSE-lgpl3.txt ├── npclient │ ├── COMPILE.TXT │ ├── README-CREDIT.txt │ └── npclient.c └── trackir-client │ ├── client.c │ └── client.exe ├── coverity ├── .gitignore ├── aruco │ └── .gitkeep ├── build.cmd ├── build.sh ├── libovr-025 │ └── .gitkeep ├── libovr-042 │ └── .gitkeep ├── libovr-080 │ └── .gitkeep ├── libovr-140 │ └── .gitkeep ├── opencv │ └── .gitkeep └── opentrack │ └── .gitkeep ├── csv ├── CMakeLists.txt ├── csv.cpp ├── csv.h └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── cv ├── CMakeLists.txt ├── affine.cpp ├── affine.hpp ├── init.cpp ├── init.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── numeric.hpp ├── ocv-check.cxx ├── translation-calibrator.cpp ├── translation-calibrator.hpp ├── video-widget.cpp └── video-widget.hpp ├── dinput ├── CMakeLists.txt ├── dinput.cpp ├── dinput.hpp ├── export.hpp ├── keybinding-worker.cpp ├── keybinding-worker.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── win32-joystick.cpp └── win32-joystick.hpp ├── filter-accela-hamilton ├── CMakeLists.txt ├── accela_hamilton.cpp ├── accela_hamilton.h ├── accela_hamilton_dialog.cpp ├── accela_hamilton_filtercontrols.ui ├── accela_hamilton_settings.hpp └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── filter-accela ├── CMakeLists.txt ├── accela-settings.hpp ├── ftnoir_accela_filtercontrols.ui ├── ftnoir_filter_accela.cpp ├── ftnoir_filter_accela.h ├── ftnoir_filter_accela_dialog.cpp └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── filter-ewma2 ├── CMakeLists.txt ├── ftnoir_ewma_filtercontrols.ui ├── ftnoir_filter_ewma2.cpp ├── ftnoir_filter_ewma2.h ├── ftnoir_filter_ewma2_dialog.cpp └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── filter-hamilton ├── CMakeLists.txt ├── ReadMe.txt ├── ftnoir_filter_hamilton.cpp ├── ftnoir_filter_hamilton.h ├── ftnoir_filter_hamilton_dialog.cpp ├── ftnoir_hamilton_filtercontrols.ui └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── filter-nm ├── CMakeLists.txt ├── ftnoir_filter_nm.cpp ├── ftnoir_filter_nm.h ├── ftnoir_filter_nm_dialog.cpp ├── ftnoir_nm_filtercontrols.ui └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── freetrackclient ├── freetrackclient.c └── fttypes.h ├── gui ├── CMakeLists.txt ├── correlation-calibrator.ui ├── export.hpp ├── images │ ├── curves.png │ ├── english.png │ ├── filter-16.png │ ├── no-feed.png │ ├── opentrack.png │ ├── settings16.png │ ├── tools.png │ └── tracking-not-started.png ├── init.cpp ├── init.hpp ├── keyboard.cpp ├── keyboard.h ├── keyboard_listener.ui ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── mapping-dialog.cpp ├── mapping-dialog.hpp ├── mapping-dialog.ui ├── opentrack-res.qrc ├── options-dialog.cpp ├── options-dialog.hpp ├── options-dialog.ui ├── process-detector-fancy-table.cpp ├── process-detector-fancy-table.hpp ├── process_detector.cpp ├── process_detector.h └── process_widget.ui ├── installer ├── .gitignore ├── non-ui-blocking-exec.iss └── opentrack-installer.iss ├── logic ├── CMakeLists.txt ├── export.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── main-settings.cpp ├── main-settings.hpp ├── mappings.cpp ├── mappings.hpp ├── pipeline.cpp ├── pipeline.hpp ├── runtime-libraries.cpp ├── runtime-libraries.hpp ├── shortcuts.cpp ├── shortcuts.h ├── state.cpp ├── state.hpp ├── tracklogger.cpp ├── tracklogger.hpp ├── win32-shortcuts.cpp ├── win32-shortcuts.h ├── work.cpp └── work.hpp ├── macosx ├── CMakeLists.txt ├── Info.plist ├── PkgInfo ├── dmgbackground.png ├── install-fail-tool └── make-app-bundle.sh ├── migration ├── 20160906_00-mappings.cpp ├── 20160906_01-axis-signs.cpp ├── 20160906_02-modules.cpp ├── 20170420_00-udp-naming.cpp ├── 20171013_00-tracker-pt-threshold.cpp ├── 20171020_00-max-pitch-output.cpp ├── 20180102_00-process-detector-separator.cpp ├── 20180118_00-reltrans.cpp ├── 20180428_00-module-names.cpp ├── 20220105_00-pt-grayscale.cpp ├── 20220126_00-camera-name.cpp ├── CMakeLists.txt ├── export.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── migration.cpp └── migration.hpp ├── opentrack ├── CMakeLists.txt ├── appnap_mac.mm ├── defs.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── main-window.cpp ├── main-window.hpp ├── main-window.ui ├── main.cpp ├── new_config.ui ├── new_file_dialog.cpp ├── new_file_dialog.h ├── opentrack.ico └── resources.rc ├── options ├── CMakeLists.txt ├── base-value.cpp ├── base-value.hpp ├── bundle.cpp ├── bundle.hpp ├── connector.cpp ├── connector.hpp ├── defs.hpp ├── export.hpp ├── globals.cpp ├── globals.hpp ├── group.cpp ├── group.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── metatype.cpp ├── metatype.hpp ├── options.hpp ├── scoped.cpp ├── scoped.hpp ├── slider.cpp ├── slider.hpp ├── tie.cpp ├── tie.hpp ├── value-traits.hpp ├── value.cpp └── value.hpp ├── pose-widget ├── CMakeLists.txt ├── ReadMe.txt ├── export.hpp ├── images │ ├── side1.png │ └── side6.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── pose-widget.cpp ├── pose-widget.hpp └── posewidget.qrc ├── presets └── README.txt ├── proto-flightgear ├── CMakeLists.txt ├── fg-protocol.qrc ├── ftnoir_fgcontrols.ui ├── ftnoir_protocol_fg.cpp ├── ftnoir_protocol_fg.h ├── ftnoir_protocol_fg_dialog.cpp ├── images │ └── flightgear.png └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── proto-fsuipc ├── CMakeLists.txt ├── fsuipc-protocol.qrc ├── ftnoir_fsuipccontrols.ui ├── ftnoir_protocol_fsuipc.cpp ├── ftnoir_protocol_fsuipc.h ├── ftnoir_protocol_fsuipc_dialog.cpp ├── images │ ├── fs9.png │ └── fs91.png └── lang │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── proto-ft ├── CMakeLists.txt ├── ft-protocol.qrc ├── ftnoir_ftcontrols.ui ├── ftnoir_protocol_ft.cpp ├── ftnoir_protocol_ft.h ├── ftnoir_protocol_ft_dialog.cpp ├── images │ └── freetrack.png └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── proto-iokit-foohid ├── CMakeLists.txt ├── README.md ├── foohidjoystick.cpp ├── foohidjoystick.h ├── iokitprotocol.cpp ├── iokitprotocol.h ├── iokitprotocoldialog.cpp ├── iokitprotocoldialog.h └── lang │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── proto-libevdev ├── CMakeLists.txt ├── ftnoir_libevdev_controls.ui ├── ftnoir_protocol_libevdev.cpp ├── ftnoir_protocol_libevdev.h ├── ftnoir_protocol_libevdev_dialog.cpp ├── images │ └── linux.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts └── libevdev-protocol.qrc ├── proto-mouse ├── CMakeLists.txt ├── ftnoir_mousecontrols.ui ├── ftnoir_protocol_mouse.cpp ├── ftnoir_protocol_mouse.h ├── ftnoir_protocol_mouse_dialog.cpp ├── images │ └── mouse.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── mouse-settings.hpp └── win32-mouse-protocol.qrc ├── proto-osc ├── CMakeLists.txt ├── dialog.cpp ├── dialog.hpp ├── dialog.ui ├── images │ └── osc-icon.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── metadata.cpp ├── metadata.hpp ├── osc-res.qrc ├── proto.cpp ├── proto.hpp └── settings.hpp ├── proto-simconnect ├── CMakeLists.txt ├── fsx_p3d_sp2_xpack.manifest ├── fsx_rtm.manifest ├── fsx_sp1.manifest ├── fsx_sp2.manifest ├── fsx_steam_last.manifest ├── fsx_steam_orig.manifest ├── ftnoir-protocol-sc.rc ├── ftnoir_protocol_sc.cpp ├── ftnoir_protocol_sc.h ├── ftnoir_protocol_sc_dialog.cpp ├── ftnoir_sccontrols.ui ├── images │ ├── fsx.png │ └── fsx1.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── manifest-template.in ├── sc-protocol.qrc └── simconnect versions.txt ├── proto-udp ├── CMakeLists.txt ├── ftnoir_ftncontrols.ui ├── ftnoir_protocol_ftn.cpp ├── ftnoir_protocol_ftn.h ├── ftnoir_protocol_ftn_dialog.cpp └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── proto-vjoystick ├── CMakeLists.txt ├── images │ └── vjoystick.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── vjoystick.cpp ├── vjoystick.h ├── vjoystick.qrc ├── vjoystick.ui └── vjoystick_dialog.cpp ├── proto-wine ├── CMakeLists.txt ├── ftnoir_protocol_wine.cpp ├── ftnoir_protocol_wine.h ├── ftnoir_protocol_wine_dialog.cpp ├── ftnoir_winecontrols.ui ├── images │ └── wine.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── opentrack-wrapper-wine-main.cxx ├── opentrack-wrapper-wine-posix.cxx ├── opentrack-wrapper-wine-windows.cxx ├── proton.cpp ├── proton.h ├── wine-protocol.qrc └── wine-shm.h ├── qxt-mini ├── CMakeLists.txt ├── QxtGlobalShortcut ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── powerset.hpp ├── qxtglobal.h ├── qxtglobalshortcut.cpp ├── qxtglobalshortcut.h ├── qxtglobalshortcut_mac.cpp ├── qxtglobalshortcut_p.h ├── qxtglobalshortcut_x11.cpp ├── x11-keymap.cpp └── x11-keymap.hpp ├── redist ├── x64 │ ├── msvcp110.dll │ └── msvcr110.dll └── x86 │ ├── msvcp110.dll │ └── msvcr110.dll ├── sdk-paths-runner@GNU-Linux.cmake ├── sdk-paths-runneradmin@MSVC-windows.cmake ├── sdk-paths-sthalik@Clang-Linux.cmake ├── sdk-paths-sthalik@Clang-windows.cmake ├── sdk-paths-sthalik@GNU-windows.cmake ├── sdk-paths-sthalik@MSVC-windows.cmake ├── settings └── facetracknoir supported games.csv ├── spline ├── CMakeLists.txt ├── axis-opts.cpp ├── axis-opts.hpp ├── broken │ ├── qfunctionconfiguratorplugin.cpp │ └── qfunctionconfiguratorplugin.h ├── export.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── spline-widget.cpp ├── spline-widget.hpp ├── spline.cpp └── spline.hpp ├── tracker-aruco ├── CMakeLists.txt ├── aruco-tracker.qrc ├── aruco-trackercontrols.ui ├── compile-test │ └── abi.cpp ├── ftnoir_tracker_aruco.cpp ├── ftnoir_tracker_aruco.h ├── images │ └── aruco.png └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tracker-easy ├── CMakeLists.txt ├── Resources │ ├── cap_front.png │ ├── cap_side.png │ ├── clip_front.png │ ├── clip_side.png │ └── easy-tracker-logo.png ├── doc │ ├── index.htm │ ├── logo.png │ ├── ptrack.ico │ ├── settings1.png │ ├── settings2.png │ ├── settings3.png │ └── style.css ├── export.hpp ├── kalman-filter-pose.cpp ├── kalman-filter-pose.h ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── module.cpp ├── module.hpp ├── ocv-check.cxx ├── point-extractor.cpp ├── point-extractor.h ├── preview.cpp ├── preview.h ├── settings.h ├── tracker-easy-dialog.cpp ├── tracker-easy-dialog.h ├── tracker-easy-settings.ui ├── tracker-easy.cpp ├── tracker-easy.h └── tracker_easy.qrc ├── tracker-eyeware-beam ├── CMakeLists.txt ├── eyeware_beam.cpp ├── eyeware_beam.h ├── eyeware_beam.qrc ├── eyeware_beam.ui ├── eyeware_beam_logo.png └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tracker-freepie-udp ├── CMakeLists.txt ├── freepie-udp-controls.ui ├── freepie-udp-res.qrc ├── ftnoir_tracker_freepie-udp.cpp ├── ftnoir_tracker_freepie-udp.h ├── ftnoir_tracker_freepie-udp_dialog.cpp ├── glovepie.png └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tracker-fusion ├── CMakeLists.txt ├── fusion-tracker-logo.png ├── fusion.cpp ├── fusion.h ├── fusion.qrc ├── fusion.ui ├── fusion_dialog.cpp └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tracker-hatire ├── CMakeLists.txt ├── ftnoir_arduino_type.h ├── ftnoir_hat.qrc ├── ftnoir_hatcontrols.ui ├── ftnoir_tracker_hat.cpp ├── ftnoir_tracker_hat.h ├── ftnoir_tracker_hat_dialog.cpp ├── ftnoir_tracker_hat_dialog.h ├── ftnoir_tracker_hat_settings.h ├── images │ ├── hat.ico │ ├── hat.png │ └── hat_logo.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── thread.cpp └── thread.hpp ├── tracker-hydra ├── CMakeLists.txt ├── ftnoir_hydra_clientcontrols.ui ├── ftnoir_tracker_hydra.cpp ├── ftnoir_tracker_hydra.h ├── ftnoir_tracker_hydra_dialog.cpp └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tracker-joystick ├── CMakeLists.txt ├── ftnoir_tracker_joystick.cpp ├── ftnoir_tracker_joystick.h ├── ftnoir_tracker_joystick_controls.ui ├── ftnoir_tracker_joystick_dialog.cpp └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tracker-kinect-face ├── CMakeLists.txt ├── camera_kinect_ir.cpp ├── camera_kinect_ir.h ├── images │ └── kinect.png ├── kinect_face.qrc ├── kinect_face_settings.cpp ├── kinect_face_settings.h ├── kinect_face_settings.ui ├── kinect_face_tracker.cpp ├── kinect_face_tracker.h └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tracker-linux-joystick ├── CMakeLists.txt ├── ftnoir_tracker_linux_joystick.cpp ├── ftnoir_tracker_linux_joystick.h ├── ftnoir_tracker_linux_joystick_controls.ui ├── ftnoir_tracker_linux_joystick_dialog.cpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts └── linux_joystick.cpp ├── tracker-neuralnet ├── BUILD.md ├── CMakeLists.txt ├── deadzone_filter.cpp ├── deadzone_filter.h ├── ftnoir_tracker_neuralnet.cpp ├── ftnoir_tracker_neuralnet.h ├── images │ └── neuralnet.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── model_adapters.cpp ├── model_adapters.h ├── models │ ├── head-localizer.onnx │ ├── head-pose-0.2-big.onnx │ ├── head-pose-0.2-small.onnx │ └── head-pose-0.3-big-quantized.onnx ├── neuralnet-tracker.qrc ├── neuralnet-trackercontrols.ui ├── opencv_contrib.h ├── preview.cpp ├── preview.h ├── redist │ └── vcomp140.dll ├── tests.cpp └── unscented_trafo.h ├── tracker-pt ├── CMakeLists.txt ├── FTNoIR_PT_Controls.ui ├── Resources │ ├── Logo_IR.png │ ├── cap_front.png │ ├── cap_side.png │ ├── clip_front.png │ └── clip_side.png ├── doc │ ├── index.htm │ ├── logo.png │ ├── ptrack.ico │ ├── settings1.png │ ├── settings2.png │ ├── settings3.png │ └── style.css ├── ftnoir_tracker_pt.cpp ├── ftnoir_tracker_pt.h ├── ftnoir_tracker_pt_dialog.cpp ├── ftnoir_tracker_pt_dialog.h ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── module │ ├── CMakeLists.txt │ ├── Resources │ │ └── Logo_IR.png │ ├── camera.cpp │ ├── camera.h │ ├── export.hpp │ ├── frame.cpp │ ├── frame.hpp │ ├── lang │ │ ├── de_DE.ts │ │ ├── nl_NL.ts │ │ ├── ru_RU.ts │ │ ├── stub.ts │ │ └── zh_CN.ts │ ├── module.cpp │ ├── module.hpp │ ├── point_extractor.cpp │ ├── point_extractor.h │ └── tracker_pt.qrc ├── point-filter.cpp ├── point-filter.hpp ├── point_tracker.cpp ├── point_tracker.h ├── pt-api.cpp ├── pt-api.hpp ├── pt-settings.hpp └── tracker_pt_base.qrc ├── tracker-rift-140 ├── CMakeLists.txt ├── dialog.cpp ├── dialog.ui ├── images │ ├── medium.png │ ├── rift_medium.png │ ├── rift_small.png │ ├── rift_tiny.png │ ├── small.png │ └── tiny.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── rift-140.cpp ├── rift-140.hpp └── rift-140.qrc ├── tracker-rs ├── CMakeLists.txt ├── README.md ├── ftnoir_tracker_rs.cpp ├── ftnoir_tracker_rs.h ├── ftnoir_tracker_rs_controls.cpp ├── ftnoir_tracker_rs_controls.h ├── ftnoir_tracker_rs_controls.ui ├── ftnoir_tracker_rs_worker.cpp ├── ftnoir_tracker_rs_worker.h ├── images │ ├── RS.png │ └── intel-16x16.png ├── imagewidget.cpp ├── imagewidget.h ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── rs_impl │ ├── CMakeLists.txt │ ├── attic │ │ ├── bin │ │ │ ├── amd64 │ │ │ │ └── .gitignore │ │ │ └── ia32 │ │ │ │ └── .gitignore │ │ ├── build.bat │ │ ├── build_common.bat │ │ └── udp_sender.cpp │ ├── ftnoir_tracker_rs_impl.cpp │ ├── ftnoir_tracker_rs_impl.h │ └── lang │ │ ├── nl_NL.ts │ │ ├── ru_RU.ts │ │ └── stub.ts └── rs_tracker.qrc ├── tracker-s2bot ├── CMakeLists.txt ├── README.md ├── ftnoir_tracker_s2bot.cpp ├── ftnoir_tracker_s2bot.h ├── ftnoir_tracker_s2bot_dialog.cpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── s2bot-controls.ui ├── s2bot-res.qrc └── s2bot.png ├── tracker-steamvr ├── CMakeLists.txt ├── dialog.ui ├── images │ └── steamvr.png ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── steamvr.cpp ├── steamvr.hpp └── steamvr.qrc ├── tracker-test ├── CMakeLists.txt ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── test.cpp ├── test.h ├── test.ui └── test_dialog.cpp ├── tracker-tobii ├── CMakeLists.txt ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tobii.cpp ├── tobii.h ├── tobii.qrc ├── tobii.ui ├── tobii_dialog.cpp └── tobii_logo.png ├── tracker-trackhat ├── CMakeLists.txt ├── camera.cpp ├── dialog.cpp ├── dialog.hpp ├── dialog.ui ├── extractor.cpp ├── frame.cpp ├── handle.cpp ├── images │ ├── trackhat-64x64.png │ ├── trackhat.ico │ └── trackhat.png ├── lang │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── led.cpp ├── metadata.cpp ├── metadata.hpp ├── settings.cpp ├── tracker_trackhat.qrc ├── trackhat-res.qrc └── trackhat.hpp ├── tracker-udp ├── CMakeLists.txt ├── ftnoir_ftnclientcontrols.ui ├── ftnoir_tracker_udp.cpp ├── ftnoir_tracker_udp.h ├── ftnoir_tracker_udp_dialog.cpp └── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tracker-wii ├── CMakeLists.txt ├── Resources │ ├── on.png │ ├── sync.png │ ├── usb.png │ ├── wii.ico │ └── wii.png ├── doc │ ├── XP11_opentrack_wiimote1.jpg │ └── XP11_opentrack_wiimote2.jpg ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── tracker_wii.qrc ├── wii_camera.cpp ├── wii_camera.h ├── wii_frame.cpp ├── wii_frame.hpp ├── wii_module.cpp ├── wii_module.hpp ├── wii_point_extractor.cpp ├── wii_point_extractor.h └── wiiyourself │ ├── CMakeLists.txt │ ├── History.txt │ ├── License.txt │ ├── ReadMe.txt │ ├── lang │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts │ ├── wiimote.cpp │ ├── wiimote.h │ ├── wiimote_common.h │ └── wiimote_state.h ├── variant └── default │ └── _variant.cmake ├── video-opencv ├── CMakeLists.txt ├── impl-camera.cpp ├── impl-metadata.cpp ├── impl.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── video-property-page.cpp └── video-property-page.hpp ├── video-ps3eye ├── CMakeLists.txt ├── dialog.ui ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── module.cpp ├── module.hpp ├── shm-layout.hpp ├── shm.cxx ├── shm.hpp └── wrapper.cxx ├── video ├── CMakeLists.txt ├── camera.cpp ├── camera.hpp ├── export.hpp ├── lang │ ├── de_DE.ts │ ├── nl_NL.ts │ ├── ru_RU.ts │ ├── stub.ts │ └── zh_CN.ts ├── video-widget.cpp └── video-widget.hpp └── x-plane-plugin ├── CMakeLists.txt ├── lang ├── nl_NL.ts ├── ru_RU.ts └── stub.ts └── plugin.c /.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org/ 2 | 3 | root = true 4 | 5 | [*] 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | indent_style = space 11 | indent_size = 4 12 | tab_width = 4 13 | 14 | [Makefile] 15 | indent_style = tab 16 | 17 | [*.{bat,cmd}] 18 | end_of_line = crlf 19 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.[ch]pp text eol=lf 2 | *.[ch] text eol=lf 3 | *.[ch]xx text eol=lf 4 | *.cc text eol=lf 5 | *.rc text eol=lf 6 | 7 | *.git?* text eol=lf 8 | 9 | *.txt text eol=lf 10 | *.cmake text eol=lf 11 | 12 | *.md text eol=lf 13 | *.csv text eol=lf 14 | *.json text eol=lf 15 | 16 | *.ui text eol=lf 17 | *.qrc text eol=lf 18 | *.ts text eol=lf 19 | *.in text eol=lf 20 | 21 | *.cmd text eol=crlf 22 | *.bat text eol=crlf 23 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Issues on the issue tracker 2 | 3 | Please report issues rather than using old software versions. Unless problems are identified they'll never get corrected in new versions. 4 | 5 | Don't worry about your own English, it's not a problem since we'll be able to communicate anyway. If you're very concerned, please note that in the issue, and you'll receive responses in very plain English. 6 | 7 | # Contributing code to opentrack 8 | 9 | Pull requests for contributing patches, improvements and new features are greatly welcome through GitHub. 10 | 11 | By submitting a pull request, you agree to allow the project owner to license your work under the [ISC license](https://opensource.org/licenses/ISC). 12 | Please add your copyright and licensing information before submitting a pull request. 13 | 14 | Contributions may depend on LGPL software but not be a derivative work of LGPL software (and more specifically be statically linked to any LGPL code). 15 | Contributions that are licensed under a copyleft license (such as GPL) cannot be integrated. 16 | -------------------------------------------------------------------------------- /.github/workflows/build-windows.bat: -------------------------------------------------------------------------------- 1 | set path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\CMake\bin;C:\Program Files\Git\cmd;%GITHUB_WORKSPACE%/ninja-build 2 | "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat" >nul && %* 3 | exit /b %ERRORLEVEL% 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /build*/ 2 | /build 3 | /build-* 4 | .DS_Store 5 | /sdk-paths-*.cmake 6 | /.idea/ 7 | /.vs/ 8 | /CMakeSettings.json 9 | .gtm/ 10 | .vscode 11 | .history 12 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "video-ps3eye/ps3eye-driver"] 2 | path = video-ps3eye/ps3eye-driver 3 | url = https://github.com/opentrack/PS3EYEDriver 4 | -------------------------------------------------------------------------------- /3rdparty-notices/FACETRACKNOIR-COPYING.txt: -------------------------------------------------------------------------------- 1 | The opentrack project is a fork of "FaceTrackNoIR" software. 2 | 3 | Original project's site located at <http://facetracknoir.sourceforge.net/home/default.htm> 4 | 5 | Copyright (c) 2015, Wim Vriend 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any 8 | purpose with or without fee is hereby granted, provided that the above 9 | copyright notice and this permission notice appear in all copies. 10 | -------------------------------------------------------------------------------- /3rdparty-notices/LIBOVR-COPYING.txt: -------------------------------------------------------------------------------- 1 | Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved. 2 | 3 | Use of this software is subject to the terms of the Oculus license 4 | agreement provided at the time of installation or download, or which 5 | otherwise accompanies this software in either electronic or hard copy form. -------------------------------------------------------------------------------- /3rdparty-notices/NFAILCLIENT-CREDIT.txt: -------------------------------------------------------------------------------- 1 | NFailClient is a clean-room implementation of NFail LLC NFailClient. 2 | 3 | Completed as an operation spanning the whole Europe, NFailClient was 4 | written by gnomes, halflings and rakshasa. -------------------------------------------------------------------------------- /3rdparty-notices/VJOYSTICK-COPYING.txt: -------------------------------------------------------------------------------- 1 | The vjoystick software is used under fair use terms. 2 | 3 | Software copyright follows: 4 | 5 | Copyright (c) Shaul Eizikovich. All rights reserved. 6 | 7 | THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY 8 | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 9 | IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR 10 | PURPOSE. 11 | -------------------------------------------------------------------------------- /3rdparty-notices/ps3eyedriver/libusb0-AUTHORS.txt: -------------------------------------------------------------------------------- 1 | This software is distributed under the following licenses: 2 | Driver: GNU General Public License (GPL) 3 | Library: GNU Lesser General Public (LGPL) 4 | Test Files: GNU Lesser General Public (LGPL) 5 | Filter Installer: GNU Lesser General Public (LGPL) 6 | 7 | Library, Test Programs: 8 | 9 | Stephan Meyer, <ste_meyer@web.de> 10 | Johannes Erdfelt, <johannes@erdfelt.com> 11 | Thomas Sailer, <sailer@ife.ee.ethz.ch> 12 | 13 | Drivers, Installer: 14 | 15 | Stephan Meyer, <ste_meyer@web.de> 16 | Travis Robinson, <libusbdotnet@gmail.com> 17 | 18 | Testing, Technical support: 19 | 20 | Xiaofan Chen, <xiaofanc@gmail.com> 21 | -------------------------------------------------------------------------------- /3rdparty-notices/ps3eyedriver/ps3eyedriver-opentrack-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Licensing for PS3EYEDriver modifications: 2 | 3 | --- 4 | 5 | Copyright (c) 2019, Stanislaw Halik <sthalik@misaki.pl> 6 | 7 | Permission to use, copy, modify, and/or distribute this software for any 8 | purpose with or without fee is hereby granted, provided that the above 9 | copyright notice and this permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 12 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 14 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 15 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 16 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 17 | SOFTWARE. 18 | -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- 1 | The following people contributed parts of the codebase to the project, in 2 | chronological order: 3 | 4 | - Stanislaw Halik <<sthalik@misaki.pl>> 5 | - Chris Thompson <<mm0zct@gmail.com>> 6 | - Donovan Baarda <<abo@minkirri.apana.org.au>> 7 | - Xavier Hallade <<xavier.hallade@intel.com>> 8 | - Michael Welter <<mw.pub@welter-4d.de>> 9 | - Attila Csipa <<git@csipa.net>> 10 | - Wei Shuai <<cpuwolf@gmail.com>> 11 | - Stéphane Lenclud <<github@lenclud.com>> 12 | 13 | See OPENTRACK-LICENSING.txt for licensing information. 14 | -------------------------------------------------------------------------------- /WARRANTY.txt: -------------------------------------------------------------------------------- 1 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 3 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 4 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 5 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 6 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 7 | SOFTWARE. 8 | -------------------------------------------------------------------------------- /api/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(api NO-COMPAT BIN) 2 | 3 | -------------------------------------------------------------------------------- /api/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_API 8 | # define OTR_API_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_API_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /api/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | <context> 5 | <name>module_status_mixin</name> 6 | <message> 7 | <source>Unknown error</source> 8 | <translation>Unbekannter Fehler</translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /api/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | <context> 5 | <name>module_status_mixin</name> 6 | <message> 7 | <source>Unknown error</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /api/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | <context> 5 | <name>module_status_mixin</name> 6 | <message> 7 | <source>Unknown error</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /api/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | <context> 5 | <name>module_status_mixin</name> 6 | <message> 7 | <source>Unknown error</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /api/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | <context> 5 | <name>module_status_mixin</name> 6 | <message> 7 | <source>Unknown error</source> 8 | <translation>未知错误</translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /bin/NPClient.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/NPClient.dll -------------------------------------------------------------------------------- /bin/NPClient64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/NPClient64.dll -------------------------------------------------------------------------------- /bin/TrackIR.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/TrackIR.exe -------------------------------------------------------------------------------- /bin/build-msvc.cmd: -------------------------------------------------------------------------------- 1 | @setlocal ENABLEDELAYEDEXPANSION 2 | @echo off 3 | 4 | call msvc 5 | 6 | taskkill -f -im trackir.exe 2>%SystemDrive%\NUL 7 | 8 | call:check cmake . 9 | call:check ninja i18n 10 | call:check "d:/cygwin64/bin/dash.exe" -c "git checkout -f -- ../*/lang/ ../*/*/lang/" 11 | call:check ninja -j6 install 12 | call:check "d:/cygwin64/bin/dash.exe" -c "git checkout -f -- ../*/lang/ ../*/*/lang/" 13 | 14 | exit /b 0 15 | 16 | :check 17 | 18 | cmd /c "msvc d:/cygwin64/bin/nice.exe -n 20 -- %*" 19 | 20 | if %ERRORLEVEL% EQU 0 ( 21 | GOTO:EOF 22 | ) 23 | 24 | rem echo error %ERRORLEVEL% 25 | exit %ERRORLEVEL% 26 | 27 | -------------------------------------------------------------------------------- /bin/cleye.config: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <cleye> 3 | <item name="mode" value="advanced" /> 4 | </cleye> -------------------------------------------------------------------------------- /bin/drmemory-suppressions.txt: -------------------------------------------------------------------------------- 1 | UNADDRESSABLE ACCESS 2 | name=false positive 1 3 | Qt5Gui.dll!qt_blend_argb32_on_argb32_ssse3 4 | 5 | INVALID HEAP ARGUMENT 6 | name=stfu qtcore 7 | Qt5Core.dll!* 8 | 9 | INVALID HEAP ARGUMENT 10 | name=stfu qwindows 1 11 | qwindows.dll!* 12 | 13 | LEAK 14 | name=stfu qwindows 2 15 | qwindows.dll!* 16 | 17 | INVALID HEAP ARGUMENT 18 | name=stfu qtgui 19 | Qt5Gui.dll!* 20 | 21 | INVALID HEAP ARGUMENT 22 | name=stfu sixense 1 23 | sixense.dll!* 24 | 25 | UNADDRESSABLE ACCESS 26 | name=stfu sixense 2 27 | sixense.dll!* 28 | 29 | UNINITIALIZED READ 30 | name=dinput 31 | system call NtUserGetRawInputDeviceInfo parameter value #2 32 | 33 | LEAK 34 | name=stfu leak qtcore 1 35 | Qt5Core.dll!* 36 | 37 | LEAK 38 | name=cv 1 39 | opentrack-tracker-pt.dll!cv::`dynamic initializer for '__initialization_mutex_initializer'' 40 | 41 | LEAK 42 | name=cv 2 43 | opentrack-tracker-aruco.dll!cv::`dynamic initializer for '__initialization_mutex_initializer'' -------------------------------------------------------------------------------- /bin/freetrackclient.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/freetrackclient.dll -------------------------------------------------------------------------------- /bin/freetrackclient64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/freetrackclient64.dll -------------------------------------------------------------------------------- /bin/qt.conf: -------------------------------------------------------------------------------- 1 | [Platforms] 2 | WindowsArguments = dpiawareness=1 3 | [Paths] 4 | Libraries = . 5 | LibraryExecutables = . 6 | Binaries = . 7 | Plugins = . 8 | Imports = . 9 | Translations = . 10 | -------------------------------------------------------------------------------- /cmake/linux.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_BUILD_TYPE_INIT RELEASE) 2 | 3 | set(CMAKE_CXX_FLAGS "" CACHE STRING "" FORCE) 4 | set(CMAKE_C_FLAGS "" CACHE STRING "" FORCE) 5 | 6 | set(CMAKE_AR "gcc-ar" CACHE STRING "" FORCE) 7 | set(CMAKE_NM "gcc-nm" CACHE STRING "" FORCE) 8 | set(CMAKE_RANLIB "gcc-ranlib" CACHE STRING "" FORCE) 9 | 10 | set(CMAKE_C_FLAGS_RELEASE "-ffast-math -O3 -flto -fuse-linker-plugin -fPIC" CACHE STRING "" FORCE) 11 | set(CMAKE_CXX_FLAGS_RELEASE " ${CMAKE_C_FLAGS_RELEASE} " CACHE STRING "" FORCE) 12 | 13 | set(cmake-link-common "") 14 | set(CMAKE_EXE_LINKER_FLAGS "${cmake-link-common}" CACHE STRING "" FORCE) 15 | set(CMAKE_SHARED_LINKER_FLAGS ${cmake-link-common} CACHE STRING "" FORCE) 16 | set(CMAKE_MODULE_LINKER_FLAGS ${cmake-link-common} CACHE STRING "" FORCE) 17 | 18 | set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-flto -fuse-linker-plugin" CACHE STRING "" FORCE) 19 | set(CMAKE_SHARED_LINKER_FLAGS_RELEASE ${CMAKE_EXE_LINKER_FLAGS_RELEASE} CACHE STRING "" FORCE) 20 | set(CMAKE_MODULE_LINKER_FLAGS_RELEASE ${CMAKE_EXE_LINKER_FLAGS_RELEASE} CACHE STRING "" FORCE) 21 | 22 | set(OpenCV_DIR ~/dev/opentrack-depends/opencv/build) 23 | -------------------------------------------------------------------------------- /cmake/mrproper.cmake: -------------------------------------------------------------------------------- 1 | list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") 2 | include(opentrack-mrproper) 3 | 4 | cleanup_build_dir() 5 | -------------------------------------------------------------------------------- /cmake/opentrack-opencv.cmake: -------------------------------------------------------------------------------- 1 | include_guard(GLOBAL) 2 | 3 | include(opentrack-boilerplate) 4 | find_package(OpenCV QUIET) 5 | -------------------------------------------------------------------------------- /cmake/opentrack-org.cmake: -------------------------------------------------------------------------------- 1 | include_guard(GLOBAL) 2 | function(otr_write_org) 3 | get_property(ident GLOBAL PROPERTY opentrack-ident) 4 | if (ident STREQUAL "") 5 | message(FATAL_ERROR "must set global property `opentrack-ident' in `opentrack-variant.cmake'") 6 | endif() 7 | otr_escape_string(ident "${ident}") 8 | set(new-str "#pragma once 9 | #define OPENTRACK_ORG \"${ident}\" 10 | ") 11 | 12 | set(filename "${CMAKE_BINARY_DIR}/opentrack-org.hxx") 13 | set(old-str "") 14 | if(EXISTS "${filename}") 15 | file(READ "${filename}" old-str) 16 | endif() 17 | if(NOT old-str STREQUAL new-str) 18 | file(WRITE "${filename}" "${new-str}") 19 | endif() 20 | endfunction() 21 | otr_write_org() 22 | -------------------------------------------------------------------------------- /cmake/opentrack-policy.cmake: -------------------------------------------------------------------------------- 1 | include_guard(GLOBAL) 2 | 3 | set(_policies 4 | CMP0020 5 | CMP0022 6 | CMP0058 7 | CMP0028 8 | CMP0042 9 | CMP0063 10 | CMP0053 11 | CMP0011 12 | CMP0054 13 | CMP0012 14 | CMP0069 15 | CMP0063 16 | CMP0074 17 | ) 18 | foreach(k ${_policies}) 19 | if(POLICY ${k}) 20 | cmake_policy(SET ${k} NEW) 21 | endif() 22 | endforeach() 23 | 24 | set(CMAKE_INSTALL_MESSAGE LAZY) 25 | -------------------------------------------------------------------------------- /cmake/opentrack-variant.cmake: -------------------------------------------------------------------------------- 1 | include_guard(GLOBAL) 2 | 3 | function(otr_init_variant) 4 | set_property(GLOBAL PROPERTY opentrack-variant "default") 5 | set_property(GLOBAL PROPERTY opentrack-ident "opentrack-2.3") 6 | 7 | set(subprojects 8 | "tracker-*" 9 | "proto-*" 10 | "filter-*" 11 | "options" 12 | "api" 13 | "compat" 14 | "logic" 15 | "dinput" 16 | "gui" 17 | "main" 18 | "x-plane-plugin" 19 | "csv" 20 | "pose-widget" 21 | "spline" 22 | "qxt-mini" 23 | "macosx" 24 | "cv" 25 | "migration" 26 | "main-window" 27 | "video" 28 | "video-*" 29 | "opentrack" 30 | ) 31 | set_property(GLOBAL PROPERTY opentrack-subprojects "${subprojects}") 32 | endfunction() 33 | -------------------------------------------------------------------------------- /cmake/opentrack-version.cmake: -------------------------------------------------------------------------------- 1 | include_guard(GLOBAL) 2 | include(GetGitRevisionDescription) 3 | 4 | find_package(Git QUIET) 5 | if(GIT_FOUND) 6 | git_describe(OPENTRACK_COMMIT --tags --always) 7 | endif() 8 | 9 | file(WRITE ${CMAKE_BINARY_DIR}/opentrack-version.hxx "#define OPENTRACK_VERSION \"${OPENTRACK_COMMIT}\"") 10 | 11 | set(version-string "\ 12 | #ifdef __cplusplus 13 | extern \"C\" 14 | #else 15 | extern 16 | #endif 17 | 18 | const char* const opentrack_version; 19 | const char* const opentrack_version = \"${OPENTRACK_COMMIT}\"; 20 | ") 21 | 22 | set(file "${CMAKE_CURRENT_BINARY_DIR}/version.cpp") 23 | set(crapola-ver) 24 | if(EXISTS "${file}") 25 | file(READ "${file}" crapola-ver) 26 | endif() 27 | 28 | if(NOT (crapola-ver STREQUAL version-string)) 29 | file(WRITE "${file}" "${version-string}") 30 | endif() 31 | 32 | add_library(opentrack-version STATIC "${file}") 33 | 34 | if(NOT MSVC) 35 | target_compile_options(opentrack-version PRIVATE -fno-lto) 36 | endif() 37 | -------------------------------------------------------------------------------- /cmake/translation-stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="@LANG@"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /cmake/unix.cmake: -------------------------------------------------------------------------------- 1 | # this file only serves as toolchain file when specified so explicitly 2 | # when building the software. from repository's root directory: 3 | # mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=$(pwd)/../cmake/mingw-w64.cmake 4 | # -sh 20140922 5 | 6 | SET(CMAKE_C_COMPILER cc) 7 | SET(CMAKE_CXX_COMPILER c++) 8 | 9 | SET(CMAKE_FIND_ROOT_PATH /usr) 10 | 11 | set(cpu "-O3 -march=native -ffast-math -g") 12 | set(CFLAGS-OVERRIDE "" CACHE STRING "") 13 | 14 | set(CMAKE_C_FLAGS_RELEASE "${cpu} ${CFLAGS-OVERRIDE}" CACHE STRING "" FORCE) 15 | set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE} CACHE STRING "" FORCE) 16 | set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${cpu} ${CFLAGS-OVERRIDE}" CACHE STRING "" FORCE) 17 | set(CMAKE_EXE_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE} CACHE STRING "" FORCE) 18 | set(CMAKE_MODULE_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE} CACHE STRING "" FORCE) 19 | set(CMAKE_BUILD_TYPE "RELEASE" CACHE STRING "" FORCE) 20 | -------------------------------------------------------------------------------- /compat/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(compat NO-COMPAT BIN) 2 | 3 | if(NOT WIN32 AND NOT APPLE) 4 | target_link_libraries(${self} rt) 5 | endif() 6 | 7 | if(WIN32) 8 | target_link_libraries(${self} strmiids) 9 | endif() 10 | 11 | 12 | if(APPLE) 13 | target_link_libraries(${self} proc) 14 | elseif(LINUX) 15 | otr_pkgconfig_(has-libproc2 ${self} libproc2) 16 | if(has-libproc2) 17 | target_compile_definitions(${self} PUBLIC -DOTR_HAS_LIBPROC2) 18 | else() 19 | otr_pkgconfig_(has-libprocps ${self} libprocps) 20 | if(NOT has-libprocps) 21 | message(FATAL_ERROR "install libproc2 or libprocps development files") 22 | endif() 23 | endif() 24 | endif() 25 | -------------------------------------------------------------------------------- /compat/activation-context.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifdef _WIN32 4 | 5 | #include "export.hpp" 6 | 7 | #include <cstdint> 8 | #include <QString> 9 | 10 | class OTR_COMPAT_EXPORT activation_context 11 | { 12 | public: 13 | explicit activation_context(const QString& module_name, int resid); 14 | ~activation_context(); 15 | 16 | explicit operator bool() const { return ok; } 17 | 18 | private: 19 | std::uintptr_t cookie = 0; 20 | void* handle = (void*)-1; 21 | bool ok = false; 22 | }; 23 | 24 | #else 25 | # error "tried to use win32-only activation context" 26 | #endif 27 | -------------------------------------------------------------------------------- /compat/base-path.cpp: -------------------------------------------------------------------------------- 1 | #undef NDEBUG 2 | #include <cassert> 3 | 4 | #include "base-path.hpp" 5 | #include <QCoreApplication> 6 | 7 | const QString& application_base_path() 8 | { 9 | assert(qApp && "logic error"); 10 | static QString path = QCoreApplication::applicationDirPath(); 11 | return path; 12 | } 13 | -------------------------------------------------------------------------------- /compat/base-path.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "export.hpp" 4 | 5 | #include <QString> 6 | 7 | OTR_COMPAT_EXPORT 8 | const QString& application_base_path(); 9 | 10 | #define OPENTRACK_BASE_PATH (application_base_path()) 11 | 12 | -------------------------------------------------------------------------------- /compat/camera-names.hpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2015, Stanislaw Halik <sthalik@misaki.pl> 2 | 3 | * Permission to use, copy, modify, and/or distribute this 4 | * software for any purpose with or without fee is hereby granted, 5 | * provided that the above copyright notice and this permission 6 | * notice appear in all copies. 7 | */ 8 | 9 | #pragma once 10 | 11 | #include <vector> 12 | #include <QString> 13 | # include <tuple> 14 | 15 | #include "export.hpp" 16 | 17 | OTR_COMPAT_EXPORT std::vector<std::tuple<QString, int>> get_camera_names(); 18 | OTR_COMPAT_EXPORT int camera_name_to_index(const QString &name); 19 | 20 | -------------------------------------------------------------------------------- /compat/check-visible.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "export.hpp" 4 | #include "macros.h" 5 | 6 | class QWidget; 7 | 8 | never_inline OTR_COMPAT_EXPORT 9 | void set_is_visible(QWidget const& w, bool force = false); 10 | 11 | OTR_COMPAT_EXPORT 12 | bool check_is_visible(); 13 | 14 | OTR_COMPAT_EXPORT 15 | void force_is_visible(bool value); 16 | -------------------------------------------------------------------------------- /compat/euler.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* Copyright (c) 2016-2018 Stanislaw Halik 4 | * 5 | * Permission to use, copy, modify, and/or distribute this software for any 6 | * purpose with or without fee is hereby granted, provided that the above 7 | * copyright notice and this permission notice appear in all copies. 8 | */ 9 | 10 | #include "export.hpp" 11 | #include "simple-mat.hpp" 12 | 13 | namespace euler { 14 | 15 | template<int h_, int w_> using dmat = Mat<double, h_, w_>; 16 | 17 | using dvec3 = Mat<double, 3, 1>; 18 | 19 | using rmat = dmat<3, 3>; 20 | using Pose_ = dmat<3, 1>; 21 | 22 | rmat OTR_COMPAT_EXPORT euler_to_rmat(const Pose_& input); 23 | Pose_ OTR_COMPAT_EXPORT rmat_to_euler(const rmat& R); 24 | 25 | } // end ns euler 26 | -------------------------------------------------------------------------------- /compat/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_COMPAT 8 | # define OTR_COMPAT_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_COMPAT_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /compat/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /compat/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /compat/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /compat/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /compat/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /compat/library-path.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // from build directory 4 | #include "opentrack-library-path.hxx" 5 | -------------------------------------------------------------------------------- /compat/linkage-macros.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifndef OTR_GENERIC_EXPORT 4 | # if defined _MSC_VER 5 | # define OTR_GENERIC_EXPORT __declspec(dllexport) 6 | # define OTR_GENERIC_IMPORT __declspec(dllimport) 7 | # elif defined _WIN32 && !defined __WINE__ 8 | # define OTR_GENERIC_EXPORT __attribute__((dllexport, visibility ("default"))) 9 | # define OTR_GENERIC_IMPORT __attribute__((dllimport)) 10 | # else 11 | # define OTR_GENERIC_EXPORT __attribute__((visibility ("default"))) 12 | # define OTR_GENERIC_IMPORT 13 | # endif 14 | #endif 15 | 16 | #if defined __APPLE__ || defined __MINGW32__ 17 | # define OTR_NO_TMPL_INST // link failure on both targets 18 | #endif 19 | 20 | #if defined OTR_NO_TMPL_INST 21 | # define OTR_TEMPLATE_IMPORT(x) 22 | # define OTR_TEMPLATE_EXPORT(x) 23 | #else 24 | # define OTR_TEMPLATE_IMPORT(x) extern template class OTR_GENERIC_IMPORT x; 25 | # define OTR_TEMPLATE_EXPORT(x) template class OTR_GENERIC_EXPORT x; 26 | #endif 27 | -------------------------------------------------------------------------------- /compat/linkage.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_${module} 8 | # define OTR_${module}_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_${module}_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /compat/math-imports.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <cmath> 4 | 5 | using std::copysign; 6 | 7 | using std::sqrt; 8 | using std::pow; 9 | 10 | using std::fabs; 11 | using std::fmin; 12 | using std::fmax; 13 | 14 | using std::atan; 15 | using std::atan2; 16 | using std::asin; 17 | using std::acos; 18 | 19 | using std::sin; 20 | using std::cos; 21 | using std::tan; 22 | 23 | using std::round; 24 | using std::fmod; 25 | 26 | using std::log; 27 | using std::log2; 28 | using std::log10; 29 | using std::exp; 30 | 31 | #include <cinttypes> 32 | 33 | using std::uintptr_t; 34 | using std::intptr_t; 35 | 36 | using std::int64_t; 37 | using std::int32_t; 38 | using std::int8_t; 39 | 40 | using std::uint64_t; 41 | using std::uint32_t; 42 | using std::uint8_t; 43 | 44 | #include <algorithm> 45 | 46 | using std::min; 47 | using std::max; 48 | 49 | #include "math.hpp" 50 | -------------------------------------------------------------------------------- /compat/math.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <cmath> 4 | #include <type_traits> 5 | 6 | template<typename t> 7 | inline auto iround(t val) -> std::enable_if_t<std::is_floating_point_v<std::decay_t<t>>, int> 8 | { 9 | return (int)std::round(val); 10 | } 11 | 12 | template <typename t> 13 | constexpr int signum(const t& x) 14 | { 15 | return x < t{0} ? -1 : 1; 16 | } 17 | -------------------------------------------------------------------------------- /compat/mutex.cpp: -------------------------------------------------------------------------------- 1 | #include "export.hpp" 2 | #include "mutex.hpp" 3 | #include <cstdlib> 4 | #include <QMutex> 5 | #include <QRecursiveMutex> 6 | 7 | template<typename M> 8 | mutex<M>& mutex<M>::operator=(const mutex& rhs) 9 | { 10 | return *this; 11 | } 12 | 13 | template<typename MutexType> MutexType* mutex<MutexType>::operator&() const { return &inner; } 14 | 15 | template<typename M> mutex<M>::mutex(const mutex<M>& datum) {} 16 | template<typename M> mutex<M>::mutex() = default; 17 | 18 | template<typename M> 19 | mutex<M>::operator M*() const noexcept 20 | { 21 | return &inner; 22 | } 23 | 24 | template<typename M> 25 | M* mutex<M>::operator->() const noexcept 26 | { 27 | return &inner; 28 | } 29 | 30 | template class OTR_COMPAT_EXPORT mutex<QMutex>; 31 | template class OTR_COMPAT_EXPORT mutex<QRecursiveMutex>; 32 | -------------------------------------------------------------------------------- /compat/mutex.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "export.hpp" 4 | 5 | template<typename MutexType> 6 | class OTR_COMPAT_EXPORT mutex 7 | { 8 | mutable MutexType inner{}; 9 | 10 | public: 11 | mutex& operator=(const mutex& datum); 12 | MutexType* operator&() const; 13 | mutex(const mutex& datum); 14 | explicit mutex(); 15 | 16 | explicit operator MutexType*() const noexcept; 17 | MutexType* operator->() const noexcept; 18 | }; 19 | -------------------------------------------------------------------------------- /compat/process-list.hpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015 Stanislaw Halik <sthalik@misaki.pl> 2 | * 3 | * Permission to use, copy, modify, and/or distribute this software for any 4 | * purpose with or without fee is hereby granted, provided that the above 5 | * copyright notice and this permission notice appear in all copies. 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "export.hpp" 11 | #include <QStringList> 12 | 13 | OTR_COMPAT_EXPORT QStringList get_all_executable_names(); 14 | -------------------------------------------------------------------------------- /compat/qhash.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <functional> 4 | 5 | #include <QtGlobal> 6 | #include <QString> 7 | #include <QHashFunctions> 8 | 9 | #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) 10 | 11 | #include <cstdlib> 12 | 13 | namespace std { 14 | template<> struct hash<QString> 15 | { 16 | using argument_type = QString; 17 | using result_type = std::size_t; 18 | 19 | std::size_t operator()(const QString& value) const noexcept 20 | { 21 | return (std::size_t) qHash(value); 22 | } 23 | }; 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /compat/qt-dpi.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <algorithm> 4 | #include <QWidget> 5 | 6 | static inline double screen_dpi(const QPaintDevice* widget) 7 | { 8 | const auto& x = *widget; 9 | #ifdef _WIN32 10 | return std::max(x.devicePixelRatioF(), 1.); 11 | #else 12 | return std::max(std::max(x.logicalDpiX()/(double)x.physicalDpiX(), x.devicePixelRatioF()), 1.); 13 | #endif 14 | } 15 | 16 | template<typename self> 17 | struct screen_dpi_mixin 18 | { 19 | protected: 20 | double screen_dpi() const 21 | { 22 | return ::screen_dpi(static_cast<const self*>(this)); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /compat/qt-signal.cpp: -------------------------------------------------------------------------------- 1 | #define OTR_GENERATE_SIGNAL3(type) void sig_##type::operator()(const type& x) const { notify(x); } 2 | #include "qt-signal.hpp" 3 | namespace _qt_sig_impl { 4 | 5 | sig_void::sig_void(QObject* parent) : QObject(parent) {} 6 | 7 | } 8 | -------------------------------------------------------------------------------- /compat/sleep.cpp: -------------------------------------------------------------------------------- 1 | #include "sleep.hpp" 2 | 3 | #ifdef _WIN32 4 | # include <windows.h> 5 | #else 6 | # include <unistd.h> 7 | #endif 8 | 9 | namespace portable 10 | { 11 | void sleep(int milliseconds) 12 | { 13 | if (milliseconds > 0) 14 | { 15 | #ifdef _WIN32 16 | 17 | Sleep((unsigned)milliseconds); 18 | #else 19 | usleep(unsigned(milliseconds) * 1000U); // takes microseconds 20 | #endif 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /compat/sleep.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "export.hpp" 4 | 5 | namespace portable { 6 | OTR_COMPAT_EXPORT void sleep(int milliseconds); 7 | } 8 | -------------------------------------------------------------------------------- /compat/sysexits.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <cstdlib> // for EXIT_SUCCESS, EXIT_FAILRUE 4 | 5 | #ifndef _WIN32 6 | # include <sysexits.h> 7 | #else 8 | // this conforms to BSD sysexits(3) 9 | // reference the manual page on FreeBSD or Linux for semantics 10 | # define EX_OK 0 11 | # define EX_USAGE 64 12 | # define EX_DATAERR 65 13 | # define EX_NOINPUT 66 14 | # define EX_NOUSER 67 15 | # define EX_NOHOST 68 16 | # define EX_UNAVAILABLE 69 17 | # define EX_SOFTWARE 70 18 | # define EX_OSERR 71 19 | # define EX_OSFILE 72 20 | # define EX_CANTCREAT 73 21 | # define EX_IOERR 74 22 | # define EX_TEMPFAIL 75 23 | # define EX_PROTOCOL 76 24 | # define EX_NOPERM 77 25 | # define EX_CONFIG 78 26 | #endif 27 | 28 | 29 | -------------------------------------------------------------------------------- /compat/thread-name.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "export.hpp" 3 | #include <QString> 4 | namespace portable { 5 | OTR_COMPAT_EXPORT void set_curthread_name(const QString& name); 6 | } 7 | -------------------------------------------------------------------------------- /compat/time.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <chrono> 4 | 5 | namespace time_units { 6 | 7 | template<typename repr, typename ratio = std::ratio<1>> 8 | using duration = std::chrono::duration<repr, ratio>; 9 | 10 | using secs = duration<float>; 11 | using ms = duration<float, std::milli>; 12 | using us = duration<float, std::micro>; 13 | using ns = duration<float, std::nano>; 14 | 15 | } // ns time_units 16 | -------------------------------------------------------------------------------- /compat/timer.hpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2015, Stanislaw Halik <sthalik@misaki.pl> 2 | 3 | * Permission to use, copy, modify, and/or distribute this 4 | * software for any purpose with or without fee is hereby granted, 5 | * provided that the above copyright notice and this permission 6 | * notice appear in all copies. 7 | */ 8 | 9 | #pragma once 10 | 11 | #include "export.hpp" 12 | #include "time.hpp" 13 | #include <ctime> 14 | 15 | struct OTR_COMPAT_EXPORT Timer final 16 | { 17 | Timer(); 18 | void start(); 19 | 20 | double elapsed_ms() const; 21 | double elapsed_seconds() const; 22 | 23 | private: 24 | struct timespec state {}; 25 | static void gettime(struct timespec* state); 26 | struct timespec get_delta() const; 27 | using ns = time_units::ns; 28 | }; 29 | -------------------------------------------------------------------------------- /compat/tr.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <QObject> 4 | 5 | // The class does nothing except provide a fake assignment operator for QObject 6 | // It's meant to be used inside classes that need i18n support but are returned by value. 7 | 8 | struct TR : QObject 9 | { 10 | TR() = default; 11 | TR(const TR&) : QObject(nullptr) {} 12 | 13 | TR& operator=(const TR&) { return *this; } 14 | }; 15 | -------------------------------------------------------------------------------- /contrib-noinst/important-stuff/NPClient.h: -------------------------------------------------------------------------------- 1 | 2 | extern int NP_RegisterWindowHandle (HWND hwnd); 3 | extern int NP_UnregisterWindowHandle (void); 4 | extern int NP_RegisterProgramProfileID (unsigned short id); 5 | extern int NP_QueryVersion (unsigned short *version); 6 | extern int NP_RequestData (unsigned short req); 7 | extern int NP_GetSignature (tir_signature_t *sig); 8 | extern int NP_GetData (tir_data_t *data); 9 | extern int NP_GetParameter (void); 10 | extern int NP_SetParameter (void); 11 | extern int NP_StartCursor (void); 12 | extern int NP_StopCursor (void); 13 | extern int NP_ReCenter (void); 14 | extern int NP_StartDataTransmission (void); 15 | extern int NP_StopDataTransmission (void); 16 | 17 | 18 | -------------------------------------------------------------------------------- /contrib-noinst/important-stuff/game-data.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib-noinst/important-stuff/game-data.exe -------------------------------------------------------------------------------- /contrib-noinst/important-stuff/game_data.h: -------------------------------------------------------------------------------- 1 | #ifndef GAME_DATA__H 2 | #define GAME_DATA__H 3 | 4 | #include <stdbool.h> 5 | 6 | #ifdef __cplusplus 7 | extern "C" { 8 | #endif 9 | 10 | bool get_game_data(const char *input_fname, const char *output_fname, bool from_update); 11 | 12 | #ifdef __cplusplus 13 | } 14 | #endif 15 | 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /contrib-noinst/tester/resource.h: -------------------------------------------------------------------------------- 1 | #ifndef IDC_STATIC 2 | #define IDC_STATIC (-1) 3 | #endif 4 | 5 | #define IDD_DIALOG1 100 6 | #define IDQUIT 1002 7 | #define IDSTART 1003 8 | #define IDC_APPID 1016 9 | #define IDC_PITCH 1017 10 | #define IDC_YAW 1018 11 | #define IDC_ROLL 1019 12 | #define IDC_X1 1020 13 | #define IDC_X2 1021 14 | #define IDC_X3 1022 15 | #define IDC_Y1 1023 16 | #define IDC_Y2 1024 17 | #define IDC_Y3 1025 18 | #define IDC_Z1 1026 19 | #define IDC_Z2 1027 20 | #define IDC_Z3 1028 21 | #define IDC_S 1029 22 | #define IDC_F 1030 23 | 24 | -------------------------------------------------------------------------------- /contrib/FlightGear/readme.txt: -------------------------------------------------------------------------------- 1 | Copy Protocol/headtracker.xml to fgdata/Protocol/headtracker.xml 2 | 3 | $ fgfs --generic=socket,in,25,localhost,5542,udp,headtracker 4 | 5 | Adjust paths as necessary. 6 | 7 | cheers, 8 | -sh 20131008 9 | -------------------------------------------------------------------------------- /contrib/Tir4Fun/npclient.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/Tir4Fun/npclient.dll -------------------------------------------------------------------------------- /contrib/Tir4Fun/readme.txt: -------------------------------------------------------------------------------- 1 | What is TIR4FUN? 2 | 3 | TIR4FUN is a free utility for dedicated gamers. It enables 6DOF POV control with mouse and joystick axes. 4 | 5 | Software is provided as it is. Configuration is straightforward. GUI says it all! 6 | 7 | Installation: 8 | 9 | Copy all files to a directory. Launch tir4fun.exe to bring up the GUI. 10 | -------------------------------------------------------------------------------- /contrib/Tir4Fun/tir4fun.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/Tir4Fun/tir4fun.exe -------------------------------------------------------------------------------- /contrib/aruco/README.txt: -------------------------------------------------------------------------------- 1 | Note, the utility only creates .bmp files. Trying to produce a `.png` or jpeg 2 | file will make it error out. 3 | -------------------------------------------------------------------------------- /contrib/aruco/aruco_create_marker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/aruco/aruco_create_marker.exe -------------------------------------------------------------------------------- /contrib/aruco/test3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/aruco/test3.png -------------------------------------------------------------------------------- /contrib/cute-octopus-vector-material_15-1831.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/cute-octopus-vector-material_15-1831.jpg -------------------------------------------------------------------------------- /contrib/freepie-udp/FreePIE_IMU_Android9.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/freepie-udp/FreePIE_IMU_Android9.apk -------------------------------------------------------------------------------- /contrib/freepie-udp/com.wishsalad.wishimu-debug.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/freepie-udp/com.wishsalad.wishimu-debug.apk -------------------------------------------------------------------------------- /contrib/freepie-udp/src-WishIMU.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/freepie-udp/src-WishIMU.zip -------------------------------------------------------------------------------- /contrib/freetracktest/freetracktest.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/freetracktest/freetracktest.exe -------------------------------------------------------------------------------- /contrib/freetracktest/readme.txt: -------------------------------------------------------------------------------- 1 | FaceTrackNoIR for Free-track 'enabled' games. 2 | 3 | FaceTrackNoIR was made compatible with the Free-track protocol, for which the Free-track source (a well, part of it) was 4 | translated from Delphi Pascal to C++ (Visual Studio C++, with Qt). 5 | 6 | To start the Free-track protocol-server in FaceTrackNoIR, select Free-track in the 'game-protocol' listbox. The program 7 | 'FreeTrackTest.exe' is provided to check, if the protocol-server is running. 8 | 9 | FreeTrackTest.exe was created by the Free-track team. 10 | 11 | 12 | 13 | The FaceTrackNoIR team: 14 | 15 | Wim Vriend 16 | Ron Hendriks 17 | 18 | 19 | 20 | Disclaimer: For usage of 3rd party software like FreeTrackTest, the FaceTrackNoIR team is not responsible. Use it at your own risk. -------------------------------------------------------------------------------- /contrib/fs2002 and fs2004/fsuipc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/fs2002 and fs2004/fsuipc.dll -------------------------------------------------------------------------------- /contrib/glovepie/facetracknoir2trackir.pie: -------------------------------------------------------------------------------- 1 | // 2 | // 6 Degrees of Freedom Headtracking with FaceTrackNoIR 3 | // 2010 by Wim Vriend 4 | // 5 | pie.FrameRate = 120Hz 6 | var.multiply = 1.5 7 | var.R2D = 57.295781 8 | FakeTrackIR.pitch=(Joystick.pitch - 0.10) * var.R2D * var.multiply 9 | FakeTrackIR.yaw=(Joystick.yaw - 0.10) * var.R2D * var.multiply 10 | FakeTrackIR.roll=(Joystick.roll - 0.10) * var.R2D * var.multiply 11 | FakeTrackIR.x=(Joystick.x - 0.10) * var.R2D * var.multiply 12 | FakeTrackIR.y=(Joystick.y - 0.10) * var.R2D * var.multiply 13 | FakeTrackIR.z=(Joystick.z - 0.10) * var.R2D * var.multiply 14 | debug = 'pitch='+FakeTrackIR.pitch+' roll='+FakeTrackIR.roll+' yaw='+FakeTrackIR.yaw+' xyz=('+FakeTrackIR.x+','+FakeTrackIR.y+','+FakeTrackIR.z+')' 15 | //debug = FakeTrackIR.active 16 | 17 | -------------------------------------------------------------------------------- /contrib/hatire-test-data/README.txt: -------------------------------------------------------------------------------- 1 | The hatire test data is a serial connection dump. One can use it when 2 | debugging hatire, using it in lieu of a real Arduino. There's a 3 | preprocessor #define in hatire that sets a connection dump rather than a 4 | real device. 5 | 6 | The data was provided by drdanilov21 on github. 7 | 8 | sh 9 | -------------------------------------------------------------------------------- /contrib/hatire-test-data/puttyLog1MIN.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/hatire-test-data/puttyLog1MIN.zip -------------------------------------------------------------------------------- /contrib/libusbK-dev-kit/libusbK-3.1.0.0-setup.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/libusbK-dev-kit/libusbK-3.1.0.0-setup.exe -------------------------------------------------------------------------------- /contrib/libusbK-inf-wizard/libusbK-inf-wizard.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/libusbK-inf-wizard/libusbK-inf-wizard.exe -------------------------------------------------------------------------------- /contrib/libusbK-inf-wizard/license/AUTHORS-libusb0.txt: -------------------------------------------------------------------------------- 1 | This software is distributed under the following licenses: 2 | Driver: GNU General Public License (GPL) 3 | Library: GNU Lesser General Public (LGPL) 4 | Test Files: GNU Lesser General Public (LGPL) 5 | Filter Installer: GNU Lesser General Public (LGPL) 6 | 7 | Library, Test Programs: 8 | 9 | Stephan Meyer, <ste_meyer@web.de> 10 | Johannes Erdfelt, <johannes@erdfelt.com> 11 | Thomas Sailer, <sailer@ife.ee.ethz.ch> 12 | 13 | Drivers, Installer: 14 | 15 | Stephan Meyer, <ste_meyer@web.de> 16 | Travis Robinson, <libusbdotnet@gmail.com> 17 | 18 | Testing, Technical support: 19 | 20 | Xiaofan Chen, <xiaofanc@gmail.com> 21 | -------------------------------------------------------------------------------- /contrib/npclient/COMPILE.TXT: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # This makes small binaries: 4 | 5 | CC=clang 6 | 7 | CFLAGS=' \ 8 | -Wall -Wextra -Wpedantic -Os -fomit-frame-pointer -mtune=generic \ 9 | -ffunction-sections -fdata-sections -fvisibility=hidden \ 10 | -Wl,--kill-at,--nxcompat,--dynamicbase,--as-needed,--gc-sections \ 11 | -Wl,--no-insert-timestamp \ 12 | -fno-math-errno -fno-trapping-math -fmerge-all-constants \ 13 | -fno-stack-protector \ 14 | ' 15 | 16 | STRIP='strip --strip-all --remove-section=.eh_frame' 17 | 18 | cd -- "$(dirname -- "$0")" && 19 | PATH=/mingw32/bin:"$PATH" sh -c "$CC -m32 -march=pentium4 $CFLAGS -mdll -o NPClient.dll npclient.c && $STRIP NPClient.dll" && 20 | PATH=/mingw64/bin:"$PATH" sh -c "$CC -m64 -Wl,--high-entropy-va $CFLAGS -mdll -o NPClient64.dll npclient.c && $STRIP NPClient64.dll" && 21 | ls -l NPClient{,64}.dll && openssl md5 NPClient{,64}.dll && mv NPClient{,64}.dll ../../bin/ 22 | -------------------------------------------------------------------------------- /contrib/npclient/README-CREDIT.txt: -------------------------------------------------------------------------------- 1 | The contents of the directory written by one and only, uglyDwarf. 2 | 3 | Obtained at epoch time 1412397452 from the mithril-mine's shaft, where 4 | the elite dwarves reside. 5 | 6 | For the latest happenings, visit <https://code.google.com/p/linux-track/> 7 | -------------------------------------------------------------------------------- /contrib/trackir-client/client.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/trackir-client/client.exe -------------------------------------------------------------------------------- /coverity/.gitignore: -------------------------------------------------------------------------------- 1 | /*/ 2 | /*.tar.* 3 | /*.zip 4 | /* 5 | -------------------------------------------------------------------------------- /coverity/aruco/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/aruco/.gitkeep -------------------------------------------------------------------------------- /coverity/build.cmd: -------------------------------------------------------------------------------- 1 | setlocal 2 | set PATH=%path%;d:\cygwin64\usr\i686-w64-mingw32\bin;d:\cygwin64\bin 3 | cov-build --dir cov-int ninja %* 4 | exit /b %ERRORLEVEL% 5 | -------------------------------------------------------------------------------- /coverity/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cleanup() { 4 | for i in cov-build ninja; do 5 | taskkill -f -t -im "$i.exe" 2>/dev/null 1>&2 6 | done 7 | rm -f "$myfile" 8 | } 9 | 10 | signal() { 11 | set +e 12 | trap '' EXIT 13 | echo "error: $1" 1>&2 14 | cleanup 15 | exit 1 16 | } 17 | 18 | export PATH="/d/dev/cov-analysis-win64-8.7.0/bin:/c/msys64/mingw32/bin:/c/msys64/usr/bin:$PATH" 19 | 20 | for k in HUP INT QUIT ILL BUS FPE SEGV PIPE; do 21 | trap "signal 'got fatal signal SIG'$k" SIG"$k" 22 | done 23 | 24 | trap 'signal "fatal return $?"' EXIT 25 | 26 | set -e 27 | 28 | mydate="$(date --iso-8601=minutes)" 29 | mydir="$(dirname -- "$0")" 30 | myfile="opentrack-$mydate.7z" 31 | 32 | cd "$mydir" 33 | for k in opencv aruco libovr-025 libovr-042 libovr-080; do 34 | ninja -C "./$k" 35 | done 36 | 37 | cd "./opentrack" 38 | 39 | cmake . 40 | ninja32 clean 41 | cov-build --dir cov-int ninja -v -j1 42 | rm -f "../$myfile" || true 43 | 7za -mx a "../$myfile" cov-int 44 | trap '' EXIT 45 | exit 0 46 | -------------------------------------------------------------------------------- /coverity/libovr-025/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/libovr-025/.gitkeep -------------------------------------------------------------------------------- /coverity/libovr-042/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/libovr-042/.gitkeep -------------------------------------------------------------------------------- /coverity/libovr-080/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/libovr-080/.gitkeep -------------------------------------------------------------------------------- /coverity/libovr-140/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/libovr-140/.gitkeep -------------------------------------------------------------------------------- /coverity/opencv/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/opencv/.gitkeep -------------------------------------------------------------------------------- /coverity/opentrack/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/opentrack/.gitkeep -------------------------------------------------------------------------------- /csv/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(csv STATIC) 2 | -------------------------------------------------------------------------------- /csv/csv.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <QString> 4 | 5 | bool getGameData(int gameID, unsigned char* table, QString& gamename); 6 | -------------------------------------------------------------------------------- /csv/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /csv/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /csv/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /csv/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /csv/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /cv/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(opentrack-opencv) 2 | find_package(OpenCV QUIET) 3 | if(OpenCV_FOUND) 4 | try_compile(cv_use-ipp "${CMAKE_CURRENT_BINARY_DIR}" 5 | SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/ocv-check.cxx" 6 | CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${OpenCV_INCLUDE_DIRS}" 7 | "-DCXX_STANDARD=20" "-DCXX_STANDARD_REQUIRED=1" 8 | OUTPUT_VARIABLE krap) 9 | otr_module(cv STATIC) 10 | target_link_libraries(${self} opencv_core opentrack-video) 11 | target_include_directories(${self} SYSTEM PRIVATE ${OpenCV_INCLUDE_DIRS}) 12 | if(cv_use-ipp) 13 | target_compile_definitions(${self} PUBLIC -DOTR_HAS_CV_IPP) 14 | endif() 15 | endif() 16 | -------------------------------------------------------------------------------- /cv/affine.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2012 Patrick Ruoff 2 | * 3 | * Permission to use, copy, modify, and/or distribute this software for any 4 | * purpose with or without fee is hereby granted, provided that the above 5 | * copyright notice and this permission notice appear in all copies. 6 | */ 7 | 8 | #include "affine.hpp" 9 | 10 | namespace affine_impl { 11 | 12 | Affine::Affine() = default; 13 | Affine::Affine(const mat33& R, const vec3& t) : R(R), t(t) {} 14 | 15 | Affine operator*(const Affine& X, const Affine& Y) 16 | { 17 | return { X.R*Y.R, X.R*Y.t + X.t }; 18 | } 19 | 20 | Affine operator*(const mat33& X, const Affine& Y) 21 | { 22 | return { X*Y.R, X*Y.t }; 23 | } 24 | 25 | Affine operator*(const Affine& X, const mat33& Y) 26 | { 27 | return { X.R*Y, X.t }; 28 | } 29 | 30 | vec3 operator*(const Affine& X, const vec3& v) 31 | { 32 | return X.R*v + X.t; 33 | } 34 | 35 | } // ns affine_impl 36 | -------------------------------------------------------------------------------- /cv/affine.hpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2012 Patrick Ruoff 2 | * 3 | * Permission to use, copy, modify, and/or distribute this software for any 4 | * purpose with or without fee is hereby granted, provided that the above 5 | * copyright notice and this permission notice appear in all copies. 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "numeric.hpp" 11 | 12 | namespace affine_impl { 13 | 14 | using namespace numeric_types; 15 | 16 | class Affine final 17 | { 18 | public: 19 | Affine(); 20 | Affine(const mat33& R, const vec3& t); 21 | 22 | mat33 R { mat33::eye() }; 23 | vec3 t { 0, 0, 0 }; 24 | }; 25 | 26 | Affine operator*(const Affine& X, const Affine& Y); 27 | Affine operator*(const mat33& X, const Affine& Y); 28 | Affine operator*(const Affine& X, const mat33& Y); 29 | vec3 operator*(const Affine& X, const vec3& v); 30 | 31 | } // ns affine_impl 32 | 33 | using Affine = affine_impl::Affine; 34 | //using affine_impl::operator *; 35 | -------------------------------------------------------------------------------- /cv/init.cpp: -------------------------------------------------------------------------------- 1 | #include "init.hpp" 2 | #include <type_traits> 3 | #include <opencv2/core/base.hpp> 4 | #include <opencv2/core/utility.hpp> 5 | 6 | [[noreturn]] 7 | static 8 | int error_handler(int, const char* fn, const char* msg, const char* filename, int line, void*) 9 | { 10 | fprintf(stderr, "[%s:%d] opencv: %s at %s\n", filename, line, msg, fn); 11 | fflush(stderr); 12 | std::abort(); 13 | } 14 | 15 | void opencv_init() 16 | { 17 | cv::redirectError(error_handler); 18 | cv::setBreakOnError(false); 19 | cv::setNumThreads(1); 20 | #ifdef OTR_HAS_CV_IPP 21 | cv::ipp::setUseIPP(true); 22 | cv::ipp::setUseIPP_NotExact(true); 23 | #endif 24 | } 25 | -------------------------------------------------------------------------------- /cv/init.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | void opencv_init(); 3 | -------------------------------------------------------------------------------- /cv/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /cv/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /cv/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /cv/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /cv/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /cv/numeric.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <type_traits> 4 | #include <opencv2/core/matx.hpp> 5 | 6 | namespace numeric_types { 7 | using f = double; 8 | 9 | static_assert(std::is_floating_point_v<f>); 10 | 11 | static constexpr f eps = f(1e-8); 12 | static constexpr f pi = f(M_PI); 13 | 14 | template<int n> using vec = cv::Vec<f, n>; 15 | using vec2 = vec<2>; 16 | using vec3 = vec<3>; 17 | 18 | template<int y, int x> using mat = cv::Matx<f, y, x>; 19 | using mat33 = mat<3, 3>; 20 | using mat22 = mat<2, 2>; 21 | } 22 | -------------------------------------------------------------------------------- /cv/ocv-check.cxx: -------------------------------------------------------------------------------- 1 | #include <opencv2/core.hpp> 2 | 3 | void check1() 4 | { 5 | cv::ipp::setUseIPP(true); 6 | cv::ipp::setUseIPP_NotExact(true); 7 | } 8 | -------------------------------------------------------------------------------- /cv/video-widget.hpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019 Stanislaw Halik <sthalik@misaki.pl> 2 | * 3 | * Permission to use, copy, modify, and/or distribute this software for any 4 | * purpose with or without fee is hereby granted, provided that the above 5 | * copyright notice and this permission notice appear in all copies. 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "video/video-widget.hpp" 11 | #include <opencv2/core/mat.hpp> 12 | 13 | struct cv_video_widget final : video_widget 14 | { 15 | using video_widget::video_widget; 16 | void update_image(const cv::Mat& frame); 17 | 18 | private: 19 | cv::Mat frame2, frame3; 20 | }; 21 | -------------------------------------------------------------------------------- /dinput/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32) 2 | otr_module(dinput BIN) 3 | target_link_libraries(opentrack-dinput dinput8 dxguid) 4 | endif() 5 | -------------------------------------------------------------------------------- /dinput/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_DINPUT 8 | # define OTR_DINPUT_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_DINPUT_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /dinput/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /dinput/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /dinput/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /dinput/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /dinput/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /filter-accela-hamilton/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(filter-accela-hamilton) 2 | target_link_libraries(opentrack-filter-accela-hamilton opentrack-spline) 3 | -------------------------------------------------------------------------------- /filter-accela/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(filter-accela) 2 | target_link_libraries(opentrack-filter-accela opentrack-spline) 3 | -------------------------------------------------------------------------------- /filter-ewma2/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(filter-ewma) 2 | -------------------------------------------------------------------------------- /filter-hamilton/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(filter-hamilton) 2 | -------------------------------------------------------------------------------- /filter-hamilton/ReadMe.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/filter-hamilton/ReadMe.txt -------------------------------------------------------------------------------- /filter-nm/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(filter-nm) 2 | -------------------------------------------------------------------------------- /gui/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(user-interface BIN) 2 | 3 | target_link_libraries(${self} 4 | opentrack-migration 5 | opentrack-logic 6 | opentrack-spline 7 | opentrack-pose-widget 8 | ) 9 | 10 | if(NOT APPLE AND NOT WIN32) 11 | target_compile_definitions(${self} PRIVATE -DOTR_X11_THREADS) 12 | otr_pkgconfig(${self} x11) 13 | endif() 14 | -------------------------------------------------------------------------------- /gui/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_USER_INTERFACE 8 | # define OTR_GUI_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_GUI_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /gui/images/curves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/curves.png -------------------------------------------------------------------------------- /gui/images/english.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/english.png -------------------------------------------------------------------------------- /gui/images/filter-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/filter-16.png -------------------------------------------------------------------------------- /gui/images/no-feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/no-feed.png -------------------------------------------------------------------------------- /gui/images/opentrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/opentrack.png -------------------------------------------------------------------------------- /gui/images/settings16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/settings16.png -------------------------------------------------------------------------------- /gui/images/tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/tools.png -------------------------------------------------------------------------------- /gui/images/tracking-not-started.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/tracking-not-started.png -------------------------------------------------------------------------------- /gui/init.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "export.hpp" 4 | 5 | #include <functional> 6 | #include <memory> 7 | #include <QWidget> 8 | 9 | OTR_GUI_EXPORT int otr_main(int argc, char** argv, std::function<std::unique_ptr<QWidget>()> const& make_main_window); 10 | 11 | template<typename F> 12 | auto run_application(int argc, char** argv, F&& fun) 13 | { 14 | return otr_main(argc, argv, fun); 15 | } 16 | -------------------------------------------------------------------------------- /gui/keyboard_listener.ui: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <ui version="4.0"> 3 | <class>keyboard_listener</class> 4 | <widget class="QDialog" name="keyboard_listener"> 5 | <property name="geometry"> 6 | <rect> 7 | <x>0</x> 8 | <y>0</y> 9 | <width>587</width> 10 | <height>273</height> 11 | </rect> 12 | </property> 13 | <property name="windowTitle"> 14 | <string>Dialog</string> 15 | </property> 16 | <layout class="QVBoxLayout" name="verticalLayout"> 17 | <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> 18 | <widget class="QLabel" name="label"> 19 | <property name="text"> 20 | <string>Press a key or close this window to remove the keybinding.</string> 21 | </property> 22 | </widget> 23 | </item> 24 | </layout> 25 | </widget> 26 | <resources/> 27 | <connections/> 28 | </ui> 29 | -------------------------------------------------------------------------------- /gui/mapping-dialog.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "export.hpp" 4 | 5 | #include "logic/mappings.hpp" 6 | #include "gui/ui_mapping-dialog.h" 7 | #include "spline/spline-widget.hpp" 8 | 9 | #include <QWidget> 10 | #include <QDialog> 11 | #include <QtEvents> 12 | 13 | class OTR_GUI_EXPORT mapping_dialog final : public QDialog 14 | { 15 | Q_OBJECT 16 | public: 17 | mapping_dialog(Mappings& m); 18 | void refresh_tab(); 19 | inline bool embeddable() noexcept { return false; } 20 | private: 21 | Ui::mapping_dialog ui; 22 | Mappings& m; 23 | main_settings s; 24 | 25 | spline_widget* widgets[6][2]; 26 | 27 | void closeEvent(QCloseEvent*) override; 28 | 29 | void load(); 30 | 31 | void save_dialog(); 32 | void invalidate_dialog(); 33 | 34 | private slots: 35 | void doOK(); 36 | void doCancel(); 37 | }; 38 | -------------------------------------------------------------------------------- /gui/opentrack-res.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/tools.png</file> 4 | <file>images/settings16.png</file> 5 | <file>images/curves.png</file> 6 | <file>images/opentrack.png</file> 7 | <file>images/no-feed.png</file> 8 | <file>images/filter-16.png</file> 9 | <file>images/tracking-not-started.png</file> 10 | <file>images/english.png</file> 11 | </qresource> 12 | </RCC> 13 | -------------------------------------------------------------------------------- /gui/process-detector-fancy-table.cpp: -------------------------------------------------------------------------------- 1 | #include "process-detector-fancy-table.hpp" 2 | 3 | #include <QHeaderView> 4 | 5 | void FancyTable::resizeEvent(QResizeEvent* e) 6 | { 7 | QTableView::resizeEvent(e); 8 | int w = width(); 9 | setContentsMargins(QMargins(0, 0, 0, 0)); 10 | w -= 64; 11 | setColumnWidth(2, 32); 12 | setColumnWidth(0, w / 2); 13 | setColumnWidth(1, w / 2); 14 | horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); 15 | } 16 | 17 | FancyTable::FancyTable(QWidget* parent) : QTableWidget(parent) {} 18 | -------------------------------------------------------------------------------- /gui/process-detector-fancy-table.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <QObject> 4 | #include <QWidget> 5 | #include <QTableWidget> 6 | 7 | class FancyTable final : public QTableWidget 8 | { 9 | Q_OBJECT 10 | public: 11 | void resizeEvent(QResizeEvent* e) override; 12 | public: 13 | FancyTable(QWidget* parent = nullptr); 14 | }; 15 | -------------------------------------------------------------------------------- /installer/.gitignore: -------------------------------------------------------------------------------- 1 | /Output 2 | -------------------------------------------------------------------------------- /logic/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(logic BIN) 2 | target_link_libraries(${self} opentrack-spline) 3 | if(NOT WIN32) 4 | target_link_libraries(${self} opentrack-qxt-mini) 5 | else() 6 | target_link_libraries(${self} opentrack-dinput winmm) 7 | endif() 8 | -------------------------------------------------------------------------------- /logic/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_LOGIC 8 | # define OTR_LOGIC_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_LOGIC_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /logic/main-settings.cpp: -------------------------------------------------------------------------------- 1 | #include "main-settings.hpp" 2 | 3 | namespace main_settings_impl { 4 | 5 | using namespace options; 6 | 7 | main_settings::main_settings() = default; 8 | module_settings::module_settings() = default; 9 | 10 | key_opts::key_opts(bundle b, const QString& name) : 11 | keycode(b, QString("keycode-%1").arg(name), ""), 12 | guid(b, QString("guid-%1").arg(name), ""), 13 | button(b, QString("button-%1").arg(name), -1) 14 | {} 15 | 16 | key_opts& key_opts::operator=(const key_opts& x) 17 | { 18 | if (&x != this) 19 | { 20 | keycode = x.keycode; 21 | guid = x.guid; 22 | button = x.button; 23 | } 24 | 25 | return *this; 26 | } 27 | 28 | } // ns main_settings_impl 29 | -------------------------------------------------------------------------------- /logic/mappings.cpp: -------------------------------------------------------------------------------- 1 | #include "mappings.hpp" 2 | 3 | #include <utility> 4 | 5 | Map::Map(const QString& spline_name, const QString& alt_spline_name, axis_opts& opts) : 6 | opts(opts), 7 | name(spline_name), 8 | alt_name(alt_spline_name), 9 | spline_main(spline_name, opts.prefix(), opts.axis()), 10 | spline_alt(alt_spline_name, opts.prefix(), opts.axis()) 11 | { 12 | } 13 | 14 | void Map::save() 15 | { 16 | spline_main.save(); 17 | spline_alt.save(); 18 | } 19 | 20 | void Map::load() 21 | { 22 | spline_main.reload(); 23 | spline_alt.reload(); 24 | } 25 | 26 | 27 | Mappings::Mappings(axis_opts_impl::axis_opts** opts) : 28 | axes { 29 | { "spline-X", "alt-spline-X", *opts[TX] }, 30 | { "spline-Y", "alt-spline-Y", *opts[TY] }, 31 | { "spline-Z", "alt-spline-Z", *opts[TZ] }, 32 | { "spline-yaw", "alt-spline-yaw", *opts[Yaw] }, 33 | { "spline-pitch", "alt-spline-pitch",*opts[Pitch] }, 34 | { "spline-roll", "alt-spline-roll", *opts[Roll] } 35 | } 36 | {} 37 | -------------------------------------------------------------------------------- /logic/runtime-libraries.hpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2015, Stanislaw Halik <sthalik@misaki.pl> 2 | 3 | * Permission to use, copy, modify, and/or distribute this 4 | * software for any purpose with or without fee is hereby granted, 5 | * provided that the above copyright notice and this permission 6 | * notice appear in all copies. 7 | */ 8 | 9 | #pragma once 10 | 11 | #include "api/plugin-support.hpp" 12 | #include "compat/tr.hpp" 13 | #include "export.hpp" 14 | 15 | class QFrame; 16 | 17 | class OTR_LOGIC_EXPORT runtime_libraries final : public TR 18 | { 19 | Q_OBJECT 20 | 21 | public: 22 | using dylibptr = std::shared_ptr<dylib>; 23 | 24 | std::shared_ptr<ITracker> pTracker; 25 | std::shared_ptr<IFilter> pFilter; 26 | std::shared_ptr<IProtocol> pProtocol; 27 | 28 | runtime_libraries(QFrame* frame, dylibptr t, dylibptr p, dylibptr f); 29 | runtime_libraries() = default; 30 | 31 | bool correct = false; 32 | }; 33 | -------------------------------------------------------------------------------- /logic/tracklogger.cpp: -------------------------------------------------------------------------------- 1 | #include "tracklogger.hpp" 2 | #include "pipeline.hpp" 3 | 4 | #include <QMessageBox> 5 | 6 | TrackLogger::~TrackLogger() = default; 7 | 8 | void TrackLogger::write_pose(const double* p) 9 | { 10 | write(p, 6); 11 | } 12 | 13 | void TrackLogger::reset_dt() 14 | { 15 | t.start(); 16 | } 17 | 18 | void TrackLogger::write_dt() 19 | { 20 | const double dt = t.elapsed_seconds(); 21 | write(&dt, 1); 22 | } 23 | 24 | void TrackLoggerCSV::handle_first_col_sep() 25 | { 26 | if (!first_col) 27 | out.put(','); 28 | first_col = false; 29 | } 30 | 31 | void TrackLoggerCSV::write(const char *s) 32 | { 33 | handle_first_col_sep(); 34 | out << s; 35 | } 36 | 37 | 38 | void TrackLoggerCSV::write(const double *p, int n) 39 | { 40 | handle_first_col_sep(); 41 | for (int i = 0; i < n-1; ++i) 42 | { 43 | out << p[i]; 44 | out.put(','); 45 | } 46 | out << p[n-1]; 47 | } 48 | 49 | void TrackLoggerCSV::next_line() 50 | { 51 | out << std::endl; 52 | first_col = true; 53 | } 54 | 55 | -------------------------------------------------------------------------------- /logic/win32-shortcuts.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifdef _WIN32 4 | 5 | #include <Qt> 6 | #include <QKeySequence> 7 | #include "shortcuts.h" 8 | 9 | #include "export.hpp" 10 | 11 | struct OTR_LOGIC_EXPORT win_key 12 | { 13 | //win_key(int win, Qt::Key qt) : win(win), qt(qt) {} 14 | int win; 15 | Qt::Key qt; 16 | [[nodiscard]] static bool from_qt(const QKeySequence& qt_, int& dik, Qt::KeyboardModifiers &mods); 17 | [[nodiscard]] static bool to_qt(const Key& k, QKeySequence& qt_, Qt::KeyboardModifiers &mods); 18 | }; 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /macosx/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(APPLE) 2 | otr_escape_string(srcdir "${CMAKE_SOURCE_DIR}") 3 | otr_escape_string(instdir "${CMAKE_INSTALL_PREFIX}") 4 | otr_escape_string(commit "${OPENTRACK_COMMIT}") 5 | install(CODE " 6 | execute_process(COMMAND /bin/sh \"${srcdir}/macosx/make-app-bundle.sh\" 7 | \"${srcdir}/macosx\" 8 | \"${instdir}\" 9 | \"${commit}\") 10 | ") 11 | endif() 12 | -------------------------------------------------------------------------------- /macosx/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? 2 | -------------------------------------------------------------------------------- /macosx/dmgbackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/macosx/dmgbackground.png -------------------------------------------------------------------------------- /macosx/install-fail-tool: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | test -n "$1" || exit 1 4 | 5 | dir="$1" 6 | 7 | for i in "$dir"/*; do 8 | echo $i 9 | { test -f "$i"; } || continue 10 | case "$i" in 11 | *.dll|*.exe) continue ;; 12 | *) : ;; 13 | esac 14 | echo ---- $i ---- 15 | install_name_tool -id "@executable_path/$(echo "$i" | sed -e "s,^$dir/,,")" "$i" 16 | 17 | otool -L "$i" | awk '{ print $1 }' | 18 | while read l; do 19 | j="$(basename -- "$l")" 20 | echo === $j === 21 | if test -e "$dir/$j"; then 22 | install_name_tool -change "$l" "@rpath/$j" "$i" 23 | fi 24 | done 25 | done 26 | -------------------------------------------------------------------------------- /migration/20220105_00-pt-grayscale.cpp: -------------------------------------------------------------------------------- 1 | #include "migration.hpp" 2 | #include "options/options.hpp" 3 | 4 | using namespace migrations; 5 | using namespace options; 6 | 7 | #include "api/plugin-support.hpp" 8 | #include "compat/library-path.hpp" 9 | 10 | struct pt_color_grayscale : migration 11 | { 12 | bundle b { make_bundle("tracker-pt") }; 13 | enum : int { pt_color_average = 5, pt_color_bt709 = 2, }; 14 | 15 | QString unique_date() const override 16 | { 17 | return "20220105_00"; 18 | } 19 | 20 | QString name() const override 21 | { 22 | return "pt color enum"; 23 | } 24 | 25 | bool should_run() const override 26 | { 27 | auto x = b->get_variant("blob-color").toInt(); 28 | return x == pt_color_average; 29 | } 30 | 31 | void run() override 32 | { 33 | b->store_kv("blob-color", QVariant::fromValue((int)pt_color_bt709)); 34 | b->save(); 35 | } 36 | }; 37 | 38 | OPENTRACK_MIGRATION(pt_color_grayscale) 39 | -------------------------------------------------------------------------------- /migration/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(migration BIN) 2 | target_link_libraries(${self} opentrack-logic opentrack-spline) 3 | if(CMAKE_COMPILER_IS_CLANGXX) 4 | target_compile_options(${self} PRIVATE -Wno-weak-vtables) 5 | endif() 6 | -------------------------------------------------------------------------------- /migration/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_MIGRATION 8 | # define OTR_MIGRATION_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_MIGRATION_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /migration/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /migration/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /migration/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /migration/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /migration/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /opentrack/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(MSVC) 2 | add_compile_options(-EHsc) 3 | add_definitions(-D_HAS_EXCEPTIONS=1) 4 | endif() 5 | 6 | otr_module(executable EXECUTABLE BIN) 7 | 8 | set_target_properties(opentrack-executable PROPERTIES 9 | SUFFIX "${opentrack-binary-suffix}" 10 | OUTPUT_NAME "opentrack" 11 | PREFIX "" 12 | ) 13 | 14 | set_source_files_properties(resources.rc OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/opentrack.ico") 15 | 16 | if(APPLE) 17 | set_source_files_properties(appnap_mac.mm PROPERTIES COMPILE_FLAGS "-fno-objc-arc") 18 | target_sources(${self} PRIVATE appnap_mac.mm) 19 | endif() 20 | 21 | target_link_libraries(${self} opentrack-user-interface opentrack-version) 22 | 23 | if(APPLE) 24 | target_link_libraries(${self} "-framework Foundation") 25 | endif() 26 | -------------------------------------------------------------------------------- /opentrack/appnap_mac.mm: -------------------------------------------------------------------------------- 1 | #ifdef __APPLE__ 2 | 3 | #import <Foundation/Foundation.h> 4 | 5 | /** 6 | * Used to prevent macOS from throttling the opentrack process. 7 | */ 8 | 9 | id token = nil; 10 | 11 | void disable_appnap_start(); 12 | void disable_appnap_stop(); 13 | 14 | void disable_appnap_start() { 15 | 16 | if(token){ 17 | NSLog(@"disable_appnap_start: already started"); 18 | return; 19 | } 20 | 21 | 22 | NSLog(@"disable_appnap_start"); 23 | token = [[NSProcessInfo processInfo] 24 | beginActivityWithOptions: NSActivityUserInitiatedAllowingIdleSystemSleep 25 | reason: @"Disable AppNap"]; 26 | [token retain]; 27 | } 28 | 29 | void disable_appnap_stop() { 30 | if(!token){ 31 | NSLog(@"disable_appnap_start: not started"); 32 | return; 33 | } 34 | 35 | NSLog(@"disable_appnap_stop"); 36 | [[NSProcessInfo processInfo] endActivity:token]; 37 | [token release]; 38 | token = nil; 39 | } 40 | 41 | 42 | 43 | #endif 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /opentrack/defs.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //#define UI_FORCED_TRACKER "pt" 4 | //#define UI_FORCED_FILTER "accela" 5 | 6 | //#define UI_NO_TRACKER_COMBOBOX 7 | //#define UI_NO_FILTER_COMBOBOX 8 | 9 | //#define UI_NO_TRACKER_SETTINGS_BUTTON 10 | //#define UI_NO_FILTER_SETTINGS_BUTTON 11 | 12 | //#define UI_NO_RAW_DATA 13 | //#define UI_NO_GAME_DATA 14 | //#define UI_NO_VIDEO_FEED 15 | 16 | //define UI_ACCELA_OLD_STAIRCASE 17 | -------------------------------------------------------------------------------- /opentrack/main.cpp: -------------------------------------------------------------------------------- 1 | #include "gui/init.hpp" 2 | #include "main-window.hpp" 3 | 4 | #if defined _WIN32 5 | # include <windows.h> 6 | #endif 7 | 8 | #ifdef __clang__ 9 | # pragma GCC diagnostic ignored "-Wmain" 10 | #endif 11 | 12 | int main(int argc, char** argv) 13 | { 14 | return run_application(argc, argv, [] { return std::make_unique<main_window>(); }); 15 | } 16 | 17 | #if defined _MSC_VER 18 | 19 | int CALLBACK WinMain(HINSTANCE, HINSTANCE, LPSTR, int /* nCmdShow */) 20 | { 21 | return main(__argc, __argv); 22 | } 23 | #endif 24 | -------------------------------------------------------------------------------- /opentrack/new_file_dialog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ui_new_config.h" 4 | #include "options/options.hpp" 5 | #include <QFile> 6 | #include <QString> 7 | #include <QMessageBox> 8 | 9 | class new_file_dialog : public QDialog 10 | { 11 | Q_OBJECT 12 | public: 13 | new_file_dialog(QWidget* parent = nullptr); 14 | bool is_ok(QString& name_); 15 | 16 | private: 17 | Ui::UI_new_config ui; 18 | bool ok = false; 19 | QString name; 20 | 21 | private slots: 22 | void cancel_clicked(); 23 | void ok_clicked(); 24 | }; 25 | -------------------------------------------------------------------------------- /opentrack/opentrack.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/opentrack/opentrack.ico -------------------------------------------------------------------------------- /opentrack/resources.rc: -------------------------------------------------------------------------------- 1 | #include <windows.h> 2 | IDI_ICON1 ICON "opentrack.ico" 3 | -------------------------------------------------------------------------------- /options/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(options NO-COMPAT BIN) 2 | if(NOT WIN32 AND NOT APPLE) 3 | target_link_libraries(opentrack-options rt) 4 | endif() 5 | target_link_libraries(opentrack-options opentrack-compat) 6 | -------------------------------------------------------------------------------- /options/base-value.cpp: -------------------------------------------------------------------------------- 1 | #include "base-value.hpp" 2 | #include <QThread> 3 | 4 | using namespace options; 5 | 6 | //#define OTR_TRACE_NOTIFY 7 | 8 | const bool value_::TRACE_NOTIFY = 9 | #ifdef OTR_TRACE_NOTIFY 10 | true; 11 | #else 12 | [] { 13 | auto b = qgetenv("OTR_TRACE_NOTIFY"); 14 | return !b.isEmpty() && b != "0"; 15 | }(); 16 | #endif 17 | 18 | value_::value_(bundle const& b, const QString& name) noexcept : 19 | b(b), self_name(name) 20 | { 21 | b->on_value_created(this); 22 | } 23 | 24 | value_::~value_() 25 | { 26 | b->on_value_destructed(this); 27 | } 28 | 29 | void value_::maybe_trace(const char* str) const 30 | { 31 | if (TRACE_NOTIFY) 32 | qDebug().noquote() << str << QThread::currentThreadId() << b->name() << self_name << get_variant(); 33 | } 34 | -------------------------------------------------------------------------------- /options/defs.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define OPENTRACK_PROFILE_FILENAME_KEY "settings-filename" 4 | #define OPENTRACK_DEFAULT_PROFILE "default.ini" 5 | -------------------------------------------------------------------------------- /options/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_OPTIONS 8 | # define OTR_OPTIONS_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_OPTIONS_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /options/group.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "options/defs.hpp" 4 | 5 | #include "compat/base-path.hpp" 6 | #include "compat/library-path.hpp" 7 | #include "compat/macros.h" 8 | #include "compat/qhash.hpp" 9 | #include "export.hpp" 10 | 11 | #include <optional> 12 | #include <unordered_map> 13 | 14 | #include <QString> 15 | #include <QVariant> 16 | 17 | #include <QDebug> 18 | 19 | // XXX TODO remove qsettings usage -sh 20180624 20 | 21 | namespace options::detail { 22 | // snapshot of qsettings group at given time 23 | class OTR_OPTIONS_EXPORT group final 24 | { 25 | QString name; 26 | 27 | public: 28 | std::unordered_map<QString, QVariant> kvs; 29 | explicit group(const QString& name); 30 | void save() const; 31 | void put(const QString& s, const QVariant& d); 32 | void put(const QString& s, QVariant&& d); 33 | bool contains(const QString& s) const; 34 | 35 | never_inline QVariant get_variant(const QString& name) const; 36 | }; 37 | } // ns options::detail 38 | 39 | 40 | -------------------------------------------------------------------------------- /options/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /options/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /options/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /options/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /options/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /options/metatype.cpp: -------------------------------------------------------------------------------- 1 | #include <QMetaType> 2 | 3 | namespace options::detail { 4 | 5 | template<typename t> 6 | void declare_metatype_for_type(const char* str) 7 | { 8 | qRegisterMetaType<t>(str); 9 | } 10 | 11 | } // ns options::detail 12 | 13 | #define OPENTRACK_DEFINE_METATYPE3(t, ctr) \ 14 | static \ 15 | const char init_##ctr = /* NOLINT(misc-definitions-in-headers) */ \ 16 | (::options::detail::declare_metatype_for_type<t>(#t), 0); \ 17 | 18 | #define OPENTRACK_DEFINE_METATYPE2(t, ctr) \ 19 | OPENTRACK_DEFINE_METATYPE3(t, ctr) 20 | 21 | #define OPENTRACK_DEFINE_METATYPE(t) \ 22 | OPENTRACK_DEFINE_METATYPE2(t, __COUNTER__) 23 | 24 | #define OPENTRACK_METATYPE_(x) OPENTRACK_DEFINE_METATYPE(x) 25 | #include "metatype.hpp" 26 | -------------------------------------------------------------------------------- /options/metatype.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "slider.hpp" 4 | #include "defs.hpp" 5 | 6 | #include <QList> 7 | #include <QString> 8 | #include <QPointF> 9 | #include <QDebug> 10 | 11 | #include <QMetaType> 12 | 13 | #if !defined OPENTRACK_METATYPE_ 14 | # define OPENTRACK_METATYPE(x) Q_DECLARE_METATYPE(x) 15 | #else 16 | # define OPENTRACK_METATYPE(x) Q_DECLARE_METATYPE(x) OPENTRACK_METATYPE_(x) 17 | #endif 18 | 19 | OPENTRACK_METATYPE(QList<double>) 20 | OPENTRACK_METATYPE(QList<float>) 21 | OPENTRACK_METATYPE(QList<int>) 22 | OPENTRACK_METATYPE(QList<bool>) 23 | OPENTRACK_METATYPE(QList<QString>) 24 | OPENTRACK_METATYPE(QList<QPointF>) 25 | OPENTRACK_METATYPE(::options::slider_value) 26 | -------------------------------------------------------------------------------- /options/options.hpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2017 Stanislaw Halik 2 | * 3 | * Permission to use, copy, modify, and/or distribute this software for any 4 | * purpose with or without fee is hereby granted, provided that the above 5 | * copyright notice and this permission notice appear in all copies. 6 | */ 7 | #pragma once 8 | 9 | #include "defs.hpp" 10 | #include "bundle.hpp" 11 | #include "slider.hpp" 12 | #include "value.hpp" 13 | #include "tie.hpp" 14 | #include "scoped.hpp" 15 | #include "globals.hpp" 16 | -------------------------------------------------------------------------------- /options/scoped.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "bundle.hpp" 4 | #include "value.hpp" 5 | #include <QString> 6 | 7 | #include "export.hpp" 8 | 9 | namespace options { 10 | 11 | struct OTR_OPTIONS_EXPORT with_tracker_teardown final 12 | { 13 | with_tracker_teardown(); 14 | ~with_tracker_teardown(); 15 | 16 | private: 17 | bool old_value; 18 | }; 19 | 20 | struct OTR_OPTIONS_EXPORT opts 21 | { 22 | template<typename t> using value = options::value<t>; 23 | using bundle = options::bundle; 24 | 25 | bundle b; 26 | 27 | opts& operator=(const opts&) = delete; 28 | opts(const opts&) = delete; 29 | 30 | void set_raii_dtor_state(bool x) { raii = x; } 31 | 32 | protected: 33 | explicit opts(const QString& name); 34 | ~opts(); 35 | private: 36 | bool raii = true; 37 | }; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /options/value.cpp: -------------------------------------------------------------------------------- 1 | // instantiate the "template class" value<t> symbols 2 | 3 | #define OTR_OPTIONS_INST_VALUE OTR_TEMPLATE_EXPORT 4 | #include "value.hpp" 5 | 6 | -------------------------------------------------------------------------------- /pose-widget/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(pose-widget BIN) 2 | target_link_libraries(${self}) 3 | -------------------------------------------------------------------------------- /pose-widget/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_POSE_WIDGET 8 | # define OTR_POSE_WIDGET_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_POSE_WIDGET_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /pose-widget/images/side1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/pose-widget/images/side1.png -------------------------------------------------------------------------------- /pose-widget/images/side6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/pose-widget/images/side6.png -------------------------------------------------------------------------------- /pose-widget/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /pose-widget/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /pose-widget/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /pose-widget/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /pose-widget/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /pose-widget/posewidget.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/side1.png</file> 4 | <file>images/side6.png</file> 5 | </qresource> 6 | </RCC> 7 | -------------------------------------------------------------------------------- /presets/README.txt: -------------------------------------------------------------------------------- 1 | Here you can add presets as .ini files in order to get them copied for 2 | the end-user as profiles. 3 | 4 | Additionally, a preset called 'default.ini' will be sourced into each 5 | profile the user creates. 6 | 7 | This functionality exists for hardware vendors who create their custom 8 | distributions of opentrack. 9 | 10 | The user can delete the profiles in his 'Documents/opentrack-2.3' 11 | directory. The presets won't be copied again unless their modification 12 | time changes inside the opentrack's distribution. 13 | -------------------------------------------------------------------------------- /proto-flightgear/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(proto-fgfs) 2 | -------------------------------------------------------------------------------- /proto-flightgear/fg-protocol.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/flightgear.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /proto-flightgear/images/flightgear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-flightgear/images/flightgear.png -------------------------------------------------------------------------------- /proto-fsuipc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32 AND NOT opentrack-64bit AND opentrack-intel) 2 | set(SDK_FSUIPC "" CACHE PATH "FSUIPC for older MS FSX path") 3 | if(SDK_FSUIPC) 4 | otr_module(proto-fsuipc) 5 | target_link_libraries(opentrack-proto-fsuipc ${SDK_FSUIPC}/FSUIPC_User.lib) 6 | target_include_directories(opentrack-proto-fsuipc SYSTEM PUBLIC ${SDK_FSUIPC}) 7 | if(MSVC) 8 | target_link_options(${self} PRIVATE -NODEFAULTLIB:LIBC.lib) 9 | endif() 10 | endif() 11 | endif() 12 | -------------------------------------------------------------------------------- /proto-fsuipc/fsuipc-protocol.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/fs9.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /proto-fsuipc/images/fs9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-fsuipc/images/fs9.png -------------------------------------------------------------------------------- /proto-fsuipc/images/fs91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-fsuipc/images/fs91.png -------------------------------------------------------------------------------- /proto-ft/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32) 2 | otr_module(proto-freetrack) 3 | target_link_libraries(opentrack-proto-freetrack opentrack-csv) 4 | endif() 5 | -------------------------------------------------------------------------------- /proto-ft/ft-protocol.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/freetrack.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /proto-ft/images/freetrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-ft/images/freetrack.png -------------------------------------------------------------------------------- /proto-iokit-foohid/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(APPLE) 2 | otr_module(proto-iokit-foohid) 3 | target_link_options(${self} PRIVATE -framework IOKit) 4 | endif() 5 | -------------------------------------------------------------------------------- /proto-iokit-foohid/README.md: -------------------------------------------------------------------------------- 1 | # Virtual Joystick Support for macOS 2 | 3 | Adds support for a virtual joystick output, based on the foohid driver for virtual HID devices. 4 | 5 | ## Usage 6 | 7 | Install the latest [foohid HID driver](https://github.com/unbit/foohid/releases/). 8 | 9 | Select "Virtual Joystick" as the output in OpenTrack. 10 | 11 | The X, Y, Z, Yaw, Pitch, and Roll tracking axes are mapped to the joystick's X, Y, Z, RX, RY, 12 | and RZ axes respectively. 13 | 14 | # Building 15 | 16 | The implementation only uses standard libraries that are pre-installed on macOS. There are no 17 | special requirements for building. 18 | -------------------------------------------------------------------------------- /proto-iokit-foohid/iokitprotocoldialog.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017, Eike Ziller * 2 | * * 3 | * Permission to use, copy, modify, and/or distribute this software for any * 4 | * purpose with or without fee is hereby granted, provided that the above * 5 | * copyright notice and this permission notice appear in all copies. * 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "api/plugin-api.hpp" 11 | 12 | class IOKitProtocolDialog : public IProtocolDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | IOKitProtocolDialog(); 18 | 19 | void register_protocol(IProtocol *protocol) final; 20 | void unregister_protocol() final; 21 | }; 22 | -------------------------------------------------------------------------------- /proto-iokit-foohid/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /proto-libevdev/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(LINUX) 2 | pkg_check_modules(libevdev QUIET libevdev) 3 | if(libevdev_FOUND) 4 | otr_module(proto-libevdev) 5 | target_link_libraries(opentrack-proto-libevdev ${libevdev_LIBRARIES}) 6 | target_include_directories(opentrack-proto-libevdev SYSTEM PUBLIC ${libevdev_INCLUDE_DIRS}) 7 | endif() 8 | endif() 9 | -------------------------------------------------------------------------------- /proto-libevdev/ftnoir_protocol_libevdev_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "ftnoir_protocol_libevdev.h" 2 | #include "api/plugin-api.hpp" 3 | 4 | LibevdevControls::LibevdevControls() 5 | { 6 | ui.setupUi( this ); 7 | connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK())); 8 | connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel())); 9 | } 10 | 11 | void LibevdevControls::doOK() { 12 | save(); 13 | close(); 14 | } 15 | 16 | void LibevdevControls::doCancel() { 17 | close(); 18 | } 19 | 20 | void LibevdevControls::save() { 21 | } 22 | -------------------------------------------------------------------------------- /proto-libevdev/images/linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-libevdev/images/linux.png -------------------------------------------------------------------------------- /proto-libevdev/libevdev-protocol.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/linux.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /proto-mouse/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32) 2 | otr_module(proto-win32-mouse) 3 | endif() 4 | -------------------------------------------------------------------------------- /proto-mouse/ftnoir_protocol_mouse_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "ftnoir_protocol_mouse.h" 2 | #include "api/plugin-api.hpp" 3 | 4 | MOUSEControls::MOUSEControls() 5 | { 6 | ui.setupUi(this); 7 | 8 | connect(ui.buttonBox, &QDialogButtonBox::accepted, this, &MOUSEControls::doOK); 9 | connect(ui.buttonBox, &QDialogButtonBox::rejected, this, &MOUSEControls::doCancel); 10 | 11 | tie_setting(s.mouse_x, ui.axis_x); 12 | tie_setting(s.mouse_y, ui.axis_y); 13 | 14 | tie_setting(s.sensitivity_x, ui.sensitivity_x); 15 | tie_setting(s.sensitivity_y, ui.sensitivity_y); 16 | 17 | const int data[] = { input_direct, input_legacy }; 18 | for (unsigned k = 0; k < std::size(data); k++) 19 | ui.input_method->setItemData(k, data[k]); 20 | tie_setting(s.input_method, ui.input_method); 21 | } 22 | 23 | void MOUSEControls::doOK() 24 | { 25 | s.b->save(); 26 | close(); 27 | } 28 | 29 | void MOUSEControls::doCancel() 30 | { 31 | close(); 32 | } 33 | -------------------------------------------------------------------------------- /proto-mouse/images/mouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-mouse/images/mouse.png -------------------------------------------------------------------------------- /proto-mouse/mouse-settings.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "options/options.hpp" 4 | 5 | enum input_method { 6 | input_direct = 0, input_legacy = 1, 7 | }; 8 | 9 | namespace mouse_impl { 10 | 11 | using namespace options; 12 | 13 | struct mouse_settings : opts 14 | { 15 | value<int> mouse_x { b, "mouse-x", 0 }, mouse_y { b, "mouse-y", 0 }; 16 | value<slider_value> sensitivity_x { b, "mouse-sensitivity-x", { 200, 25, 500 } }; 17 | value<slider_value> sensitivity_y { b, "mouse-sensitivity-y", { 200, 25, 500 } }; 18 | value<input_method> input_method { b, "input-method", input_direct }; 19 | 20 | mouse_settings() : opts("mouse-proto") {} 21 | }; 22 | 23 | } // ns mouse_impl 24 | 25 | using mouse_settings = mouse_impl::mouse_settings; 26 | -------------------------------------------------------------------------------- /proto-mouse/win32-mouse-protocol.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/mouse.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /proto-osc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(SDK_OSCPACK "" CACHE PATH "oscpack build directory") 2 | if(SDK_OSCPACK) 3 | if(WIN32) 4 | if(NOT EXISTS "${SDK_OSCPACK}/include/.") 5 | message(FATAL_ERROR "SDK_OSCPACK should have 'include' subdirectory (or symlink) to src dir") 6 | endif() 7 | link_directories("${SDK_OSCPACK}") 8 | include_directories("${SDK_OSCPACK}/include" "${SDK_OSCPACK}/include/oscpack") 9 | else() 10 | link_directories("${SDK_OSCPACK}/lib" "${SDK_OSCPACK}/lib32") 11 | include_directories("${SDK_OSCPACK}/include/oscpack") 12 | endif() 13 | link_libraries(oscpack) 14 | otr_module(proto-osc) 15 | endif() 16 | -------------------------------------------------------------------------------- /proto-osc/dialog.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "settings.hpp" 4 | #include "ui_dialog.h" 5 | #include "api/plugin-api.hpp" 6 | 7 | class osc_dialog: public IProtocolDialog 8 | { 9 | Q_OBJECT 10 | 11 | public: 12 | osc_dialog(); 13 | void register_protocol(IProtocol*) override; 14 | void unregister_protocol() override; 15 | private: 16 | void set_buttons_visible(bool x) noexcept override; 17 | bool embeddable() noexcept override; 18 | void save() override; 19 | void reload() override; 20 | 21 | Ui_OSC_Dialog ui; 22 | osc_settings s; 23 | const QPalette pal_; 24 | 25 | private slots: 26 | void doOK(); 27 | void doCancel(); 28 | void host_address_edited(const QString& str); 29 | }; 30 | -------------------------------------------------------------------------------- /proto-osc/images/osc-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-osc/images/osc-icon.png -------------------------------------------------------------------------------- /proto-osc/metadata.cpp: -------------------------------------------------------------------------------- 1 | #include "metadata.hpp" 2 | #include "proto.hpp" 3 | #include "dialog.hpp" 4 | 5 | QString osc_metadata::name() { return tr("Open Sound Control"); } 6 | QIcon osc_metadata::icon() { return QIcon(":/images/osc-icon.png"); } 7 | 8 | OPENTRACK_DECLARE_PROTOCOL(osc_proto, osc_dialog, osc_metadata) 9 | -------------------------------------------------------------------------------- /proto-osc/metadata.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "api/plugin-api.hpp" 3 | 4 | class osc_metadata : public Metadata 5 | { 6 | Q_OBJECT 7 | 8 | QString name() override; 9 | QIcon icon() override; 10 | }; 11 | -------------------------------------------------------------------------------- /proto-osc/osc-res.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/osc-icon.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /proto-osc/proto.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* Copyright (c) 2023 Stanislaw Halik <sthalik@misaki.pl> 4 | * 5 | * Permission to use, copy, modify, and/or distribute this software for any 6 | * purpose with or without fee is hereby granted, provided that the above 7 | * copyright notice and this permission notice appear in all copies. 8 | */ 9 | 10 | #include "settings.hpp" 11 | #include "api/plugin-api.hpp" 12 | #include <QUdpSocket> 13 | #include <QHostAddress> 14 | 15 | class osc_proto : public QObject, public IProtocol 16 | { 17 | Q_OBJECT 18 | 19 | osc_settings s; 20 | QUdpSocket sock; 21 | QHostAddress dest; 22 | unsigned short port = 0; 23 | 24 | public: 25 | osc_proto(); 26 | module_status initialize() override; 27 | void pose(const double *headpose, const double*) override; 28 | QString game_name() override { return tr("Open Sound Control"); } 29 | }; 30 | -------------------------------------------------------------------------------- /proto-osc/settings.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include <QString> 3 | #include "options/options.hpp" 4 | 5 | using namespace options; 6 | 7 | struct osc_settings : opts 8 | { 9 | value<QString> address; 10 | value<int> port; 11 | osc_settings() : opts("proto-osc"), address{b, "address", "127.0.0.1"}, 12 | port(b, "port", 53101) 13 | {} 14 | }; 15 | -------------------------------------------------------------------------------- /proto-simconnect/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32 AND opentrack-intel) 2 | otr_module(proto-simconnect) 3 | endif() 4 | -------------------------------------------------------------------------------- /proto-simconnect/fsx_p3d_sp2_xpack.manifest: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?> 2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 3 | <dependency> 4 | <dependentAssembly> 5 | <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.61259.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> 6 | </dependentAssembly> 7 | </dependency> 8 | </assembly> 9 | -------------------------------------------------------------------------------- /proto-simconnect/fsx_rtm.manifest: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?> 2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 3 | <dependency> 4 | <dependentAssembly> 5 | <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.60905.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> 6 | </dependentAssembly> 7 | </dependency> 8 | </assembly> 9 | -------------------------------------------------------------------------------- /proto-simconnect/fsx_sp1.manifest: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?> 2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 3 | <dependency> 4 | <dependentAssembly> 5 | <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.61242.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> 6 | </dependentAssembly> 7 | </dependency> 8 | </assembly> 9 | -------------------------------------------------------------------------------- /proto-simconnect/fsx_sp2.manifest: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?> 2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 3 | <dependency> 4 | <dependentAssembly> 5 | <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.61259.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> 6 | </dependentAssembly> 7 | </dependency> 8 | </assembly> 9 | -------------------------------------------------------------------------------- /proto-simconnect/fsx_steam_last.manifest: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?> 2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 3 | <dependency> 4 | <dependentAssembly> 5 | <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.62615.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> 6 | </dependentAssembly> 7 | </dependency> 8 | </assembly> 9 | -------------------------------------------------------------------------------- /proto-simconnect/fsx_steam_orig.manifest: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?> 2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 3 | <dependency> 4 | <dependentAssembly> 5 | <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.62607.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> 6 | </dependentAssembly> 7 | </dependency> 8 | </assembly> 9 | -------------------------------------------------------------------------------- /proto-simconnect/ftnoir-protocol-sc.rc: -------------------------------------------------------------------------------- 1 | #define RT_MANIFEST 24 2 | 142 RT_MANIFEST fsx_p3d_sp2_xpack.manifest 3 | 143 RT_MANIFEST fsx_rtm.manifest 4 | 144 RT_MANIFEST fsx_sp1.manifest 5 | 145 RT_MANIFEST fsx_sp2.manifest 6 | 146 RT_MANIFEST fsx_steam_orig.manifest 7 | 147 RT_MANIFEST fsx_steam_last.manifest 8 | -------------------------------------------------------------------------------- /proto-simconnect/images/fsx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-simconnect/images/fsx.png -------------------------------------------------------------------------------- /proto-simconnect/images/fsx1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-simconnect/images/fsx1.png -------------------------------------------------------------------------------- /proto-simconnect/manifest-template.in: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?> 2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 3 | <dependency> 4 | <dependentAssembly> 5 | <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='VERSION' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> 6 | </dependentAssembly> 7 | </dependency> 8 | </assembly> 9 | -------------------------------------------------------------------------------- /proto-simconnect/sc-protocol.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/fsx.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /proto-simconnect/simconnect versions.txt: -------------------------------------------------------------------------------- 1 | #define LVERS_ORIG "10.0.60905.0" 2 | #define LVERS_SP1B1 "10.0.61232.0" 3 | #define LVERS_SP1B2 "10.0.61233.0" 4 | #define LVERS_SP1B3 "10.0.61234.0" 5 | #define LVERS_SP1B4 "10.0.61240.0" 6 | #define LVERS_SP1 "10.0.61242.0" 7 | #define LVERS_ACCA1 "10.0.61245.0" 8 | #define LVERS_ACCB1 "10.0.61246.0" 9 | #define LVERS_ACCB2 "10.0.61247.0" 10 | #define LVERS_ACCB3 "10.0.61248.0" 11 | #define LVERS_ACCSP2 "10.0.61259.0" 12 | #define LVERS_STEAM "10.0.62607.0" 13 | #define LVERS_STEAM2 "10.0.62608.0" 14 | #define LVERS_STEAM3 "10.0.62609.0" 15 | #define LVERS_STEAM4 "10.0.62610.0" 16 | #define LVERS_STEAM5 "10.0.62611.0" 17 | #define LVERS_STEAM6 "10.0.62612.0" 18 | #define LVERS_STEAM7 "10.0.62613.0" 19 | #define LVERS_STEAM8 "10.0.62614.0" 20 | #define LVERS_STEAM9 "10.0.62615.0" 21 | -------------------------------------------------------------------------------- /proto-udp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(proto-udp) 2 | -------------------------------------------------------------------------------- /proto-udp/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | <context> 5 | <name>UICFTNControls</name> 6 | <message> 7 | <source>UDP protocol settings</source> 8 | <translation>UDP 协议设置</translation> 9 | </message> 10 | <message> 11 | <source>Remote IP address</source> 12 | <translation>远程 IP 地址</translation> 13 | </message> 14 | <message> 15 | <source>Port</source> 16 | <translation>端口</translation> 17 | </message> 18 | </context> 19 | <context> 20 | <name>udp</name> 21 | <message> 22 | <source>Can't bind socket: %1</source> 23 | <translation>无法绑定套接字:%1</translation> 24 | </message> 25 | <message> 26 | <source>UDP over network</source> 27 | <translation type="unfinished"></translation> 28 | </message> 29 | </context> 30 | <context> 31 | <name>udp_sender_dll</name> 32 | <message> 33 | <source>UDP over network</source> 34 | <translation type="unfinished"></translation> 35 | </message> 36 | </context> 37 | </TS> 38 | -------------------------------------------------------------------------------- /proto-vjoystick/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32 AND opentrack-intel) 2 | set(SDK_VJOYSTICK "" CACHE PATH "vjoystick SDK path") 3 | if(SDK_VJOYSTICK) 4 | if(opentrack-64bit) 5 | set(arch "amd64/") 6 | else() 7 | set(arch "") 8 | endif() 9 | set(lib "${SDK_VJOYSTICK}/lib/${arch}vJoyInterface.lib") 10 | set(dll "${SDK_VJOYSTICK}/lib/${arch}vJoyInterface.dll") 11 | otr_module(proto-vjoy) 12 | target_link_libraries(opentrack-proto-vjoy ${lib}) 13 | target_include_directories(opentrack-proto-vjoy SYSTEM PUBLIC "${SDK_VJOYSTICK}/inc") 14 | install(FILES "${dll}" DESTINATION ${opentrack-libexec}) 15 | endif() 16 | endif() 17 | -------------------------------------------------------------------------------- /proto-vjoystick/images/vjoystick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-vjoystick/images/vjoystick.png -------------------------------------------------------------------------------- /proto-vjoystick/vjoystick.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/vjoystick.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /proto-vjoystick/vjoystick_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "vjoystick.h" 2 | #include "api/plugin-api.hpp" 3 | 4 | #include <QDialogButtonBox> 5 | 6 | vjoystick_dialog::vjoystick_dialog() 7 | { 8 | ui.setupUi(this); 9 | connect(ui.buttonBox, &QDialogButtonBox::accepted, this, &QWidget::close); 10 | connect(ui.buttonBox, &QDialogButtonBox::rejected, this, &QWidget::close); 11 | } 12 | -------------------------------------------------------------------------------- /proto-wine/images/wine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-wine/images/wine.png -------------------------------------------------------------------------------- /proto-wine/opentrack-wrapper-wine-posix.cxx: -------------------------------------------------------------------------------- 1 | #ifdef _WIN32 2 | # undef _WIN32 3 | #endif 4 | 5 | #define shm_wrapper ShmPosix 6 | #include "compat/shm.h" 7 | #include "compat/shm.cpp" 8 | -------------------------------------------------------------------------------- /proto-wine/proton.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <qchar.h> 4 | #include <qprocess.h> 5 | 6 | std::tuple<QProcessEnvironment, QString, bool> make_steam_environ(const QString& proton_dist_path); 7 | std::tuple<QString, QString, bool> make_wineprefix(int appid); -------------------------------------------------------------------------------- /proto-wine/wine-protocol.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/wine.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /proto-wine/wine-shm.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WINE_SHM_NAME "facetracknoir-wine-shm" 4 | #define WINE_MTX_NAME "facetracknoir-wine-mtx" 5 | 6 | #ifdef __clang__ 7 | # pragma clang diagnostic push 8 | # pragma clang diagnostic ignored "-Wreserved-id-macro" 9 | #endif 10 | 11 | #ifdef __clang__ 12 | # pragma clang diagnostic pop 13 | #endif 14 | 15 | struct WineSHM { 16 | double data[6]; 17 | int gameid, gameid2; 18 | unsigned char table[8]; 19 | bool stop; 20 | }; 21 | -------------------------------------------------------------------------------- /qxt-mini/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(UNIX OR APPLE) 2 | set(self opentrack-qxt-mini) 3 | include_directories(SYSTEM ${Qt6Gui_PRIVATE_INCLUDE_DIRS}) 4 | otr_module(qxt-mini NO-COMPAT BIN) 5 | if(APPLE) 6 | find_library(CoreFoundation CoreFoundation) 7 | find_library(Carbon Carbon) 8 | target_link_options(${self} PUBLIC -framework Carbon -I ${CoreFoundation}) 9 | else() 10 | otr_pkgconfig(${self} x11 xcb xproto) 11 | endif() 12 | target_compile_definitions(${self} PRIVATE -DQXT_BUILD) 13 | endif() 14 | -------------------------------------------------------------------------------- /qxt-mini/QxtGlobalShortcut: -------------------------------------------------------------------------------- 1 | #ifndef _WIN32 2 | # include "qxtglobalshortcut.h" 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /qxt-mini/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /qxt-mini/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /qxt-mini/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /qxt-mini/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /qxt-mini/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /qxt-mini/x11-keymap.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if !defined __APPLE__ && !defined _WIN32 4 | 5 | #undef QXT_X11_INCLUDED 6 | #define QXT_X11_INCLUDED 7 | 8 | #include <Qt> 9 | #include <QDebug> 10 | #include <QHash> 11 | #include <QPair> 12 | 13 | #include "qxtglobal.h" 14 | 15 | #include <vector> 16 | #include <tuple> 17 | 18 | #include <xcb/xcb.h> 19 | #include <X11/Xlib.h> 20 | #include <X11/Xutil.h> 21 | 22 | std::vector<quint32> 23 | qt_key_to_x11(Display* disp, Qt::Key k, Qt::KeyboardModifiers m); 24 | 25 | std::tuple<Qt::Key, Qt::KeyboardModifiers> 26 | x11_key_to_qt(Display* disp, quint32 keycode, quint32 mods); 27 | 28 | QPair<KeySym, KeySym> 29 | keycode_to_keysym(Display* disp, 30 | quint32 keycode, quint32 keystate, 31 | xcb_key_press_event_t const* kev); 32 | 33 | quint32 qt_mods_to_x11(Qt::KeyboardModifiers modifiers); 34 | 35 | Qt::KeyboardModifiers x11_mods_to_qt(quint32 mods); 36 | quint32 xcb_mods_to_x11(quint32 mods); 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /redist/x64/msvcp110.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/redist/x64/msvcp110.dll -------------------------------------------------------------------------------- /redist/x64/msvcr110.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/redist/x64/msvcr110.dll -------------------------------------------------------------------------------- /redist/x86/msvcp110.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/redist/x86/msvcp110.dll -------------------------------------------------------------------------------- /redist/x86/msvcr110.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/redist/x86/msvcr110.dll -------------------------------------------------------------------------------- /sdk-paths-runner@GNU-Linux.cmake: -------------------------------------------------------------------------------- 1 | set(SDK_WINE ON CACHE BOOL "" FORCE) 2 | set(OPENTRACK_WINE_ARCH -m64 CACHE STRING "" FORCE) 3 | set(ENV{PATH} "/usr/lib/wine:$ENV{PATH}") 4 | -------------------------------------------------------------------------------- /spline/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(spline BIN) 2 | -------------------------------------------------------------------------------- /spline/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_SPLINE 8 | # define OTR_SPLINE_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_SPLINE_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /spline/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /spline/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /spline/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /spline/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /spline/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /tracker-aruco/aruco-tracker.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/aruco.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-aruco/compile-test/abi.cpp: -------------------------------------------------------------------------------- 1 | #include <aruco/abi.h> 2 | 3 | #if ARUCO_OPENTRACK_FORK_ABI != 2 4 | # error "wrong ABI" 5 | #endif 6 | 7 | int main(void) { return 0; } 8 | -------------------------------------------------------------------------------- /tracker-aruco/images/aruco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-aruco/images/aruco.png -------------------------------------------------------------------------------- /tracker-easy/Resources/cap_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/cap_front.png -------------------------------------------------------------------------------- /tracker-easy/Resources/cap_side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/cap_side.png -------------------------------------------------------------------------------- /tracker-easy/Resources/clip_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/clip_front.png -------------------------------------------------------------------------------- /tracker-easy/Resources/clip_side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/clip_side.png -------------------------------------------------------------------------------- /tracker-easy/Resources/easy-tracker-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/easy-tracker-logo.png -------------------------------------------------------------------------------- /tracker-easy/doc/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/logo.png -------------------------------------------------------------------------------- /tracker-easy/doc/ptrack.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/ptrack.ico -------------------------------------------------------------------------------- /tracker-easy/doc/settings1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/settings1.png -------------------------------------------------------------------------------- /tracker-easy/doc/settings2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/settings2.png -------------------------------------------------------------------------------- /tracker-easy/doc/settings3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/settings3.png -------------------------------------------------------------------------------- /tracker-easy/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_TRACKER_PT 8 | # define OTR_PT_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_PT_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /tracker-easy/kalman-filter-pose.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019, Stephane Lenclud <github@lenclud.com> 2 | 3 | * Permission to use, copy, modify, and/or distribute this 4 | * software for any purpose with or without fee is hereby granted, 5 | * provided that the above copyright notice and this permission 6 | * notice appear in all copies. 7 | */ 8 | 9 | #pragma once 10 | 11 | #include <opencv2/core.hpp> 12 | #include <opencv2/video/tracking.hpp> 13 | 14 | 15 | namespace EasyTracker 16 | { 17 | 18 | /// 19 | /// TODO: do not use a constant time difference 20 | /// 21 | class KalmanFilterPose: public cv::KalmanFilter 22 | { 23 | public: 24 | KalmanFilterPose(); 25 | void Init(int aStateCount, int aMeasurementCount, int aInputCount, double aDt); 26 | void Update(double& aX, double& aY, double& aZ, double& aRoll, double& aPitch, double& aYaw); 27 | 28 | 29 | cv::Mat iMeasurements; 30 | }; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /tracker-easy/module.cpp: -------------------------------------------------------------------------------- 1 | #include "tracker-easy.h" 2 | #include "tracker-easy-dialog.h" 3 | #include "module.hpp" 4 | 5 | #include <memory> 6 | 7 | namespace EasyTracker 8 | { 9 | QString Metadata::name() { return tr("Easy Tracker 1.1"); } 10 | QIcon Metadata::icon() { return QIcon(":/Resources/easy-tracker-logo.png"); } 11 | 12 | } 13 | 14 | 15 | OPENTRACK_DECLARE_TRACKER(EasyTracker::Tracker, EasyTracker::Dialog, EasyTracker::Metadata) 16 | -------------------------------------------------------------------------------- /tracker-easy/module.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "api/plugin-api.hpp" 4 | #include <QIcon> 5 | #include <QString> 6 | 7 | #include "compat/linkage-macros.hpp" 8 | 9 | namespace EasyTracker 10 | { 11 | 12 | class OTR_GENERIC_EXPORT Metadata : public ::Metadata 13 | { 14 | Q_OBJECT 15 | 16 | QString name() override; 17 | QIcon icon() override; 18 | }; 19 | 20 | } // ns pt_module 21 | -------------------------------------------------------------------------------- /tracker-easy/ocv-check.cxx: -------------------------------------------------------------------------------- 1 | #include <opencv2/calib3d.hpp> 2 | void check_solvep3p() 3 | { 4 | cv::Mat x; 5 | cv::solveP3P(x, x, x, x, x, x, 0); 6 | } 7 | 8 | #include <opencv2/video/tracking.hpp> 9 | void check_kf() 10 | { 11 | [[maybe_unused]] cv::KalmanFilter kf; 12 | } 13 | 14 | #include <opencv2/highgui.hpp> 15 | void check_highgui() 16 | { 17 | cv::imshow("foo", cv::noArray()); 18 | } 19 | -------------------------------------------------------------------------------- /tracker-easy/tracker_easy.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>Resources/easy-tracker-logo.png</file> 4 | <file>Resources/cap_front.png</file> 5 | <file>Resources/cap_side.png</file> 6 | <file>Resources/clip_front.png</file> 7 | <file>Resources/clip_side.png</file> 8 | </qresource> 9 | </RCC> 10 | -------------------------------------------------------------------------------- /tracker-eyeware-beam/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The Eyeware Beam SDK can be found at https://beam.eyeware.tech/developers/ 2 | # The latest version can be downloaded at https://eyewarecistorage.blob.core.windows.net/beam-sdk/BeamSDK-Windows64-1.1.0.zip 3 | set(SDK_EYEWARE_BEAM "" CACHE PATH "Eyeware Beam SDK path") 4 | if(WIN32 AND SDK_EYEWARE_BEAM) 5 | if(MSVC) 6 | add_compile_options(-EHsc) 7 | endif() 8 | otr_module(tracker-eyeware-beam) 9 | 10 | if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") 11 | set(arch "x86") 12 | else() 13 | set(arch "x64") 14 | endif() 15 | 16 | target_include_directories(${self} SYSTEM PRIVATE "${SDK_EYEWARE_BEAM}/API/cpp/include") 17 | target_link_directories(${self} PRIVATE "${SDK_EYEWARE_BEAM}/API/cpp/lib/${arch}") 18 | set(dll "${SDK_EYEWARE_BEAM}/API/cpp/lib/${arch}/tracker_client.dll") 19 | set(lib tracker_client.lib) 20 | 21 | #message(${self}) 22 | #message(${dll}) 23 | #message(${lib}) 24 | 25 | target_link_libraries(${self} ${lib}) 26 | install(FILES ${dll} DESTINATION ${opentrack-libexec}) 27 | endif() 28 | -------------------------------------------------------------------------------- /tracker-eyeware-beam/eyeware_beam.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/images"> 3 | <file>eyeware_beam_logo.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-eyeware-beam/eyeware_beam_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-eyeware-beam/eyeware_beam_logo.png -------------------------------------------------------------------------------- /tracker-freepie-udp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(tracker-freepie-udp) 2 | -------------------------------------------------------------------------------- /tracker-freepie-udp/freepie-udp-res.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>glovepie.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-freepie-udp/ftnoir_tracker_freepie-udp_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "ftnoir_tracker_freepie-udp.h" 2 | #include "api/plugin-api.hpp" 3 | 4 | dialog_freepie::dialog_freepie() 5 | { 6 | ui.setupUi(this); 7 | 8 | connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); 9 | connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); 10 | 11 | tie_setting(s.port, ui.port); 12 | tie_setting(s.idx_x, ui.input_x); 13 | tie_setting(s.idx_y, ui.input_y); 14 | tie_setting(s.idx_z, ui.input_z); 15 | 16 | tie_setting(s.add_yaw, ui.add_yaw); 17 | tie_setting(s.add_pitch, ui.add_pitch); 18 | tie_setting(s.add_roll, ui.add_roll); 19 | } 20 | 21 | void dialog_freepie::doOK() { 22 | s.b->save(); 23 | close(); 24 | } 25 | 26 | void dialog_freepie::doCancel() 27 | { 28 | close(); 29 | } 30 | 31 | -------------------------------------------------------------------------------- /tracker-freepie-udp/glovepie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-freepie-udp/glovepie.png -------------------------------------------------------------------------------- /tracker-fusion/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(tracker-fusion) 2 | -------------------------------------------------------------------------------- /tracker-fusion/fusion-tracker-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-fusion/fusion-tracker-logo.png -------------------------------------------------------------------------------- /tracker-fusion/fusion.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/images"> 3 | <file>fusion-tracker-logo.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-fusion/fusion_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "fusion.h" 2 | 3 | -------------------------------------------------------------------------------- /tracker-hatire/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(Qt6SerialPort_FOUND) 2 | otr_module(tracker-hatire) 3 | target_link_libraries(${self} ${Qt6SerialPort_LIBRARIES}) 4 | target_include_directories(${self} SYSTEM PUBLIC ${Qt6SerialPort_INCLUDE_DIRS}) 5 | if (WIN32 OR APPLE) 6 | otr_install_lib(Qt6::SerialPort .) 7 | endif() 8 | endif() 9 | -------------------------------------------------------------------------------- /tracker-hatire/ftnoir_arduino_type.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <QDataStream> 4 | 5 | // Arduino frame structure 6 | #pragma pack(push,2) 7 | struct TArduinoData 8 | { 9 | quint16 Begin; // Header frame 0xAAAA; 10 | quint16 Code; // 0->999 Num frame >=2000 Info >=3000 Init >=5000 Start Command >=9000 Error 11 | float Rot[3]; 12 | float Trans[3]; 13 | quint16 End; // End frame 0x5555; 14 | } ; 15 | #pragma pack(pop) 16 | 17 | inline QDataStream & operator >> ( QDataStream& in, TArduinoData& out ) 18 | { 19 | in.setFloatingPointPrecision(QDataStream::SinglePrecision ); 20 | 21 | in >> out.Begin >> out.Code 22 | >> out.Rot[0] >> out.Rot[1] >> out.Rot[2] 23 | >> out.Trans[0] >> out.Trans[1] >> out.Trans[2] 24 | >> out.End; 25 | return in; 26 | } 27 | 28 | static_assert(sizeof(TArduinoData) == 30, "sizeof packet != 30"); 29 | -------------------------------------------------------------------------------- /tracker-hatire/ftnoir_hat.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/hat_logo.png</file> 4 | <file>images/hat.ico</file> 5 | <file>images/hat.png</file> 6 | </qresource> 7 | </RCC> 8 | -------------------------------------------------------------------------------- /tracker-hatire/images/hat.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-hatire/images/hat.ico -------------------------------------------------------------------------------- /tracker-hatire/images/hat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-hatire/images/hat.png -------------------------------------------------------------------------------- /tracker-hatire/images/hat_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-hatire/images/hat_logo.png -------------------------------------------------------------------------------- /tracker-hydra/ftnoir_tracker_hydra_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "ftnoir_tracker_hydra.h" 2 | #include "api/plugin-api.hpp" 3 | 4 | dialog_hydra::dialog_hydra() 5 | { 6 | ui.setupUi(this); 7 | 8 | connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); 9 | connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); 10 | } 11 | 12 | void dialog_hydra::doOK() { 13 | s.b->save(); 14 | close(); 15 | } 16 | 17 | void dialog_hydra::doCancel() 18 | { 19 | close(); 20 | } 21 | 22 | -------------------------------------------------------------------------------- /tracker-hydra/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | <context> 5 | <name>UIHydraControls</name> 6 | <message> 7 | <source>Sixense Hydra tracker settings FaceTrackNoIR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | <message> 11 | <source>None whatsoever</source> 12 | <translation type="unfinished"></translation> 13 | </message> 14 | </context> 15 | </TS> 16 | -------------------------------------------------------------------------------- /tracker-hydra/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | <context> 5 | <name>UIHydraControls</name> 6 | <message> 7 | <source>Sixense Hydra tracker settings FaceTrackNoIR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | <message> 11 | <source>None whatsoever</source> 12 | <translation type="unfinished"></translation> 13 | </message> 14 | </context> 15 | </TS> 16 | -------------------------------------------------------------------------------- /tracker-hydra/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | <context> 5 | <name>UIHydraControls</name> 6 | <message> 7 | <source>Sixense Hydra tracker settings FaceTrackNoIR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | <message> 11 | <source>None whatsoever</source> 12 | <translation type="unfinished"></translation> 13 | </message> 14 | </context> 15 | </TS> 16 | -------------------------------------------------------------------------------- /tracker-hydra/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | <context> 5 | <name>UIHydraControls</name> 6 | <message> 7 | <source>Sixense Hydra tracker settings FaceTrackNoIR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | <message> 11 | <source>None whatsoever</source> 12 | <translation type="unfinished"></translation> 13 | </message> 14 | </context> 15 | </TS> 16 | -------------------------------------------------------------------------------- /tracker-hydra/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | <context> 5 | <name>UIHydraControls</name> 6 | <message> 7 | <source>Sixense Hydra tracker settings FaceTrackNoIR</source> 8 | <translation>Sixense Hydra 跟踪器设置 (FaceTrackNoIR版)</translation> 9 | </message> 10 | <message> 11 | <source>None whatsoever</source> 12 | <translation>什么都没有</translation> 13 | </message> 14 | </context> 15 | </TS> 16 | -------------------------------------------------------------------------------- /tracker-joystick/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32) 2 | otr_module(tracker-joystick) 3 | target_link_libraries(opentrack-tracker-joystick opentrack-dinput) 4 | endif() 5 | 6 | -------------------------------------------------------------------------------- /tracker-kinect-face/images/kinect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-kinect-face/images/kinect.png -------------------------------------------------------------------------------- /tracker-kinect-face/kinect_face.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/kinect.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-kinect-face/kinect_face_settings.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019, Stephane Lenclud <github@lenclud.com> 2 | 3 | * Permission to use, copy, modify, and/or distribute this 4 | * software for any purpose with or without fee is hereby granted, 5 | * provided that the above copyright notice and this permission 6 | * notice appear in all copies. 7 | */ 8 | 9 | #pragma once 10 | #include "ui_kinect_face_settings.h" 11 | #include "api/plugin-api.hpp" 12 | 13 | class KinectFaceSettings : public ITrackerDialog 14 | { 15 | Q_OBJECT 16 | 17 | Ui::KinectFaceUi ui; 18 | 19 | public: 20 | KinectFaceSettings(); 21 | void register_tracker(ITracker *) override {} 22 | void unregister_tracker() override {} 23 | }; 24 | 25 | class KinectFaceMetadata : public Metadata 26 | { 27 | Q_OBJECT 28 | 29 | QString name() override { return tr("Kinect Face 0.1"); } 30 | QIcon icon() override { return QIcon(":/images/kinect.png"); } 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /tracker-linux-joystick/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(LINUX) 2 | otr_module(tracker-linux-joystick) 3 | target_link_libraries(opentrack-tracker-linux-joystick) 4 | endif() 5 | -------------------------------------------------------------------------------- /tracker-neuralnet/BUILD.md: -------------------------------------------------------------------------------- 1 | ONNX Runtime 2 | ------------ 3 | 4 | Recommended approach on Windws: Build a shared library from sources. Use static MSVC 5 | runtime library. The v1.6.0 branch should work fine. 6 | 7 | Source location: https://github.com/microsoft/onnxruntime 8 | 9 | In order to build, execute `build.bat` as follows: 10 | 11 | ``` 12 | $ build.bat --config Release --x86 --cmake_extra_defines CMAKE_INSTALL_PREFIX="D:\Dev\onnxruntime-x86-release" --build_dir .\buildx86\ --enable_msvc_static_runtime --build_shared_lib --skip_tests --cmake_generator "Visual Studio 15 2017" 13 | $ cmake --install .\buildx64\Release 14 | ``` 15 | 16 | Replace the argument for `--cmake_generator` if needed. Also adjust the build-and install directories. 17 | 18 | This should place all required files in the directory specified by CMAKE_INSTALL_PREFIX. 19 | 20 | See also https://www.onnxruntime.ai/docs/how-to/build.html. -------------------------------------------------------------------------------- /tracker-neuralnet/images/neuralnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/images/neuralnet.png -------------------------------------------------------------------------------- /tracker-neuralnet/models/head-localizer.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/models/head-localizer.onnx -------------------------------------------------------------------------------- /tracker-neuralnet/models/head-pose-0.2-big.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/models/head-pose-0.2-big.onnx -------------------------------------------------------------------------------- /tracker-neuralnet/models/head-pose-0.2-small.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/models/head-pose-0.2-small.onnx -------------------------------------------------------------------------------- /tracker-neuralnet/models/head-pose-0.3-big-quantized.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/models/head-pose-0.3-big-quantized.onnx -------------------------------------------------------------------------------- /tracker-neuralnet/neuralnet-tracker.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/neuralnet.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-neuralnet/redist/vcomp140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/redist/vcomp140.dll -------------------------------------------------------------------------------- /tracker-pt/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(opentrack-opencv) 2 | find_package(OpenCV QUIET) 3 | if(OpenCV_FOUND) 4 | foreach(k core) 5 | otr_install_lib("opencv_${k}" "${opentrack-libexec}") 6 | endforeach() 7 | otr_module(tracker-pt-base STATIC) 8 | target_include_directories(${self} SYSTEM PUBLIC ${OpenCV_INCLUDE_DIRS}) 9 | target_link_libraries(${self} opentrack-cv opencv_core) 10 | set_property(TARGET ${self} PROPERTY OUTPUT_NAME "pt-base") 11 | endif() 12 | add_subdirectory(module) 13 | -------------------------------------------------------------------------------- /tracker-pt/Resources/Logo_IR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/Logo_IR.png -------------------------------------------------------------------------------- /tracker-pt/Resources/cap_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/cap_front.png -------------------------------------------------------------------------------- /tracker-pt/Resources/cap_side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/cap_side.png -------------------------------------------------------------------------------- /tracker-pt/Resources/clip_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/clip_front.png -------------------------------------------------------------------------------- /tracker-pt/Resources/clip_side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/clip_side.png -------------------------------------------------------------------------------- /tracker-pt/doc/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/logo.png -------------------------------------------------------------------------------- /tracker-pt/doc/ptrack.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/ptrack.ico -------------------------------------------------------------------------------- /tracker-pt/doc/settings1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/settings1.png -------------------------------------------------------------------------------- /tracker-pt/doc/settings2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/settings2.png -------------------------------------------------------------------------------- /tracker-pt/doc/settings3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/settings3.png -------------------------------------------------------------------------------- /tracker-pt/module/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(opentrack-opencv) 2 | find_package(OpenCV QUIET) 3 | if(OpenCV_FOUND) 4 | foreach(k core imgproc) 5 | otr_install_lib("opencv_${k}" "${opentrack-libexec}") 6 | endforeach() 7 | otr_module(tracker-pt) 8 | target_link_libraries(${self} opentrack-video opencv_imgproc opentrack-tracker-pt-base) 9 | target_include_directories(${self} PUBLIC "${CMAKE_SOURCE_DIR}/tracker-pt") 10 | endif() 11 | -------------------------------------------------------------------------------- /tracker-pt/module/Resources/Logo_IR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/module/Resources/Logo_IR.png -------------------------------------------------------------------------------- /tracker-pt/module/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_TRACKER_PT 8 | # define OTR_PT_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_PT_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /tracker-pt/module/frame.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "pt-api.hpp" 4 | 5 | #include <opencv2/core/mat.hpp> 6 | #include <QImage> 7 | 8 | #ifdef __clang__ 9 | # pragma clang diagnostic push 10 | # pragma clang diagnostic ignored "-Wweak-vtables" 11 | #endif 12 | 13 | namespace pt_module { 14 | 15 | struct Frame final : pt_frame 16 | { 17 | cv::Mat mat; 18 | 19 | operator const cv::Mat&() const& { return mat; } 20 | operator cv::Mat&() & { return mat; } 21 | }; 22 | 23 | struct Preview final : pt_preview 24 | { 25 | Preview(int w, int h); 26 | 27 | void set_last_frame(const pt_frame& frame) override; 28 | QImage get_bitmap() override; 29 | void draw_head_center(f x, f y) override; 30 | 31 | operator cv::Mat&() { return frame_copy; } 32 | operator cv::Mat const&() const { return frame_copy; } 33 | 34 | private: 35 | cv::Mat frame_copy, frame_out, frame_tmp; 36 | }; 37 | 38 | } // ns pt_module 39 | 40 | #ifdef __clang__ 41 | # pragma clang diagnostic pop 42 | #endif 43 | -------------------------------------------------------------------------------- /tracker-pt/module/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | <context> 5 | <name>pt_module::metadata_pt</name> 6 | <message> 7 | <source>PointTracker 1.1</source> 8 | <translation>PointTracker 1.1</translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-pt/module/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | <context> 5 | <name>pt_module::metadata_pt</name> 6 | <message> 7 | <source>PointTracker 1.1</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-pt/module/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | <context> 5 | <name>pt_module::metadata_pt</name> 6 | <message> 7 | <source>PointTracker 1.1</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-pt/module/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | <context> 5 | <name>pt_module::metadata_pt</name> 6 | <message> 7 | <source>PointTracker 1.1</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-pt/module/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | <context> 5 | <name>pt_module::metadata_pt</name> 6 | <message> 7 | <source>PointTracker 1.1</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-pt/module/module.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "api/plugin-api.hpp" 4 | #include <QIcon> 5 | #include <QString> 6 | 7 | #include "compat/linkage-macros.hpp" 8 | 9 | namespace pt_module 10 | { 11 | 12 | class OTR_GENERIC_EXPORT metadata_pt : public Metadata 13 | { 14 | Q_OBJECT 15 | 16 | QString name() override; 17 | QIcon icon() override; 18 | }; 19 | 20 | } // ns pt_module 21 | -------------------------------------------------------------------------------- /tracker-pt/module/tracker_pt.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>Resources/Logo_IR.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-pt/point-filter.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "cv/numeric.hpp" 4 | #include "compat/timer.hpp" 5 | #include "pt-settings.hpp" 6 | #include <optional> 7 | #include <array> 8 | 9 | namespace pt_point_filter_impl { 10 | 11 | using namespace numeric_types; 12 | using PointOrder = std::array<numeric_types::vec2, 3>; 13 | 14 | class point_filter final 15 | { 16 | PointOrder state_; 17 | std::optional<Timer> t; 18 | const pt_settings& s; 19 | 20 | public: 21 | void reset(); 22 | const PointOrder& operator()(const PointOrder& input, f deadzone_amount); 23 | 24 | explicit point_filter(const pt_settings& s); 25 | ~point_filter() = default; 26 | 27 | OTR_DISABLE_MOVE_COPY(point_filter); 28 | }; 29 | 30 | } // ns pt_point_filter_impl 31 | 32 | using point_filter = pt_point_filter_impl::point_filter; 33 | -------------------------------------------------------------------------------- /tracker-pt/tracker_pt_base.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>Resources/cap_front.png</file> 4 | <file>Resources/cap_side.png</file> 5 | <file>Resources/clip_front.png</file> 6 | <file>Resources/clip_side.png</file> 7 | </qresource> 8 | </RCC> 9 | -------------------------------------------------------------------------------- /tracker-rift-140/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32) 2 | SET(SDK_RIFT_140 "" CACHE PATH "libOVR 1.4.0 path for Oculus Rift") 3 | if(SDK_RIFT_140) 4 | include_directories("${SDK_RIFT_140}/Include") 5 | if(opentrack-64bit) 6 | link_directories("${SDK_RIFT_140}/Lib/Windows/x64/Release/VS2017") 7 | else() 8 | link_directories("${SDK_RIFT_140}/Lib/Windows/Win32/Release/VS2017") 9 | endif() 10 | link_libraries(LibOVR winmm setupapi ws2_32 imagehlp wbemuuid) 11 | 12 | otr_module(tracker-rift) 13 | endif() 14 | endif() 15 | -------------------------------------------------------------------------------- /tracker-rift-140/dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "rift-140.hpp" 2 | #include "api/plugin-api.hpp" 3 | 4 | dialog_rift_140::dialog_rift_140() 5 | { 6 | ui.setupUi(this); 7 | 8 | connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); 9 | connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); 10 | } 11 | 12 | void dialog_rift_140::doOK() { 13 | s.b->save(); 14 | close(); 15 | } 16 | 17 | void dialog_rift_140::doCancel() { 18 | close(); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /tracker-rift-140/images/medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/medium.png -------------------------------------------------------------------------------- /tracker-rift-140/images/rift_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/rift_medium.png -------------------------------------------------------------------------------- /tracker-rift-140/images/rift_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/rift_small.png -------------------------------------------------------------------------------- /tracker-rift-140/images/rift_tiny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/rift_tiny.png -------------------------------------------------------------------------------- /tracker-rift-140/images/small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/small.png -------------------------------------------------------------------------------- /tracker-rift-140/images/tiny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/tiny.png -------------------------------------------------------------------------------- /tracker-rift-140/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | <context> 5 | <name>dialog_rift_140</name> 6 | <message> 7 | <source>Oculus Rift tracker settings FaceTrackNoIR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>rift_140Dll</name> 13 | <message> 14 | <source>Oculus Rift runtime 1.4.0 -- HMD</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | </context> 18 | </TS> 19 | -------------------------------------------------------------------------------- /tracker-rift-140/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | <context> 5 | <name>dialog_rift_140</name> 6 | <message> 7 | <source>Oculus Rift tracker settings FaceTrackNoIR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>rift_140Dll</name> 13 | <message> 14 | <source>Oculus Rift runtime 1.4.0 -- HMD</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | </context> 18 | </TS> 19 | -------------------------------------------------------------------------------- /tracker-rift-140/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | <context> 5 | <name>dialog_rift_140</name> 6 | <message> 7 | <source>Oculus Rift tracker settings FaceTrackNoIR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>rift_140Dll</name> 13 | <message> 14 | <source>Oculus Rift runtime 1.4.0 -- HMD</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | </context> 18 | </TS> 19 | -------------------------------------------------------------------------------- /tracker-rift-140/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | <context> 5 | <name>dialog_rift_140</name> 6 | <message> 7 | <source>Oculus Rift tracker settings FaceTrackNoIR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>rift_140Dll</name> 13 | <message> 14 | <source>Oculus Rift runtime 1.4.0 -- HMD</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | </context> 18 | </TS> 19 | -------------------------------------------------------------------------------- /tracker-rift-140/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | <context> 5 | <name>dialog_rift_140</name> 6 | <message> 7 | <source>Oculus Rift tracker settings FaceTrackNoIR</source> 8 | <translation>Oculus Rift 追踪器设置 (FaceTrackNoIR版)</translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>rift_140Dll</name> 13 | <message> 14 | <source>Oculus Rift runtime 1.4.0 -- HMD</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | </context> 18 | </TS> 19 | -------------------------------------------------------------------------------- /tracker-rift-140/rift-140.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/rift_medium.png</file> 4 | <file>images/rift_small.png</file> 5 | <file>images/rift_tiny.png</file> 6 | </qresource> 7 | </RCC> 8 | -------------------------------------------------------------------------------- /tracker-rs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(SDK_REALSENSE "$ENV{RSSDK_DIR}" CACHE PATH "Intel RealSense SDK dir") 2 | 3 | if(WIN32 AND SDK_REALSENSE AND opentrack-intel) 4 | if(CMAKE_COMPILER_IS_GNUCC) 5 | add_definitions(-fpermissive -Wno-error) # for SDK headers 6 | endif() 7 | otr_module(tracker-rs) 8 | add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/rs_impl") 9 | target_link_libraries(opentrack-tracker-rs opentrack-tracker-rs-impl) 10 | endif() 11 | -------------------------------------------------------------------------------- /tracker-rs/images/RS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rs/images/RS.png -------------------------------------------------------------------------------- /tracker-rs/images/intel-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rs/images/intel-16x16.png -------------------------------------------------------------------------------- /tracker-rs/rs_impl/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32) 2 | otr_module(tracker-rs-impl STATIC NO-QT SOURCES "${SDK_REALSENSE}/opensource/src/libpxc/libpxc.cpp") 3 | target_compile_definitions(opentrack-tracker-rs-impl PRIVATE -DUNICODE -D_UNICODE) 4 | target_include_directories(opentrack-tracker-rs-impl PRIVATE SYSTEM "${SDK_REALSENSE}/include") 5 | target_link_libraries(opentrack-tracker-rs-impl advapi32) 6 | 7 | # for SDK headers 8 | if(CMAKE_COMPILER_IS_GNUCXX) 9 | add_definitions(-fpermissive -Wno-error -w 10 | #-Wno-missing-field-initializers -Wno-switch -Wno-sign-compare 11 | #-Wno-unknown-pragmas -Wno-attributes 12 | ) 13 | endif() 14 | endif() 15 | -------------------------------------------------------------------------------- /tracker-rs/rs_impl/attic/bin/amd64/.gitignore: -------------------------------------------------------------------------------- 1 | /*.exp 2 | /*.obj 3 | -------------------------------------------------------------------------------- /tracker-rs/rs_impl/attic/bin/ia32/.gitignore: -------------------------------------------------------------------------------- 1 | /*.exp 2 | /*.obj 3 | -------------------------------------------------------------------------------- /tracker-rs/rs_impl/attic/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | setlocal 4 | 5 | IF DEFINED VS150COMNTOOLS ( 6 | if exist "%VS150COMNTOOLS%\..\..\VC\vcvarsall.bat" ( 7 | set vs_dir="%VS150COMNTOOLS%\..\..\VC" 8 | set vs_64=amd64 9 | ) else ( 10 | rem it installed vcvarsall.bat here for me for some reason -sh 20160827 11 | set vs_dir="%VS150COMNTOOLS%\..\ide\vc" 12 | set vs_64=amd64 13 | )) else ( 14 | set vs_dir="%VS140COMNTOOLS%\..\..\VC" 15 | set vs_64=amd64 16 | ) 17 | 18 | cd /d "%~dp0" 19 | if %errorlevel% neq 0 exit /b 1 20 | 21 | set rs_objs=ftnoir_tracker_rs_impl.obj libpxc.obj 22 | 23 | set rs_subdir=ia32&set vs_var=x86 24 | call ".\build_common.bat" || exit /b 1 25 | 26 | set rs_subdir=amd64&set vs_var=%vs_64% 27 | call ".\build_common.bat" || exit /b 1 28 | 29 | exit /b 0 30 | -------------------------------------------------------------------------------- /tracker-rs/rs_impl/attic/build_common.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | setlocal 4 | 5 | cd /d .\bin\%rs_subdir% || exit 1 6 | 7 | echo --- %rs_subdir% 8 | 9 | set rice_ld=/OPT:REF /OPT:ICF=10 /DEBUG /DYNAMICBASE /NXCOMPAT /LTCG 10 | set rice_lib= 11 | set rice_cc=/Ox /arch:SSE2 /EHscr /fp:fast /GS- /GF /GR- /Gy /MT /Y- /Zi /W1 /GL /Zi 12 | set libs=advapi32.lib 13 | 14 | if not exist %vs_dir%\vcvarsall.bat exit /b 1 15 | call %vs_dir%\vcvarsall %vs_var% || exit /b 1 16 | if ["%libpath%"] == [""] exit /b 1 17 | 18 | cl /c /nologo -DEXPORT_RS_IMPL -DUNICODE -D_UNICODE -MT %rice_cc% /I "%RSSDK_DIR%\opensource\include" ..\..\ftnoir_tracker_rs_impl.cpp "%RSSDK_DIR%\opensource\src\libpxc\libpxc.cpp" || exit /b 1 19 | lib /nologo %rice_lib% %rs_objs% %libs% /OUT:rs-impl.lib || exit /b 1 20 | 21 | exit /b 0 22 | -------------------------------------------------------------------------------- /tracker-rs/rs_impl/ftnoir_tracker_rs_impl.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Intel Corporation 3 | * Author: Xavier Hallade <xavier.hallade@intel.com> 4 | * Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 5 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 6 | */ 7 | 8 | #pragma once 9 | 10 | int rs_tracker_impl_start(); 11 | int rs_tracker_impl_update_pose(double *pose); 12 | int rs_tracker_impl_get_preview(void* data, int width, int height); 13 | int rs_tracker_impl_end(); 14 | -------------------------------------------------------------------------------- /tracker-rs/rs_impl/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /tracker-rs/rs_impl/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /tracker-rs/rs_impl/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /tracker-rs/rs_tracker.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/RS.png</file> 4 | <file>images/intel-16x16.png</file> 5 | </qresource> 6 | </RCC> 7 | -------------------------------------------------------------------------------- /tracker-s2bot/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(tracker-s2bot) 2 | -------------------------------------------------------------------------------- /tracker-s2bot/ftnoir_tracker_s2bot_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "ftnoir_tracker_s2bot.h" 2 | #include "api/plugin-api.hpp" 3 | 4 | dialog_s2bot::dialog_s2bot() 5 | { 6 | ui.setupUi(this); 7 | 8 | connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); 9 | connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); 10 | 11 | tie_setting(s.freq, ui.freq); 12 | tie_setting(s.idx_x, ui.input_x); 13 | tie_setting(s.idx_y, ui.input_y); 14 | tie_setting(s.idx_z, ui.input_z); 15 | 16 | tie_setting(s.add_yaw, ui.add_yaw); 17 | tie_setting(s.add_pitch, ui.add_pitch); 18 | tie_setting(s.add_roll, ui.add_roll); 19 | } 20 | 21 | void dialog_s2bot::doOK() { 22 | s.b->save(); 23 | close(); 24 | } 25 | 26 | void dialog_s2bot::doCancel() 27 | { 28 | close(); 29 | } 30 | 31 | -------------------------------------------------------------------------------- /tracker-s2bot/s2bot-res.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>s2bot.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-s2bot/s2bot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-s2bot/s2bot.png -------------------------------------------------------------------------------- /tracker-steamvr/images/steamvr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-steamvr/images/steamvr.png -------------------------------------------------------------------------------- /tracker-steamvr/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | <context> 5 | <name>dialog</name> 6 | <message> 7 | <source>Valve SteamVR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | <message> 11 | <source>Device</source> 12 | <translation type="unfinished"></translation> 13 | </message> 14 | </context> 15 | <context> 16 | <name>steamvr</name> 17 | <message> 18 | <source>No HMD connected</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | <message> 22 | <source>Can't find device with that serial</source> 23 | <translation type="unfinished"></translation> 24 | </message> 25 | </context> 26 | <context> 27 | <name>steamvr_metadata</name> 28 | <message> 29 | <source>Valve SteamVR</source> 30 | <translation type="unfinished"></translation> 31 | </message> 32 | </context> 33 | </TS> 34 | -------------------------------------------------------------------------------- /tracker-steamvr/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | <context> 5 | <name>dialog</name> 6 | <message> 7 | <source>Valve SteamVR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | <message> 11 | <source>Device</source> 12 | <translation type="unfinished"></translation> 13 | </message> 14 | </context> 15 | <context> 16 | <name>steamvr</name> 17 | <message> 18 | <source>No HMD connected</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | <message> 22 | <source>Can't find device with that serial</source> 23 | <translation type="unfinished"></translation> 24 | </message> 25 | </context> 26 | <context> 27 | <name>steamvr_metadata</name> 28 | <message> 29 | <source>Valve SteamVR</source> 30 | <translation type="unfinished"></translation> 31 | </message> 32 | </context> 33 | </TS> 34 | -------------------------------------------------------------------------------- /tracker-steamvr/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | <context> 5 | <name>dialog</name> 6 | <message> 7 | <source>Valve SteamVR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | <message> 11 | <source>Device</source> 12 | <translation type="unfinished"></translation> 13 | </message> 14 | </context> 15 | <context> 16 | <name>steamvr</name> 17 | <message> 18 | <source>No HMD connected</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | <message> 22 | <source>Can't find device with that serial</source> 23 | <translation type="unfinished"></translation> 24 | </message> 25 | </context> 26 | <context> 27 | <name>steamvr_metadata</name> 28 | <message> 29 | <source>Valve SteamVR</source> 30 | <translation type="unfinished"></translation> 31 | </message> 32 | </context> 33 | </TS> 34 | -------------------------------------------------------------------------------- /tracker-steamvr/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | <context> 5 | <name>dialog</name> 6 | <message> 7 | <source>Valve SteamVR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | <message> 11 | <source>Device</source> 12 | <translation type="unfinished"></translation> 13 | </message> 14 | </context> 15 | <context> 16 | <name>steamvr</name> 17 | <message> 18 | <source>No HMD connected</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | <message> 22 | <source>Can't find device with that serial</source> 23 | <translation type="unfinished"></translation> 24 | </message> 25 | </context> 26 | <context> 27 | <name>steamvr_metadata</name> 28 | <message> 29 | <source>Valve SteamVR</source> 30 | <translation type="unfinished"></translation> 31 | </message> 32 | </context> 33 | </TS> 34 | -------------------------------------------------------------------------------- /tracker-steamvr/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | <context> 5 | <name>dialog</name> 6 | <message> 7 | <source>Valve SteamVR</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | <message> 11 | <source>Device</source> 12 | <translation>设备</translation> 13 | </message> 14 | </context> 15 | <context> 16 | <name>steamvr</name> 17 | <message> 18 | <source>No HMD connected</source> 19 | <translation>未连接HMD</translation> 20 | </message> 21 | <message> 22 | <source>Can't find device with that serial</source> 23 | <translation>无法找到该序列的设备</translation> 24 | </message> 25 | </context> 26 | <context> 27 | <name>steamvr_metadata</name> 28 | <message> 29 | <source>Valve SteamVR</source> 30 | <translation type="unfinished"></translation> 31 | </message> 32 | </context> 33 | </TS> 34 | -------------------------------------------------------------------------------- /tracker-steamvr/steamvr.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/steamvr.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(tracker-test) 2 | -------------------------------------------------------------------------------- /tracker-test/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | <context> 5 | <name>test_metadata</name> 6 | <message> 7 | <source>Test tracker</source> 8 | <translation>Test-Tracker</translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>test_ui</name> 13 | <message> 14 | <source>Sine wave</source> 15 | <translation>Sinus-Welle</translation> 16 | </message> 17 | <message> 18 | <source>Pressing "Abort" will immediately crash the application.</source> 19 | <translation>Beim Klick auf „Abbrechen“ wird die Anwendung sofort abstürzen.</translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-test/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | <context> 5 | <name>test_metadata</name> 6 | <message> 7 | <source>Test tracker</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>test_ui</name> 13 | <message> 14 | <source>Sine wave</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | <message> 18 | <source>Pressing "Abort" will immediately crash the application.</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-test/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | <context> 5 | <name>test_metadata</name> 6 | <message> 7 | <source>Test tracker</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>test_ui</name> 13 | <message> 14 | <source>Sine wave</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | <message> 18 | <source>Pressing "Abort" will immediately crash the application.</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-test/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | <context> 5 | <name>test_metadata</name> 6 | <message> 7 | <source>Test tracker</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>test_ui</name> 13 | <message> 14 | <source>Sine wave</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | <message> 18 | <source>Pressing "Abort" will immediately crash the application.</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-test/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | <context> 5 | <name>test_metadata</name> 6 | <message> 7 | <source>Test tracker</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>test_ui</name> 13 | <message> 14 | <source>Sine wave</source> 15 | <translation>正弦波</translation> 16 | </message> 17 | <message> 18 | <source>Pressing "Abort" will immediately crash the application.</source> 19 | <translation>点击 "Abort" 键将立即关闭程序 (未保存的数据会丢失) 。</translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-test/test.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "ui_test.h" 3 | #include "api/plugin-api.hpp" 4 | #include "compat/timer.hpp" 5 | 6 | #include <cmath> 7 | 8 | class test_tracker : public ITracker 9 | { 10 | public: 11 | test_tracker(); 12 | ~test_tracker() override; 13 | module_status start_tracker(QFrame *) override; 14 | void data(double *data) override; 15 | 16 | private: 17 | double last[6] {}; 18 | Timer t; 19 | }; 20 | 21 | class test_dialog : public ITrackerDialog 22 | { 23 | Q_OBJECT 24 | 25 | Ui::test_ui ui; 26 | public: 27 | test_dialog(); 28 | void register_tracker(ITracker *) override {} 29 | void unregister_tracker() override {} 30 | private slots: 31 | void doOK(); 32 | void doCancel(); 33 | }; 34 | 35 | class test_metadata : public Metadata 36 | { 37 | Q_OBJECT 38 | 39 | QString name() override { return tr("Test tracker"); } 40 | QIcon icon() override { return QIcon(":/images/opentrack.png"); } 41 | }; 42 | 43 | -------------------------------------------------------------------------------- /tracker-test/test_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "test.h" 2 | #include "api/plugin-api.hpp" 3 | 4 | -------------------------------------------------------------------------------- /tracker-tobii/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32) 2 | # https://www.nuget.org/packages/Tobii.StreamEngine.Native/ 3 | set(SDK_TOBII "" CACHE PATH "Tobii Stream Engine path") 4 | endif() 5 | if(WIN32 AND SDK_TOBII) 6 | otr_module(tracker-tobii) 7 | 8 | if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") 9 | set(arch "x86") 10 | else() 11 | set(arch "x64") 12 | endif() 13 | 14 | target_include_directories(${self} SYSTEM PRIVATE "${SDK_TOBII}/include") 15 | target_link_directories(${self} PRIVATE "${SDK_TOBII}/lib/${arch}") 16 | 17 | set(dll "${SDK_TOBII}/lib/${arch}/tobii_stream_engine.dll") 18 | set(lib tobii_stream_engine.lib) 19 | 20 | target_link_libraries(${self} ${lib}) 21 | install(FILES ${dll} DESTINATION ${opentrack-libexec}) 22 | endif() 23 | -------------------------------------------------------------------------------- /tracker-tobii/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | <context> 5 | <name>tobii_metadata</name> 6 | <message> 7 | <source>Tobii Eye Tracker</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>tobii_ui</name> 13 | <message> 14 | <source>Tobii Eye Tracker</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | <message> 18 | <source>Please make sure the Tobii Experience application is running and tracking is active.</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-tobii/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | <context> 5 | <name>tobii_metadata</name> 6 | <message> 7 | <source>Tobii Eye Tracker</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>tobii_ui</name> 13 | <message> 14 | <source>Tobii Eye Tracker</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | <message> 18 | <source>Please make sure the Tobii Experience application is running and tracking is active.</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-tobii/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | <context> 5 | <name>tobii_metadata</name> 6 | <message> 7 | <source>Tobii Eye Tracker</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>tobii_ui</name> 13 | <message> 14 | <source>Tobii Eye Tracker</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | <message> 18 | <source>Please make sure the Tobii Experience application is running and tracking is active.</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-tobii/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | <context> 5 | <name>tobii_metadata</name> 6 | <message> 7 | <source>Tobii Eye Tracker</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>tobii_ui</name> 13 | <message> 14 | <source>Tobii Eye Tracker</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | <message> 18 | <source>Please make sure the Tobii Experience application is running and tracking is active.</source> 19 | <translation type="unfinished"></translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-tobii/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | <context> 5 | <name>tobii_metadata</name> 6 | <message> 7 | <source>Tobii Eye Tracker</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | <context> 12 | <name>tobii_ui</name> 13 | <message> 14 | <source>Tobii Eye Tracker</source> 15 | <translation type="unfinished"></translation> 16 | </message> 17 | <message> 18 | <source>Please make sure the Tobii Experience application is running and tracking is active.</source> 19 | <translation>请确保 Tobii Experience 正在运行且眼动追踪功能已启用。</translation> 20 | </message> 21 | </context> 22 | </TS> 23 | -------------------------------------------------------------------------------- /tracker-tobii/tobii.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/images"> 3 | <file>tobii_logo.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-tobii/tobii_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "tobii.h" 2 | 3 | tobii_dialog::tobii_dialog() // NOLINT(cppcoreguidelines-pro-type-member-init) 4 | { 5 | ui.setupUi(this); 6 | 7 | connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); 8 | connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); 9 | } 10 | 11 | void tobii_dialog::doOK() 12 | { 13 | // s.b->save(); 14 | close(); 15 | } 16 | 17 | void tobii_dialog::doCancel() 18 | { 19 | close(); 20 | } 21 | -------------------------------------------------------------------------------- /tracker-tobii/tobii_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-tobii/tobii_logo.png -------------------------------------------------------------------------------- /tracker-trackhat/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32) 2 | include(opentrack-opencv) 3 | find_package(OpenCV QUIET) 4 | if(OpenCV_FOUND) 5 | foreach(k core imgproc) 6 | otr_install_lib("opencv_${k}" "${opentrack-libexec}") 7 | endforeach() 8 | set(SDK_TRACKHAT_SENSOR CACHE PATH "") 9 | if(SDK_TRACKHAT_SENSOR) 10 | include_directories("${SDK_TRACKHAT_SENSOR}/include" ${OpenCV_INCLUDE_DIRS}) 11 | link_directories("${SDK_TRACKHAT_SENSOR}/lib") 12 | link_libraries(opencv_imgproc opencv_core opentrack-tracker-pt-base track-hat) 13 | otr_module(tracker-trackhat) 14 | endif() 15 | endif() 16 | endif() 17 | -------------------------------------------------------------------------------- /tracker-trackhat/dialog.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "trackhat.hpp" 3 | #include "ui_dialog.h" 4 | #include "tracker-pt/ftnoir_tracker_pt.h" 5 | #include "api/plugin-api.hpp" 6 | #include <QTimer> 7 | 8 | class trackhat_dialog final : public ITrackerDialog 9 | { 10 | Q_OBJECT 11 | 12 | protected: 13 | Ui_trackhat_dialog ui; 14 | Tracker_PT* tracker = nullptr; 15 | QTimer poll_timer{this}; 16 | 17 | pt_settings s{trackhat_metadata::module_name}; 18 | trackhat_settings t; 19 | 20 | void set_buttons_visible(bool x) override; 21 | void update_raw_data(); 22 | 23 | public: 24 | trackhat_dialog(); 25 | ~trackhat_dialog() override; 26 | void register_tracker(ITracker *tracker) override; 27 | void unregister_tracker() override; 28 | bool embeddable() noexcept override { return true; } 29 | void save() override; 30 | void reload() override; 31 | 32 | public slots: 33 | void doOK(); 34 | void doCancel(); 35 | void poll_tracker_info(); 36 | }; 37 | -------------------------------------------------------------------------------- /tracker-trackhat/extractor.cpp: -------------------------------------------------------------------------------- 1 | #include "trackhat.hpp" 2 | #include <algorithm> 3 | #include <iterator> 4 | 5 | void trackhat_extractor::extract_points(const pt_frame& data, 6 | pt_preview&, bool, 7 | std::vector<vec2>& points) 8 | { 9 | points.clear(); 10 | points.reserve(trackhat_camera::point_count); 11 | const auto& copy = data.as_const<trackhat_frame>()->points; 12 | 13 | for (const auto& pt : copy) 14 | { 15 | if (!pt.ok) 16 | continue; 17 | constexpr int sz = trackhat_camera::sensor_size; 18 | auto [ x, y ] = to_screen_pos(pt.x, pt.y, sz, sz); 19 | points.push_back({x, y}); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tracker-trackhat/images/trackhat-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-trackhat/images/trackhat-64x64.png -------------------------------------------------------------------------------- /tracker-trackhat/images/trackhat.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-trackhat/images/trackhat.ico -------------------------------------------------------------------------------- /tracker-trackhat/images/trackhat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-trackhat/images/trackhat.png -------------------------------------------------------------------------------- /tracker-trackhat/metadata.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "trackhat.hpp" 3 | #include "../tracker-pt/ftnoir_tracker_pt.h" 4 | 5 | class trackhat_pt final : public Tracker_PT 6 | { 7 | Q_OBJECT 8 | 9 | public: 10 | trackhat_pt(); 11 | }; 12 | 13 | class trackhat_module final : public Metadata 14 | { 15 | Q_OBJECT 16 | 17 | public: 18 | QString name() override { return tr("TrackHat v1 Sensor"); } 19 | QIcon icon() override { return QIcon(":/images/trackhat-64x64.png"); } 20 | static const QString module_name; 21 | }; 22 | -------------------------------------------------------------------------------- /tracker-trackhat/tracker_trackhat.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>images/trackhat-64x64.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-trackhat/trackhat-res.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource> 3 | <file>images/trackhat-64x64.png</file> 4 | </qresource> 5 | </RCC> 6 | -------------------------------------------------------------------------------- /tracker-udp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(tracker-udp) 2 | -------------------------------------------------------------------------------- /tracker-udp/ftnoir_tracker_udp_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "ftnoir_tracker_udp.h" 2 | #include "api/plugin-api.hpp" 3 | 4 | dialog_udp::dialog_udp() 5 | { 6 | ui.setupUi( this ); 7 | 8 | connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); 9 | connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); 10 | 11 | tie_setting(s.port, ui.spinPortNumber); 12 | tie_setting(s.add_yaw, ui.add_yaw); 13 | tie_setting(s.add_pitch, ui.add_pitch); 14 | tie_setting(s.add_roll, ui.add_roll); 15 | } 16 | 17 | void dialog_udp::doOK() { 18 | s.b->save(); 19 | close(); 20 | } 21 | 22 | void dialog_udp::doCancel() { 23 | close(); 24 | } 25 | 26 | -------------------------------------------------------------------------------- /tracker-wii/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(WIN32) 2 | include(opentrack-opencv) 3 | find_package(OpenCV QUIET) 4 | if(OpenCV_FOUND) 5 | foreach(k core imgproc) 6 | otr_install_lib("opencv_${k}" "${opentrack-libexec}") 7 | endforeach() 8 | add_subdirectory(wiiyourself) 9 | otr_module(tracker-wii) 10 | target_link_libraries(${self} opencv_imgproc opentrack-tracker-pt-base opentrack-wiiyourself bthprops) 11 | if(MINGW32) 12 | target_link_libraries(${self} hid) 13 | endif() 14 | target_include_directories(${self} PRIVATE "${CMAKE_SOURCE_DIR}/tracker-pt") 15 | endif() 16 | endif() 17 | -------------------------------------------------------------------------------- /tracker-wii/Resources/on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/on.png -------------------------------------------------------------------------------- /tracker-wii/Resources/sync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/sync.png -------------------------------------------------------------------------------- /tracker-wii/Resources/usb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/usb.png -------------------------------------------------------------------------------- /tracker-wii/Resources/wii.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/wii.ico -------------------------------------------------------------------------------- /tracker-wii/Resources/wii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/wii.png -------------------------------------------------------------------------------- /tracker-wii/doc/XP11_opentrack_wiimote1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/doc/XP11_opentrack_wiimote1.jpg -------------------------------------------------------------------------------- /tracker-wii/doc/XP11_opentrack_wiimote2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/doc/XP11_opentrack_wiimote2.jpg -------------------------------------------------------------------------------- /tracker-wii/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | <context> 5 | <name>wii_metadata_pt</name> 6 | <message> 7 | <source>WiiPointTracker 1.1</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-wii/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | <context> 5 | <name>wii_metadata_pt</name> 6 | <message> 7 | <source>WiiPointTracker 1.1</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-wii/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | <context> 5 | <name>wii_metadata_pt</name> 6 | <message> 7 | <source>WiiPointTracker 1.1</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-wii/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | <context> 5 | <name>wii_metadata_pt</name> 6 | <message> 7 | <source>WiiPointTracker 1.1</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-wii/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | <context> 5 | <name>wii_metadata_pt</name> 6 | <message> 7 | <source>WiiPointTracker 1.1</source> 8 | <translation type="unfinished"></translation> 9 | </message> 10 | </context> 11 | </TS> 12 | -------------------------------------------------------------------------------- /tracker-wii/tracker_wii.qrc: -------------------------------------------------------------------------------- 1 | <RCC> 2 | <qresource prefix="/"> 3 | <file>Resources/wii.png</file> 4 | <file>Resources/sync.png</file> 5 | <file>Resources/on.png</file> 6 | <file>Resources/usb.png</file> 7 | </qresource> 8 | </RCC> 9 | -------------------------------------------------------------------------------- /tracker-wii/wii_module.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "api/plugin-api.hpp" 4 | 5 | class wii_metadata_pt : public Metadata 6 | { 7 | Q_OBJECT 8 | 9 | QString name() override; 10 | QIcon icon() override; 11 | }; 12 | -------------------------------------------------------------------------------- /tracker-wii/wiiyourself/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(wiiyourself STATIC NO-QT NO-COMPAT) 2 | target_link_libraries(${self} PUBLIC setupapi hid winmm) 3 | -------------------------------------------------------------------------------- /tracker-wii/wiiyourself/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /tracker-wii/wiiyourself/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /tracker-wii/wiiyourself/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /tracker-wii/wiiyourself/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /variant/default/_variant.cmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/variant/default/_variant.cmake -------------------------------------------------------------------------------- /video-opencv/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(opentrack-opencv) 2 | find_package(OpenCV QUIET) 3 | 4 | if(OpenCV_FOUND) 5 | foreach(k core videoio imgcodecs imgproc) 6 | otr_install_lib("opencv_${k}" "${opentrack-libexec}") 7 | endforeach() 8 | otr_module(video-opencv) 9 | target_link_libraries(${self} opencv_core opencv_imgcodecs opencv_videoio opentrack-video) 10 | if(WIN32) 11 | target_link_libraries(${self} strmiids) 12 | endif() 13 | endif() 14 | -------------------------------------------------------------------------------- /video-opencv/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /video-opencv/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /video-opencv/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /video-opencv/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /video-opencv/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /video-opencv/video-property-page.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include <QString> 4 | #include <opencv2/videoio.hpp> 5 | 6 | struct video_property_page final 7 | { 8 | video_property_page() = delete; 9 | static bool show(int id); 10 | static bool show_from_capture(cv::VideoCapture& cap, int index); 11 | private: 12 | }; 13 | 14 | -------------------------------------------------------------------------------- /video-ps3eye/shm-layout.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include <cstdint> 3 | 4 | namespace ps3eye { 5 | 6 | static constexpr unsigned num_channels = 3; 7 | 8 | struct shm_in { 9 | enum class mode : uint8_t { qvga, vga, }; 10 | 11 | uint32_t settings_updated; 12 | uint8_t framerate, channels; 13 | mode resolution; 14 | //uint8_t sharpness, contrast, brightness hue, saturation; 15 | uint8_t gain, exposure, auto_gain, test_pattern; 16 | uint8_t do_exit; 17 | }; 18 | 19 | struct shm_out 20 | { 21 | enum class status : uint8_t { starting, running, fail, terminate, }; 22 | 23 | uint32_t timecode; 24 | uint32_t settings_updated_ack; 25 | status status_; 26 | char error_string[256]; 27 | union { 28 | uint8_t data_320x240[320][240][num_channels]; 29 | uint8_t data_640x480[640][480][num_channels]; 30 | }; 31 | }; 32 | 33 | struct alignas(64) shm { 34 | shm_out out; 35 | [[maybe_unused]] const char _padding[128 - sizeof(shm_out) % 128]; // NOLINT 36 | shm_in in; 37 | }; 38 | 39 | } // ns ps3eye 40 | -------------------------------------------------------------------------------- /video-ps3eye/shm.cxx: -------------------------------------------------------------------------------- 1 | #include "shm.hpp" 2 | #include "../compat/shm.cpp" 3 | -------------------------------------------------------------------------------- /video-ps3eye/shm.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #define OTR_GENERIC_EXPORT 3 | #define OTR_GENERIC_IMPORT 4 | #include "../compat/shm.h" 5 | -------------------------------------------------------------------------------- /video/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | otr_module(video BIN) 2 | -------------------------------------------------------------------------------- /video/export.hpp: -------------------------------------------------------------------------------- 1 | // generates export.hpp for each module from compat/linkage.hpp 2 | 3 | #pragma once 4 | 5 | #include "compat/linkage-macros.hpp" 6 | 7 | #ifdef BUILD_VIDEO 8 | # define OTR_VIDEO_EXPORT OTR_GENERIC_EXPORT 9 | #else 10 | # define OTR_VIDEO_EXPORT OTR_GENERIC_IMPORT 11 | #endif 12 | -------------------------------------------------------------------------------- /video/lang/de_DE.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="de_DE"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /video/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /video/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /video/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /video/lang/zh_CN.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="zh_CN"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /x-plane-plugin/lang/nl_NL.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="nl_NL"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /x-plane-plugin/lang/ru_RU.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1" language="ru_RU"> 4 | </TS> 5 | -------------------------------------------------------------------------------- /x-plane-plugin/lang/stub.ts: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!DOCTYPE TS> 3 | <TS version="2.1"> 4 | </TS> 5 | --------------------------------------------------------------------------------