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.
┌───────────────────────┐ ┌─────────────────────────┐ ┌────────────────────┐
│ 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) │
└─────────────────────┘
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)
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\Advanced3DControllercd pc-companion/app
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config ReleaseAndroid Studio'da android-app/ klasörünü açın
Run → Run 'app' ile telefonunuza yükleyin
- PC'de
Advanced3DControllerApp.exeçalıştırın - Android uygulamasını açın, PC IP adresini girin
- CONNECT butonuna basın
● Connected→ Hazır!
# PC IP adresini bul
ipconfig | findstr "IPv4"| 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üyü kaldır
pnputil /delete-driver Advanced3DController.inf /uninstall /force
# Test Signing'i kapat (opsiyonel)
bcdedit /set testsigning offMIT License