NOTQINVR
1. Project Summary
A Unity 6 AR/VR application that serves as the human-facing visualization layer for the NOTQIN factory ecosystem — combining a VR digital twin (factory walk-through on PC/Quest 2) and an AR overlay system (phone pointed at a loom shows live sensor data, maintenance guides, training, and remote expert assistance).
2. Two Modes
| Mode | Platform | Use Case | Status |
|---|---|---|---|
| VR Digital Twin | PC + Quest 2 | Factory director walks through 3D replica, sees all 8 loom health statuses in real-time | ✅ Built |
| AR Overlay | Android/iOS phone | Technician points phone at loom → floating sensor data panel + repair guides | 🚧 Scaffolded (7 modules, awaiting team) |
3. Architecture
Data Pipeline
8x ESP32 on looms
│ power (W), vibration (mm/s), temp (°C), tension (N), RFID
▼
InfluxDB (cloud)
│ HTTP poll every 5 seconds
▼
DataManager.cs (Unity — C#)
│ OnSnapshotUpdated event
▼
All UI subscribers update in sync
├── VR: MachineController → colours, auras, energy bars
└── AR: MachineAROverlay → floating panels per loom
Key Data Fields per Machine
| Field | Unit | Use |
|---|---|---|
avg_power_watts | W | Main health indicator |
co2_kg_h | kg CO₂/h | Emissions tracking (CBAM) |
health_score | 0.0–1.0 | 1 - (power - 400) / 600 |
alert_level | 0/1/2 | OK / Warning (750W) / Critical (900W) |
cbam_contribution | €/year | EU carbon tax cost |
wifi_rssi | dBm | Sensor connectivity |
last_seen | timestamp | Online detection |
4. Tech Stack
| Layer | Technology |
|---|---|
| Engine | Unity 6000.3.11f1 (LTS) |
| Render Pipeline | URP 17.0.3 (Universal) |
| XR Framework | AR Foundation 6.0.3 |
| Android | ARCore 6.0.3 |
| iOS | ARKit 6.0.3 |
| VR | XR Interaction Toolkit 3.0.7 + OpenXR 1.14.3 |
| Quest 2 | Oculus 4.5.4 |
| Input | Input System 1.11.2 |
| UI | TextMeshPro 3.0.9 |
| Build (Android) | ARM64, API 24+, IL2CPP |
5. Project Structure — Assembly Definitions
13 asmdef files (zero circular dependencies):
| Assembly | Owner | Contents |
|---|---|---|
NOTQIN.Core | Core | DataManager, InfluxDBClient, NOTQINConfig, MachineData |
NOTQIN.Game | VR/Shared | FactoryBuilder, MachineController, HealthAura, EnergyBar, MachineDetailPanel |
NOTQIN.AR.Contracts | Contracts | IMachineRecognizer, IMaintenanceService, DataTypes |
NOTQIN.AR.Contracts.Mocks | Mocks | Offline testing sandbox implementations |
NOTQIN.AR.Core | Member 1 | ARSessionManager (stub) |
NOTQIN.AR.Recognition | Member 2 | MachineQRTracker, ManualMachineSelector (stubs) |
NOTQIN.AR.Overlay | Member 3 | MachineAROverlay, BillboardFacer |
NOTQIN.AR.Maintenance | Member 4 | ARMaintenanceGuide (stub) |
NOTQIN.AR.RemoteAssist | Member 5 | ARRemoteSession/WebSocket (stub) |
NOTQIN.AR.Training | Member 6 | ARTrainingModule multilingual (stub) |
NOTQIN.AR.QA | Member 7 | ARPerformanceProfiler (stub) |
NOTQIN.Editor | Editor | ARConfigBootstrap, NOTQINSceneBuilder, VRRigBuilder |
NOTQIN.Tests.EditMode | Tests | DataManagerTests, MockMachineRecognizerTests |
6. What Is Built
VR Digital Twin (✅ 100% Complete)
Factory Scene:
FactoryBuilder.cs— procedurally generates floor grid + 4 walls + 8 auto-scaled loomsNOTQIN_Loom_V2.fbx(1.1 MB) — high-poly Jacquard loom model, auto-instantiated 8×
Per-Machine Visualizations:
MachineController.cs— subscribes to snapshots, drives body colour + health aura + energy barHealthAura.cs— pulsing coloured disc on floor: green (0.7+) → orange (0.4–0.7) → red (<0.4)EnergyBar.cs— vertical pole, height ∝ watts, colour ∝ health scoreAlertIndicator.cs— red halo that pulses whenalert_level ≥ 1
UI:
MachineDetailPanel.cs— slide-in panel with all sensor readings + CBAM cost + wear simulator (counterfactual “what-if”)FactoryHUD.cs— top-level HUD (total power, total CO₂, alert count)BillboardPanel.cs— makes UI canvas face camera in 3D space
Data Core:
DataManager.cs— polls InfluxDB/relay every 5s, firesOnSnapshotUpdatedeventInfluxDBClient.cs— HTTP client for Flux queries, graceful fallback to mock dataNOTQINConfig.cs— ScriptableObject singleton (all tunable settings: URLs, colours, thresholds)
AR System (🚧 Scaffolded — Awaiting 7-Member Team)
What’s ready:
- All 7 module skeletons compile with no errors
- Mock implementations for offline testing
- Contract interfaces defined
BillboardFacer.cs(rotates panel to camera) — completeARConfigBootstrap.cs— auto-creates config asset on project open
What needs implementation:
| Module | Owner | What’s Needed |
|---|---|---|
| A — Session | Member 1 | AR plane detection, anchor creation, ARSessionManager |
| B — Recognition | Member 2 | QR library with 8 loom codes, ARTrackedImageManager |
| C — Overlay | Member 3 | Floating health panel prefab, MachineARPanel |
| D — Maintenance | Member 4 | Step-by-step repair callouts, GET /maintenance/procedures/:id |
| E — Remote Assist | Member 5 | WebSocket + WebRTC for expert annotations |
| F — Training | Member 6 | Multilingual (AR/FR/EN) component labels + quiz scoring |
| G — QA | Member 7 | Performance profiler UI, ≥60 FPS assertions |
7. Scenes
| Scene | Purpose | Status |
|---|---|---|
scene.unity | Main test scene | Exists |
scene1.unity | Variant/backup | Exists |
vrscene.unity | VR digital twin | Exists |
| AR scene | AR overlay scene | Not yet created |
8. Performance Targets
| Target | Metric |
|---|---|
| Frame rate | ≥ 60 FPS on Snapdragon 665 |
| AR tracking latency | < 100ms |
| Memory | < 800 MB |
| FindObjectsByType calls | ≤ 2 per frame |
| Build size (APK) | ~150–190 MB |
| Data poll interval | 5 seconds |
9. CI/CD
- GitHub Actions — runs EditMode + PlayMode tests on push/PR to
master - Unity Build Automation — cloud.unity.com (handles Android IL2CPP builds)
- Secrets guard — CI scans for base64 strings >400 chars (catches committed API keys)
- PR template — checklist: no hardcoded URLs, APIs in Contracts, .meta files committed
10. Integration with NOTQIN Ecosystem
NOTQIN Core (InfluxDB)
└── DataManager polls every 5s → VR + AR update
IEIA (notqin-agent-v2)
└── Maintenance logs → Module D repair procedures
└── Anomaly alerts → Module C alert indicator
Future:
NOTQINVR Module D logs completed repairs → IEIA agent learns
NOTQINVR Module F training scores → IEIA adjusts shift schedules
11. Open Questions
- Who are the 7 team members for AR modules?
- Is there a real factory pilot planned for NOTQINVR AR?
- Does the VR mode need Quest 2 standalone build or PC-only?
- Should Maintenance Module D connect to IEIA or a separate backend?
12. Next Actions
- Create AR scene and configure
ARSessionManager(Module A) - Create QR reference image library for 8 looms (Module B)
- Build
MachineARPanelprefab with health ring + sensor labels (Module C) - Set up backend endpoints for
GET /maintenance/procedures/:id(Module D) - Write Dockerfile for local relay server
- Deploy VR twin to Quest 2 for first demo
- Record demo video of VR digital twin for Personal Brand