Nordstern-3D: Auswahl-Highlight (orange Outline, immer sichtbar)

Ein selektiertes Bauteil wird jetzt im 3D-Viewport mit einer orangen
Umrisslinie markiert, die dank No-Depth-Pipeline auch hinter Wänden
durchscheint (klare Selektions-Rückmeldung). Zusammen mit Objekt-Info
(numerisch) und Attribute-Panel ist die 3D-Auswahl damit vollständig.

- Engine: set_highlight_lines(vertices) + highlight_pipeline
  (LineList, depth_compare Always, kein Depth-Write), als letzter
  Draw-Call obenauf. Reuse der Grid-Linien-Infrastruktur.
- TS: selectionHighlightLines() baut die Quader-/Prisma-Kanten der
  Auswahl in Akzentfarbe; App berechnet sie per useMemo aus der
  Store-Auswahl und reicht sie durch.
This commit is contained in:
2026-07-04 06:26:29 +02:00
parent ac0d9efc84
commit fabf97a402
8 changed files with 358 additions and 35 deletions
+6 -1
View File
@@ -128,9 +128,13 @@ export function Viewport3D(
/** Links-Klick-Auswahl im WASM-Viewport (TS-Raycast) — wirkt NUR im WASM-Pfad;
* die three.js-Sicht nutzt weiter `onSelectWall`/`onSelectCeiling`. */
onPick3d?: (hit: Pick3dHit, additive: boolean) => void;
/** Umriss-Linien der aktuellen Auswahl — wirkt NUR im WASM-Pfad (s.
* Wasm3DViewport); die three.js-Sicht hebt die Auswahl weiterhin über ihr
* eigenes Material hervor (highlightMat in ThreeViewport3D). */
highlightLines?: Float32Array | null;
},
) {
const { gridVisible, onToggleGrid, onPick3d, ...threeProps } = props;
const { gridVisible, onToggleGrid, onPick3d, highlightLines, ...threeProps } = props;
if (WASM_ENGINE_ACTIVE) {
return (
<Wasm3DViewport
@@ -141,6 +145,7 @@ export function Viewport3D(
groundElevation={props.gridElevation}
onToggleGrid={onToggleGrid}
onPick3d={onPick3d}
highlightLines={highlightLines}
/>
);
}