Engine-3D: Kamera-Presets + Weiss-Modus im render3d-Viewport

Der Engine-3D-Viewport (render3d/wgpu) war reines Ansehen (Orbit/Zoom). Jetzt:

- Kamera-Presets als Overlay: Top/Unten/Vorne/Hinten/Links/Rechts/Iso.
  Richtungen exakt wie der three.js-Pfad (applyView3d); framen die aktuelle
  Modell-Bounding-Box (fitTargetDist) und springen auf den Preset-Winkel,
  danach Orbit/Pan/Zoom weiter frei. Rein JS.
- Render-Modus Schattiert/Weiss: mode-Uniform in Globals (WGSL/Rust),
  Weiss = beleuchtetes Clay-Grau; wasm-Binding set_render_mode_white,
  durchgereicht via useWasm3dRenderer.
- Overlay-CSS self-contained (wasm3dOverlay.css), Theme-aware.

three.js unangetastet. Auswahl/Grips/Zeichnen + Wireframe/HLR bewusst noch
offen (naechste Scheibe).
This commit is contained in:
2026-07-03 20:56:56 +02:00
parent bd80eb1c59
commit b6d14ca2b2
6 changed files with 276 additions and 13 deletions
+53
View File
@@ -0,0 +1,53 @@
/* Steuer-Overlay des engine-3D-Viewports (Wasm3DViewport): Kamera-Presets +
* Darstellungsart. Bewusst eine EIGENE Datei (nicht styles.css) — dieser
* Viewport-Pfad wird unabhängig von der three.js-Sicht weiterentwickelt.
* Nutzt dieselben CSS-Variablen wie die übrige App (in :root definiert), damit
* sich der Overlay optisch nahtlos einfügt (auch im Dunkelmodus). */
.wasm3d-overlay {
position: absolute;
top: 10px;
left: 10px;
z-index: 3;
display: flex;
flex-direction: column;
gap: 6px;
pointer-events: none;
}
.wasm3d-overlay-group {
display: flex;
flex-wrap: wrap;
gap: 3px;
padding: 4px;
background: var(--panel);
border: 1px solid var(--border);
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
pointer-events: auto;
}
.wasm3d-overlay-btn {
min-width: 34px;
padding: 4px 8px;
font-size: 11px;
font-weight: 600;
line-height: 1.4;
color: var(--ink, #ddd);
background: transparent;
border: 1px solid var(--border);
border-radius: 5px;
cursor: pointer;
}
.wasm3d-overlay-btn:hover {
background: var(--accent-dim);
border-color: var(--accent-border);
color: var(--accent);
}
.wasm3d-overlay-btn.active {
background: var(--accent-dim);
border-color: var(--accent);
color: var(--accent);
}