2026-04-09
Devlog: 3D Spatial UI und Text-Editor
Heute möchte ich euch einen Blick auf den aktuellen Stand des Interfaces werfen lassen. Wir haben nun eine funktionierende, räumliche Benutzeroberfläche (Spatial UI), die komplett in unserem Nim/Sokol-Stack gerendert wird.
Hier ist ein aktueller Screenshot aus der Engine:
Abb 1: Unsere räumliche Benutzeroberfläche mit aktiven Text-Modulen, Selektions-Pfeilen und globalem Koordinatensystem.
Was gibt es Neues zu sehen?
Wie man auf dem Screenshot gut erkennen kann, verschmelzen 2D-UI-Konzepte immer mehr mit der 3D-Welt. Die wichtigsten Neuerungen auf einen Blick:
- Virtual Windows (
virtual_window_renderer.nim): Wir haben mehrere schwebende Panels im Raum platziert ("Mitarbeiter Profil", "Projekt Übersicht", "Aufgabenliste"). Diese Panels sind keine statischen Texturen, sondern echte 3D-Objekte (WorldObjectKind = wokVirtualWindow), die im Raum frei bewegt und skaliert werden können. - Der integrierte Texteditor (
text_document.nim): Das gelb umrandete Panel rechts ("Textobjekt Test") zeigt unseren neuen SDF-basierten Texteditor in Aktion. Wie im Textfeld beschrieben:- Mit F2 startet man den Edit-Mode direkt im 3D-Raum.
- Strg+W schaltet den Wordwrap um.
- Strg+P öffnet zusätzlich unser HUD-Eingabefeld.
- Selektion & Snapping (
scene_navigation.nim): Die gelben und grünen Pfeile, die vom Zentrum ausgehen, visualisieren unser neues Navigations- und Snapping-System. Objekte "wissen", wo sie sich relativ zueinander befinden. Das Constraint-System (basierend auf Kiwi) sorgt dafür, dass Fenster logisch aneinander andocken können, ohne sich unschön zu überlappen. - Das globale Koordinatensystem (
coordinate_system.nim): Die X-, Y- und Z-Achsen helfen bei der Orientierung, während die Kamera (mit Maus und Numpad steuerbar) stufenlos heranzoomen oder um die Panels kreisen kann.
Wie geht es weiter?
Das Fundament steht! Das Rendering über den Sokol-Pass funktioniert performant (selbst mit MSAA und Stencil-Buffern für die Outlines). Wie bereits im Editor-Testfenster auf dem Screenshot angeteasert, lauten die nächsten Ziele:
- Verfeinerung der Mauslogik (besseres Drag & Drop Verhalten).
- "Echte" Inner-Frame-Inputs für die Virtual Windows (z.B. Buttons klicken oder Text markieren).
- Erweiterung der Undo/Redo-Historie (
scene_history.nim) für komplexe Layout-Änderungen.
Bleibt dran, wir nähern uns mit großen Schritten einem voll funktionsfähigen Spatial-Workspace!