Nordstern-3D: Boden-Referenzraster + bessere Kamera-Steuerung

- Boden-Grid-Fläche auf y = baseElevation des aktiven Geschosses,
  ein-/ausschaltbar (Overlay-Button im Viewport, State in viewSlice
  grid3dVisible). Eigene LineList-Pipeline in der Engine (grid.rs,
  GRID_WGSL, geteilte View-Projection/Depth mit der Mesh-Pipeline),
  neue set_ground_grid(visible, elevation, extent, spacing)-Methode.
  Minor-Linien dezent, jede 5. als Major betont.
- Kamera-Steuerung überarbeitet (vorher nur Mitte=Orbit, Pan auf
  Shift+Mitte versteckt): Links=Orbit, Mitte/Rechts=Pan (bewegen),
  Rad=Zoom zum Cursor. Laptop-freundlich, konsistent mit der
  2D-Plan-Navigation (dort Mitte=Pan).
This commit is contained in:
2026-07-04 05:54:16 +02:00
parent d0b94a75ec
commit d4065c5a41
12 changed files with 567 additions and 21 deletions
+7
View File
@@ -33,6 +33,10 @@ export interface ViewSlice {
view3d: View3d;
// Sichtwinkel (FOV) der 3D-Perspektivkamera in Grad.
fov: number;
// Boden-Referenzraster im 3D-Viewport ein-/ausgeblendet (wirkt aktuell nur
// im Nordstern/WASM-Pfad — die three.js-Sicht zeigt ihr Raster unveraendert
// immer; s. Wasm3DViewport.tsx).
grid3dVisible: boolean;
// Farb-Modus des Grundrisses: "color" = Kategorie-/Element-Farben (heute),
// "mono" = reiner Schwarz-Weiss-Plan (Tinte, keine Farb-/Schraffurfarben).
planColorMode: "color" | "mono";
@@ -60,6 +64,7 @@ export interface ViewSlice {
setRenderMode: (m: RenderMode) => void;
setView3d: (v: View3d) => void;
setFov: (n: number) => void;
setGrid3dVisible: (b: boolean) => void;
setPlanColorMode: (m: "color" | "mono") => void;
setReferenceLines: (b: boolean) => void;
setLineMode: (m: "display" | "print") => void;
@@ -83,6 +88,7 @@ export function createViewSlice(api: StoreApi<ViewSlice>): ViewSlice {
renderMode: "shaded",
view3d: "perspective",
fov: 50,
grid3dVisible: true,
planColorMode: "color",
referenceLines: false,
lineMode: "display",
@@ -107,6 +113,7 @@ export function createViewSlice(api: StoreApi<ViewSlice>): ViewSlice {
setRenderMode: (m) => set({ renderMode: m }),
setView3d: (v) => set({ view3d: v }),
setFov: (n) => set({ fov: n }),
setGrid3dVisible: (b) => set({ grid3dVisible: b }),
setPlanColorMode: (m) => set({ planColorMode: m }),
setReferenceLines: (b) => set({ referenceLines: b }),
setLineMode: (m) => set({ lineMode: m }),