Skip to content

Repository files navigation

Advanced 3D Controller

Android telefonu, Blender ve Unity için ultra düşük gecikmeli 6DOF Space Controller olarak kullanan açık kaynak sistem.
Kendi sanal HID sürücümüz ile — hiçbir 3. parti yazılıma (vJoy vb.) ihtiyaç yok.


Sistem Mimarisi

 ┌───────────────────────┐        ┌─────────────────────────┐        ┌────────────────────┐
 │    Android Telefon    │  UDP   │   PC Companion App      │ IOCTL  │  UMDF 2 Sürücü     │
 │                       │ ~1-5ms │                         │ ~0.1ms │  (Virtual HID)     │
 │  SensorFusion (Gyro)  ├───────►│  UDPServer.h            ├───────►│  Driver.cpp        │
 │  GestureEngine (Touch)│ :9000  │  VirtualHidClient.h     │        │  Queue.cpp         │
 │  UDPSender (120Hz)    │        │  main.cpp               │        │  Hid.cpp           │
 │  HapticEngine         │        │                         │        │  6-axis HID cihazı │
 └───────────────────────┘        └─────────────────────────┘        └─────────┬──────────┘
                                                                               │
                                                                    ┌──────────▼──────────┐
                                                                    │  Blender / Unity    │
                                                                    │  (Native HID Input) │
                                                                    └─────────────────────┘

Dosya Yapısı

Advanced_3D_Controller/
│
├── android-app/                              # Android Studio Projesi
│   ├── settings.gradle.kts
│   ├── build.gradle.kts
│   └── app/
│       ├── build.gradle.kts
│       └── src/main/
│           ├── AndroidManifest.xml
│           ├── java/com/controller3d/
│           │   ├── MainActivity.kt           # Orchestrator — 120Hz merge loop
│           │   ├── sensor/
│           │   │   └── SensorFusion.kt       # Gyro + Accel complementary filter
│           │   ├── gesture/
│           │   │   └── GestureEngine.kt      # 6DOF mimik motoru
│           │   ├── network/
│           │   │   ├── PacketProtocol.kt     # 46-byte binary codec
│           │   │   └── UDPSender.kt          # Async UDP gönderici
│           │   ├── haptic/
│           │   │   └── HapticEngine.kt       # Dokunsal geri bildirim
│           │   └── ui/
│           │       └── TrackballView.kt      # Premium 3D küre arayüzü
│           └── res/
│               ├── layout/activity_main.xml
│               ├── drawable/
│               │   ├── btn_toggle_bg.xml
│               │   └── input_bg.xml
│               └── values/themes.xml
│
└── pc-companion/                             # PC Tarafı
    ├── app/                                  # User-mode Companion App (C++)
    │   ├── CMakeLists.txt
    │   └── src/
    │       ├── main.cpp                      # Entry point + system tray
    │       ├── PacketProtocol.h              # UDP paket protokolü
    │       ├── UDPServer.h                   # Winsock2 UDP alıcı
    │       └── VirtualHidClient.h            # Kendi sürücümüze IOCTL istemci
    │
    └── driver/                               # UMDF 2 Virtual HID Sürücüsü
        ├── Advanced3DController.inf          # Sürücü kurulum dosyası
        ├── Public.h                          # Ortak IOCTL tanımları
        ├── Driver.h / Driver.cpp             # WDF entry point
        ├── Device.h / Device.cpp             # Cihaz oluşturma + context
        ├── Queue.h  / Queue.cpp              # HID + Custom IOCTL kuyruğu
        └── Hid.h                             # HID Report Descriptor (6-axis)

Kurulum Adımları

1. Sürücüyü Kur (Tek Seferlik)

Gereksinimler:

  • Windows 10/11 (x64)
  • Visual Studio 2022 + Windows Driver Kit (WDK)
# A) Test Signing'i etkinleştir (Yönetici CMD)
bcdedit /set testsigning on
# Bilgisayarı yeniden başlat

# B) Sürücüyü Visual Studio ile derle
#    driver/ klasörünü VS ile aç → Build → Release | x64

# C) Sürücüyü kur (Yönetici CMD)
pnputil /add-driver Advanced3DController.inf /install

# D) Sanal cihaz düğümü oluştur (devcon.exe WDK ile gelir)
devcon install Advanced3DController.inf Root\Advanced3DController

2. Companion App'i Derle

cd pc-companion/app
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

3. Android Uygulamasını Kur

Android Studio'da android-app/ klasörünü açın
Run → Run 'app' ile telefonunuza yükleyin

4. Bağlan

  1. PC'de Advanced3DControllerApp.exe çalıştırın
  2. Android uygulamasını açın, PC IP adresini girin
  3. CONNECT butonuna basın
  4. ● Connected → Hazır!
# PC IP adresini bul
ipconfig | findstr "IPv4"

Mimik Haritası

Mimik Android Çıktısı HID Ekseni 3D Yazılım
1 Parmak Kaydırma TX, TY X, Y Kamera Pan
2 Parmak Pinch TZ Z Zoom
2 Parmak Kaydırma RX, RY Rx, Ry Orbit Döndürme
Telefonu Eğme RZ (Gyro) Rz Kamera Roll
SHIFT Basılı Tüm × 0.10 — Hassas Ayar

Sürücü Kaldırma

# Sürücüyü kaldır
pnputil /delete-driver Advanced3DController.inf /uninstall /force

# Test Signing'i kapat (opsiyonel)
bcdedit /set testsigning off

Lisans

MIT License

About

Android to PC ultra-low latency 6DOF Space Controller using UMDF 2 Virtual HID driver over UDP.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages