Make readme pretty

This commit is contained in:
FlorianSpeicher
2025-07-17 11:38:07 +02:00
parent 66222ec0e8
commit 1babd7a42c
6 changed files with 420 additions and 316 deletions

146
README.md
View File

@@ -1,27 +1,131 @@
# VR-Konfigurator
# 🚀 **VR-Konfigurator**
## Goals
- Möglichkeit, 3D-Modelle in VR anzuzeigen und zu konfigurieren
Willkommen zum **VR-Konfigurator**! Hier kannst du Fahrzeuge in VR und AR konfigurieren und eine coole User-Experience genießen.
## Non-Goals
- TBD
---
## Structure
- Model (zB EmRoCar)
+ Port (zB "wheel")
* ChildModel ("wheel", Reifenmodell)
- ...
## 🎯 **Ziele (Goals)**
## Adding Models
1. Add Mesh (.obj/.fbx) & Material to Assets/Resources/
2. (Optional) Add Port IDs in [Definitions.cs](/vr-configurator/Assets/Scripts/Models/Definitions.cs)
3. Define Models in [ModelList.cs](/vr-configurator/Assets/Scripts/Models/ModelList.cs)
✔️ 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
## Adding Childmodels
1. Add a new Child in List ChildModels in [ModelList.cs](/vr-configurator/Assets/Scripts/Models/ModelList.cs)
2. Each Child has a Port, a human name, a nameId, a mesh, a material, a portList(always null) and a list of changeable colors(default null)
## Contributors
- Max Luca Schmidt
- Florian Speicher
- Tim Wall