Skip to content

dwgx/VirtualTracker

Repository files navigation

VirtualTracker (VT)

Disclaimer / 免责声明

VirtualTracker is an independent, third-party tool. It is not affiliated with, sponsored by, endorsed by, or authorized by HTC, Valve Corporation (SteamVR), Meta, or Virtual Desktop / Guy Godin. Product names such as "SteamVR", "Virtual Desktop", "OpenVR", "VRChat", and "Quest" are used only to describe interoperability, and all trademarks belong to their respective owners.

VirtualTracker only reads and writes the user's own tracker configuration on the user's own machine. It does not contain, bundle, redistribute, modify, patch, or circumvent any third-party software, code, or binaries. No proprietary vendor files are included in this repository.

VirtualTracker 是独立的第三方工具,与 HTC、Valve(SteamVR)、Meta、Virtual Desktop 及其作者 Guy Godin 均无任何隶属、赞助、认可或授权关系。"SteamVR"、"Virtual Desktop"、"OpenVR"、"VRChat"、"Quest" 等名称仅用于说明互操作对象,商标归各自权利人所有。本工具仅在用户本机上读写用户自己的 tracker 配置,不包含、不捆绑、不分发、不修改、不破解、不规避任何第三方软件、代码或二进制,仓库内不含任何厂商专有文件。

VirtualTracker is a Windows desktop tool and C++ core for safely inspecting, planning, applying, backing up, and restoring SteamVR plus Virtual Desktop tracker configuration.

Current release: Phase 1, VT Configurator 0.1.1. Phase 1 is the safer replacement for old Virtual Desktop body-tracking configurators.

Long term: Phase 2, VT Fusion, may add live pose sources, calibration, filtering, fusion, and OpenVR/VRChat OSC outputs. Phase 2 must reuse the Phase 1 discovery, profile, source-role, backup, and diagnostics foundation.

Quick Start

Download the latest VirtualTracker-0.1.1-Portable-x64.exe from the GitHub release page.

Run the EXE once to extract the package. By default it extracts a VirtualTracker-0.1.1-Portable-x64 folder on your Desktop and opens that folder. This is a self-extracting package, not a signed installer.

Start the desktop app:

VirtualTracker-0.1.1-Portable-x64\VirtualTracker.exe

Recommended first workflow:

  1. Open VirtualTracker.exe.
  2. Read the Start page summary. Scanning does not write SteamVR settings.
  3. Open Draft & preview and choose a setup profile.
  4. Review the body map, tracker binding notes, backup/audit summary, and warnings.
  5. Apply only after SteamVR is closed and the preview looks correct.

Command-line users can run:

.\vt.exe inspect --json
.\vt.exe profile --list
.\vt.exe profile VT-VD-UpperBody

Default CLI output is redacted. Use --raw only for private local debugging.

Release Download

Phase 1 release artifact:

VirtualTracker-0.1.1-Portable-x64.exe

The release EXE contains:

  • VirtualTracker.exe desktop app.
  • vt.exe command-line tool.
  • resources\i18n\en-US.json and resources\i18n\zh-CN.json.
  • licenses\THIRD_PARTY_NOTICES.txt for bundled third-party runtime notices.
  • Embedded Windows icon metadata for the release EXE and desktop app.

The release EXE intentionally does not put repository README, security policy, contributing guide, changelog, or docs into the extracted desktop folder. Those documents live in this repository and on the GitHub release page so the user-facing package stays a small portable app folder.

The EXE can be verified with SHA256. The current hash is listed in the GitHub release body for the uploaded asset.

Current Entry Points

Historical handoffs, old start prompts, and old code maps are under docs/archive/ and should not be treated as the current task source.

This repository is not open-source licensed yet. See LICENSE.md for the current all-rights-reserved license notice.

Phase 1: VT Configurator

Phase 1 owns:

  • Read SteamVR paths from %LOCALAPPDATA%\openvr\openvrpaths.vrpath.
  • Inspect SteamVR steamvr.vrsettings and Virtual Desktop OpenVR driver resources.
  • Build source-role inventory for VRChat body uses from saved SteamVR bindings and VD settings.
  • Preview body-use drafts and built-in profiles.
  • Merge-write only managed driver_VirtualDesktop and trackers sections while preserving unknown sections/keys.
  • Create backups, operation metadata, and restore safety backups.
  • Block stale/external write risks by default.
  • Provide a CLI and Dear ImGui desktop GUI.

