XR-Raum (Spike)
Stellt ausgewählte Wissensablage-Objekte als Panels in einem 3D-Raum dar und startet auf Wunsch eine
immersive WebXR-Sitzung (z. B. mit einer Meta-Brille gegen die als Webapp gehostete BDT-Instanz).
Reiner Spike (AP-XR1, docs/roadmap-backend.md §8) – kein Backend nötig, alles läuft lokal
gegen die bereits geöffnete Wissensablage. Nur im Browser/als Webapp sinnvoll nutzbar: WebXR braucht einen
Secure Context (HTTPS) und einen WebXR-fähigen Browser (z. B. den Meta-Quest-Browser); ohne Headset zeigt
diese Seite stattdessen eine frei drehbare Desktop-Vorschau der Szene.
Bewusste Einschränkung: Controller werden als einfache Platzhalter-Kegel dargestellt,
nicht als realistische Hersteller-Modelle – die three.js-Hilfsklasse dafür (XRControllerModelFactory)
lädt Modelle automatisch von einem fremden CDN nach, ohne Anwenderaktion (verletzt Regel 1). Im Kegel-Griffbereich
„greifen" (Trigger/Select gedrückt halten) bewegt ein Panel mit dem Controller mit.
Verifikations-Hinweis: Diese Sitzungsumgebung kann WebXR/ein Headset nicht selbst prüfen –
die immersive Darstellung + Controller-Interaktion sind „📖 nicht verifiziert" und müssen auf echter Hardware
bestätigt werden. Die Desktop-Vorschau (Panel-Layout, Textinhalt, Szenen-Aufbau) ist über den echten Browser
verifizierbar.
Side-Panel (löst AP-XR12s Reiterleiste ab): die Werkzeuge stecken jetzt in fünf unabhängig
auf-/zuklappbaren Sektionen im linken Side-Panel – „Objekte & Inhalte hinzufügen" (startet offen, Objekte
auswählen/Icons/3D-Modelle/Bausteine), „Raum-Layout wählen" (Mehrraum-Sitzung), „Termine", „Meeting beitreten"
und „Szene betreten & teilen". Die „Raum"-Karte rechts (Canvas + Layout-Steuerung) bleibt dabei UNABHÄNGIG
vom Auf-/Zuklappen einer Sektion durchgehend sichtbar – ein in einer Sektion gestarteter Raum (z. B. über
„Termin starten") erscheint dort sofort.
Sitzung freigeben (AP-XR4): ein einmaliger Zustands-Transfer beim Laden, keine Live-Kopplung
– am Desktop ausgewählte Objekte per Link/QR-Code auf der Brille öffnen. Braucht ein mit BDT Hub verknüpftes,
bereits synchronisiertes Projekt („Erweiterte Verwendung" → BDT-Hub-Backend). Der erzeugte Code ist menschenlesbar
(z. B. ABCD-EFGH-JKLM, 15 Minuten gültig, mit „Sitzung stoppen" sofort widerrufbar, einmal einlösbar)
– der eigentliche Zugangsschlüssel steht NICHT im Code/Link selbst (Nachschärfung 08.08.2026, verhindert
Klartext-Schlüssel in Server-Logs). Auf der Brille entweder den vollen Link öffnen/QR-Code scannen, oder nur
<bdt-hub-Adresse>/session aufrufen und den Code von Hand eintippen (Eingabehilfe formatiert
automatisch mit Trennstrichen). Gedacht zum kurzen Zeigen im selben Raum, nicht zum öffentlichen Teilen. Lädt
eine WebXR-fähige Brille dieselbe Seite direkt (lokal oder über einen
Freigabe-Link), erscheint der „In VR ansehen"-Button automatisch – das prüft three.js selbst (VRButton),
kein gesonderter Schritt nötig.
VR-Arbeitsraum (AP-XR2): Panels lassen sich frei im Raum anordnen – am Desktop per Maus
bei aktivem „Bearbeitungsmodus" (Panel anfassen und ziehen, bleibt auf gleicher Höhe), in VR jederzeit per
Greifen. „Layout speichern" merkt sich die Anordnung je Projekt in einem eigenen, nicht bearbeitbaren
Infoobjekt (Typ „XR-Layout" – entsteht ausschließlich hier, s. Wissensablage). „Automatisch anordnen" verwirft
die gespeicherte Anordnung wieder zugunsten des Bogen-Layouts. Markdown-Panels zeigen jetzt lesbaren Text
statt roher Syntaxzeichen (#, **, …).
Bewegungssteuerung (AP-XR5): in VR bewegt der linke Thumbstick den Anwender frei durch
den Raum (Blickrichtung, Höhe bleibt fix), der rechte Thumbstick dreht in 30°-Schritten (Snap-Turn, gegen
Bewegungsübelkeit statt einer stetigen Drehung). Am Desktop unverändert Maus-Orbit/Scrollrad-Zoom.
Nachladen in die laufende Sitzung (AP-XR6): solange eine Freigabe aktiv ist, lassen sich
weitere angekreuzte Objekte über den Echtzeit-Kanal (bdt-hub AP-BE6, WebSocket-Pub/Sub je Projekt) direkt in
die bereits geöffnete Brillen-Sitzung nachladen – ohne neuen Link/QR-Code, ohne Neuladen der Seite. Die neuen
Panels erscheinen auf einem zweiten, etwas weiter entfernten Bogen hinter den bisherigen. Rein ephemer (kein
Nachrichtenverlauf) – ist die Brille zum Zeitpunkt des Nachladens gerade nicht verbunden, verpasst sie das
Ereignis; ein „Sitzung stoppen" + neu freigeben bleibt der Weg für einen kompletten Neustart.
Mehrraum-Sitzung + permanenter Link (AP-XR8): mehrere oben zusammengestellte Objektauswahlen
lassen sich zu benannten „Räumen" gruppieren (Karte „Mehrraum-Sitzung") und als eigenes Infoobjekt speichern – beim
Start entsteht eine Lobby mit einem Portal je Raum, Anklicken/Controller-Select wechselt hinein, ein Portal
„◀ Zurück zur Lobby" führt zurück (jeder Wechsel baut die Szene neu auf, keine nahtlose Kontinuität der eigenen
Position). „Sitzung freigeben" teilt automatisch die GANZE Mehrraum-Sitzung, sobald mindestens ein Raum angelegt
ist. Die neue Gültigkeits-Auswahl „Dauerhaft" erzeugt einen mehrfach einlösbaren Link ohne Ablaufdatum (bis zum
Klick auf „Sitzung stoppen") – bewusst weiterhin ohne Warteraum/Zugangssteuerung/Kapazitätsgrenze:
wer den Link/Code kennt, kommt jederzeit hinein. Der neue Warteraum (AP-XR7b1, s. u.) gilt bisher nur für den
Einzelraum-Freigabeweg (auch über einen Termin gestartet) – eine GANZE Mehrraum-Sitzung teilen bleibt weiterhin
ohne Warteraum. Inhalte einfügen (Icons/3D-Modelle) und Nachladen (AP-XR6) sind innerhalb einer Mehrraum-Sitzung
noch nicht verfügbar.
Rollen + Teilnehmer entfernen (AP-XR7a): der Server unterscheidet jetzt selbst zwischen dem
Koordinator (diesem Gerät) und Gästen – ein Gast kann über den Echtzeit-Kanal nichts mehr senden, nur noch
empfangen (echte serverseitige Durchsetzung, keine reine Konvention mehr). Solange „Nachladen" aktiv ist, zeigt
die Karte „Inhalte nachladen" eine Liste der gerade verbundenen Geräte mit einem „Entfernen"-Knopf – trennt die
jeweilige Verbindung sofort, der Link/Code selbst bleibt gültig (ein erneutes Öffnen ist weiterhin möglich).
Teilnehmer mit einem gewählten Anzeigenamen (AP-XR7b2, s. u.) erscheinen mit diesem statt nur als „Gerät 1",
„Gerät 2" usw.
Termine + Warteraum (AP-XR7b1): die Karte „Termine" legt einen Termin mit Beginn/Ende,
Zeitfenster-Modus, Flags („Anonyme Teilnehmer erlauben"/„Aufzeichnung/Protokoll") und einer Meeting-ID an – er
referenziert einen zuvor unter „Mehrraum-Sitzung" gespeicherten Raum, der sich so über mehrere Termine hinweg mit
wechselnden Teilnehmern wiederverwenden lässt. „Termin starten" öffnet den referenzierten Raum; das anschließende
„Sitzung freigeben" (Side-Panel-Sektion „Szene betreten & teilen") aktiviert dafür zusätzlich einen ECHTEN, serverseitig
durchgesetzten Warteraum – neu beitretende Gäste warten, bis der Koordinator sie in der Teilnehmerliste über
„Zulassen"/„Ablehnen" freigibt oder abweist (der Zugangs-Link/-Code selbst bleibt dabei unangetastet, ein erneuter
Versuch bleibt möglich). Der Zeitfenster-Modus „Echte Zugriffssperre außerhalb des Fensters" blockiert „Sitzung
freigeben" bereits VOR dem Zeitfenster bzw. danach.
Avatar-Anmeldung Szenario a (AP-XR7b2): ob der bestehende Freigabe-Link/-Code für diesen
Termin überhaupt anonyme Gäste zulässt, entscheidet das Häkchen „Anonyme Teilnehmer erlauben" – OHNE Häkchen
bleibt der Weg für Gäste komplett gesperrt (klare Meldung statt eines stillen Fehlschlags), MIT Häkchen sieht ein
Gast vor dem eigentlichen Beitritt ein kurzes Formular „Bevor du beitrittst" (Anzeigename optional + gewürfelter
Avatar, „Neuer Avatar" würfelt neu) – rein sitzungslokal, nichts davon wird gespeichert. Der gewählte Name
erscheint danach in der Teilnehmerliste des Koordinators, der Avatar erscheint jetzt außerdem als 3D-Figur in der
Szene (Positions-Übertragung, AP-XR7c).
Avatar-Anmeldung Szenario b / „XR Meeting" (AP-XR7b3): für BDT-Anwender mit einem EIGENEN
Projekt (Side-Panel-Sektion „Meeting beitreten") – statt QR-Code/Link einfach die Meeting-ID eines fremden Termins eintippen
und einen echten eigenen Avatar (Kachel „XR Avatare") wählen. Die Meeting-ID ist bewusst kein Geheimnis, der
Warteraum bleibt die eigentliche Zugangsschranke.
Reichhaltigere Inhaltstypen (AP-XR9): Auswahl-Objekte vom Typ „Grafik" (Fabric),
„Wordcloud" oder „Diagramm" (nur Variante Mermaid) erscheinen jetzt als gerendertes Bild statt als Text-Panel
– vollständig lokal, kein Netzwerkzugriff. Andere visuelle Typen (Whiteboard, Mindmap, Seite, BPMN-/ZenUML-
Diagramme) bleiben vorerst Text-Panels. „News"-Objekte (Webseiten/YouTube/RSS) waren schon vorher auswählbar
und zeigen ihre Quelle als Text. Neu außerdem: Icons aus dem UI5-Katalog und 3D-Modelle (glTF/GLB) lassen sich
direkt in die laufende Szene einfügen (Side-Panel-Sektion „Objekte & Inhalte hinzufügen") – aus einer festen, einzeln lizenzgeprüften
CC0-Allowlist, einer eigenen geprüften Quelle ODER (AP-XR12) direkt als hochgeladene Datei von der eigenen
Festplatte (kein Netzwerkzugriff, deshalb OHNE das „Erweiterte Verwendung"-Häkchen nutzbar) – Allowlist/eigene
Quelle bleiben weiterhin dahinter.
Einfügegröße + Skalieren (AP-XR28, PO-Fund 20.08.2026): ein 3D-Modell einfügen bietet jetzt
vier Größen – „Gegenstand" (ca. 0,6 m, bisheriges Standardverhalten), „Groß" (ca. 2 m), „Originalgröße" (1:1,
bleibt greifbar) und „Als Raum" (1:1, wird UM DEN BETRACHTER platziert statt davor, NICHT greifbar – gedacht
für einen kompletten, extern erzeugten Raum-Export). Jedes eingefügte Modell erscheint danach in der neuen
„Skalieren"-Zeile darunter und lässt sich per Knopf feinjustieren (Boden-Kontakt bleibt beim Skalieren erhalten).
Außerdem hat die Szene jetzt eine neutrale Grundbeleuchtung (Hemisphere + Directional) – vorher komplett dunkel,
wodurch importierte glTF-Modelle (anders als die eigenen, unlit gezeichneten Panels/Bausteine) unabhängig von
ihrer Materialfarbe schwarz erschienen; zusätzlich wird eine unrealistisch hohe Metalness (glTF-Default 1.0 ohne
Environment-Map) beim Einfügen gedeckelt.
Hintergrundfarbe, leerer Raum, Einfüge-Farbe (Anwenderwunsch 10.08.2026): die „Raum"-Karte hat
jetzt oben rechts einen Farbwähler für den Szenenhintergrund (hell/farbig statt nur des dunklen Standardtons,
wirkt sofort auch bei laufender Szene, „Zurücksetzen"-Knopf für den Standard) – bewusst nur für die aktuelle
Sitzung, nicht Teil von „Layout speichern". „Szene starten" lässt sich jetzt auch OHNE Objektauswahl klicken und
startet einen leeren Raum – die Karte „Objekte auswählen" ist dafür unter „Inhalte einfügen" gewandert, da beide
jetzt gleichrangige Wege sind, Inhalte in einen (ggf. leer gestarteten) Raum zu bringen. „Inhalte einfügen" hat
außerdem eine optionale Einfüge-Farbe („Farbe anwenden" + Farbwähler) – gilt für das jeweils nächste eingefügte
Icon (Rahmenfarbe) oder 3D-Modell (überschreibt alle Materialfarben, Texturen/Formen bleiben unverändert).
Flexibles XR-Menü (AP-XR13): ein gemeinsames Aktionsmodell mit zwei Darstellungen – am
Desktop der neue „Menü"-Knopf oben in der „Raum"-Karte (Aktionsliste als Popup-Menü), in der immersiven
Sitzung eine Handgelenk-Palette (Canvas-Textur am Controller-Grip, mit Griff-Taste ein-/ausblenden, Zielen +
Auslöser der anderen Hand wählt eine Zeile) – DOM ist während einer VR-Sitzung unsichtbar, ein In-VR-Menü
MUSS deshalb ein Szenenobjekt sein. v1-Aktionen: Anordnung speichern, Hintergrundfarbe wechseln, Hilfe-Schild
ein-/ausblenden (AP-XR15, s. u.), zurück zur Lobby (nur in einer Mehrraum-Sitzung), immersive Sitzung
verlassen – weitere Werkzeuge (Baukasten, Poly-Haven-Suche) kommen mit den Folgepaketen dazu, ohne dass sich
Aufbau/Bedienung des Menüs selbst ändern.
Teleport + Hilfe-Schild (AP-XR15): in VR den RECHTEN Thumbstick nach vorn halten zeigt
einen Wurf-Bogen (Parabelvorschau mit Schwerkraft) bis zum Bodentreffer – cyan bei gültigem Ziel, rot wenn der
Bogen (noch) keinen Boden trifft –, Loslassen springt dorthin; kollidiert bewusst nicht mit der bestehenden
Bewegungssteuerung (AP-XR5), da nur die bisher ungenutzte Vorwärts/Rückwärts-Achse desselben Sticks genutzt
wird (Snap-Turn bleibt auf der seitlichen Achse). Am Desktop genügt ein einfacher Klick auf den Boden. Über
das neue Menü lässt sich außerdem ein Hilfe-Schild mit der Bedienungs-Legende in den Raum stellen.
Präsenz/Positions-Broadcast (AP-XR7c): andere Teilnehmer erscheinen jetzt als einfache
Form-Avatare mit Namensschild in der Szene – die eigene Kopf-Pose wird laufend über den Echtzeit-Kanal (AP-BE6)
gesendet, empfangene Positionen werden weich interpoliert nachgezeichnet statt zu springen. Funktioniert für
JEDEN Beitrittsweg (Koordinator, Link/QR-Gast, „Meeting beitreten (eigener Avatar)", Meeting-Code ohne Konto)
sowohl am Desktop als auch immersiv; ein Teilnehmer ohne eigenen Avatar (z. B. der anonyme Code-Beitritt ohne
Formular) erscheint als schlichte blaue Kapsel mit „Teilnehmer"-Schild statt unsichtbar zu bleiben.
Voice-Chat (AP-XR20a): „Mikrofon aktivieren" im XR-Menü baut ein Mesh-Sprachchat mit ALLEN
anderen Teilnehmern auf – reines WebRTC-Peer-zu-Peer (kein Server hört mit, bdt-hub trägt nur die Signalisierung),
gedacht für kleine Runden im selben Netzwerk (bis ~4 Teilnehmer). Ein zweiter Klick schaltet stumm/hebt die
Stummschaltung auf, ohne das Mikrofon erneut abzufragen. Ein optional am BDT-Hub-Endpunkt hinterlegter
STUN-/TURN-Server (Einstellungen → Verbindungen, „ICE-Server für Voice-Chat") wird automatisch an alle
beitretenden Gäste mitgegeben. In der Koordinator-Teilnehmerliste zeigt ein grüner Punkt live, wer gerade
spricht.