# 🚀 **VR-Konfigurator** Willkommen zum **VR-Konfigurator**! Hier kannst du Fahrzeuge in VR und AR konfigurieren und eine coole User-Experience genießen. --- ## 🎯 **Ziele (Goals)** ✔️ Auswahl zwischen **zwei Modellen**: *Erlbach* & Fahrrad ✔️ **Konfiguration** von Teilen (Felgen, Grill, etc.) ✔️ **Farbauswahl** verschiedener Komponenten ✔️ **3D-Darstellung** mit frei drehbarer Ansicht ✔️ **Explosions-Ansicht** via Animation ✔️ Umschalten in **AR-Modus** ✔️ **Export** der Konfiguration als JSON ✔️ **VR-Umgebung** passend zum Kontext ✔️ **Grabben** der UI-Menüelemente ✔️ Teile per **Klick auf das Modell** auswählen --- ## 🖼 **Screenshots** | **Hauptmenü** | **Konfiguration** | **Explosionsansicht** | |:---:|:---:|:---:| | ![Screenshot1](docs/img/img1.png) | ![Screenshot2](docs/img/img2.png) | ![Screenshot3](docs/img/img3.png) | --- ## 🛠 **Projektstruktur (Structure)** ### 🏗 **Model** Grundlage für Base- und ChildModels: - Name (Human-Readable) - ID - Mesh (Form) - Material (Oberfläche) - Position, Rotation, Skalierung - Farbauswahlen - Unterstützt **Passthrough-Model** (Hilfsobjekte, Farbweitergabe an Kinder) - Definiert **Ports** ### 🔌 **Port** - Schnittstelle, die ChildModels anbinden lässt - Enthält: - PortID (nicht-unique) - DefaultID (Standardmodell) - Chooseable-Flag - Positionsinformationen - Anzeigename im Menü - Explode-Direction ### 📦 **BaseModel** - Startpunkt der Konfiguration - Im Hauptmenü auswählbar - Farbe **nicht änderbar** - Empfehlung: leeres/festes Objekt für maximale Flexibilität ### 🔗 **ChildModel** - An Ports angebunden - Kann eigene Ports definieren → rekursive Baumstruktur ### 🎮 **ModelBehaviour** - Visualisiert Ports und deren Kinder - Steuert Logik beim Modellwechsel ### 🔍 **BaseModelBehaviour / ChildModelBehaviour** - **BaseModelBehaviour:** Identifikationszweck - **ChildModelBehaviour:** Zusätzliche Infos für ChildModels (Port, Parent) ### ⚙️ **Manager & Controller** - **ModelManager:** Verwaltung aller Modelle (`Assets/Scripts/Model`) - **StateManager:** Reset-Logik & Menü-Rückkehr (`Assets/Scripts/Managing`) - **Exploder:** Steuert Explosionsanimation - **Rotator:** Rotation des Modells über Meta Quest 3 Joysticks (nur Y-Achse) --- ## ➕ **Modelle hinzufügen (Adding Models)** 📂 Modelle & Materialien ins Verzeichnis: ```/Assets/Ressources``` 🔑 In der ModelList eintragen: - **BaseModel:** Grundmodell - **ChildModel:** Teile des Modells (Position, Ports, Farben, Explosionsrichtung) - **Sammlung von ChildModels:** Mehrere ChildModels aus einer Datei laden --- ## 📥 **Installation** ### ✅ **Voraussetzungen** - [Unity](https://unity.com/) - [Meta Quest 3](https://www.meta.com/quest/) - [Meta Interaction SDK](https://developer.oculus.com/downloads/package/meta-xr-interaction-sdk/) - OpenXR aktiviert ### ▶️ **Schritte** ```bash # Repository klonen git clone ssh://git@git.kilabor.htwsaar.de:2222/projektarbeiten-bachelor/sose_2025/gruppe-1/vr-configurator.git # Unity öffnen & Projekt importieren # Player Settings: OpenXR aktivieren # App auf Meta Quest 3 (Android Build Settings) builden ``` ## 📚 **Dokumentation** Detaillierte Infos findest du hier: ```/docs/Dokumentation``` --- ## 👥 **Contributors** - Max Luca Schmidt - Florian Speicher - Tim Wall