Skip to content

FahriAybarsBarut/Advanced-3D-Controller

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

No releases published

Packages

 
 
 

Contributors