Engine-3D-Presets ueber die TopBar + orthografisch (Top/Front/Seite), Iso korrekt

Die Kamera-Presets liefen zuvor als Viewport-Overlay mit eigenen JS-yaw/pitch-
Winkeln, rein perspektivisch (Iso falsch, keine Parallelprojektion). Jetzt
haengt der Engine-Viewport am app-weiten view3d-State (TopBar-CameraMenu, wie
three.js) und nutzt die vorhandene Rust-preset_camera:

- web.rs: set_view_preset(preset) + model_bounds/fit; Front/Top/Side echt
  orthografisch, Iso/Perspektive perspektivisch - wie das native Fenster.
  default_fov() pub(crate), damit Fit denselben FOV nutzt.
- useWasm3dRenderer: applyViewPreset; render(null) ueberschreibt die
  Preset-Kamera nicht.
- Wasm3DViewport: konsumiert view3d/renderMode als Props (Overlay + lokaler
  Umschalter entfernt, wasm3dOverlay.css geloescht); Orbit bleibt frei
  (Preset = Sprung, kein Lock), three.js-Verhalten gespiegelt.
- Viewport3D-Switcher reicht view3d/renderMode an den Engine-Viewport durch
  (kein three.js-Szenencode angefasst).
This commit is contained in:
2026-07-03 21:13:53 +02:00
parent 7bcf69c16c
commit 17523d422c
6 changed files with 267 additions and 261 deletions
+9 -1
View File
@@ -116,7 +116,15 @@ const WASM_ENGINE_ACTIVE: boolean = (() => {
* (Auswahl, Render-Modi, Editier-Griffe) wirken nur im three.js-Pfad.
*/
export function Viewport3D(props: Parameters<typeof ThreeViewport3D>[0]) {
if (WASM_ENGINE_ACTIVE) return <Wasm3DViewport project={props.project} />;
if (WASM_ENGINE_ACTIVE) {
return (
<Wasm3DViewport
project={props.project}
view3d={props.view3d}
renderMode={props.renderMode}
/>
);
}
return <ThreeViewport3D {...props} />;
}