Phase 1 does not own live SteamVR device enumeration, Quest body-joint capture, runtime pose fusion, OpenVR driver output, or VRChat OSC output.

User Safety Notes

  • Do not apply changes while SteamVR is running unless you intentionally use a force path.
  • VirtualTracker creates a backup before apply and before restore.
  • A stale preview is blocked by default if steamvr.vrsettings changed after the preview was built.
  • Restore validates backup metadata and creates a safety backup first.
  • Saved SteamVR tracker bindings are not the live SteamVR device list. Seeing more VD virtual devices in SteamVR than saved body bindings is normal.
  • /devices/VirtualDesktop/chest -> TrackerRole_Chest stays expert-confirmed because it can affect VRChat upper-body tracking.

Current Commands

vt inspect [--json] [--raw]
vt profile --list [--json]
vt profile <profile-id> [--json] [--raw] [--apply] [--force]
vt backups [--json] [--raw]
vt operations [--json] [--raw]
vt restore <backup-path> [--json] [--raw] [--force] [--force-external]
VirtualTracker

Current built-in profiles:

  • VT-VD-UpperBody
  • VT-VD-RealLowerBody
  • VT-VD-FullBodyDefault
  • VT-VD-DisableEmulatedTrackers

Inspect output is redacted by default. --raw prints local absolute paths and tracker serial segments for private local debugging only.

Safety Model

All real writes go through src/vt/config_plan.cpp:

  • Preview plans carry a trusted base_hash.
  • Missing or stale base_hash blocks by default.
  • Writes are blocked while vrserver.exe is running unless force is explicit.
  • Backups are created before apply.
  • Restore creates a before-restore safety backup.
  • Restore trust validates .vtmeta schema, version, type, succeeded state, path, expected hash, and selected backup content hash.
  • GUI confirmations are UI gates only; core guards remain the real safety boundary.

Saved SteamVR tracker bindings are not live device enumeration. Phase 1 planning does not use live device presence.

Build And Test

Requires Visual Studio 2026 with its bundled CMake tools and a C++20 Windows toolchain. The current release presets use the Visual Studio 18 2026 x64 generator.

Standard gate:

powershell -NoProfile -ExecutionPolicy Bypass -File scripts\verify-core.ps1

Expanded commands:

cmake --preset release
cmake --build --preset release
ctest --preset release
git diff --check
scripts\verify-docs.ps1
scripts\pre-commit-guard.ps1

Package verification:

powershell -NoProfile -ExecutionPolicy Bypass -File scripts\package-release.ps1 -AllowDirty

For a real release candidate, omit -AllowDirty so the script refuses a dirty tree.

Release Artifact

The local Phase 1 artifact built by scripts\package-release.ps1 is the self-extracting release EXE:

build\VirtualTracker-0.1.1-Portable-x64.exe

It must contain VirtualTracker.exe, vt.exe, resources/i18n, and licenses/THIRD_PARTY_NOTICES.txt. It must not contain repository Markdown files or docs/. See docs/validation.md for the package gate.

Known Limits In 0.1.1

  • No live SteamVR device enumeration.
  • No Quest/OpenXR body joint capture.
  • No runtime pose fusion, calibration, filtering, OpenVR output, or VRChat OSC output.
  • No signed installer, Start Menu shortcut, or file association.
  • Native language review is limited to en-US and zh-CN.

Local Evidence

This repo was initialized from a machine with Virtual Desktop Streamer and SteamVR installed. The installed Virtual Desktop OpenVR driver resources are treated as high-confidence local evidence for this machine/version, not universal public truth.

The captured VD default snapshot is stored at:

docs/research/vd-default-settings.snapshot.json

Private Quest / Virtual Desktop / VIVE audit artifacts remain outside the repository and must not be committed.

Project Status and Evidence Boundary

This repository is an experimental tracking project. Treat local audit packs, driver snapshots, and device-specific captures as evidence, not generic documentation. Do not commit private logs, device identifiers, account data, or machine-local configuration unless they have been explicitly sanitized.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages