Native wgpu-Viewports (2D+3D) im Tauri-Prozess: echtes Modell + gehrte Ecken
- native.rs: EINE winit-EventLoop hostet 2D- und 3D-Fenster (winit erlaubt nur eine Loop pro Prozess) — loest den RecreationAttempt-Panic zweier Loops; ersetzt native2d.rs/native3d.rs. Feature-gegated (native2d/native3d, einzeln oder zusammen). - render2d/render3d laden das ECHTE Modell aus assets/native2d_scene.json bzw. native3d_walls.json (Demo-Szene als Fallback); initialer Ausschnitt/Kamera aus den Modell-Grenzen gerahmt, initialer Redraw + gesetzte Fenstergroesse. - TS-Konverter toRenderScene/toWalls3d + scripts/dump-native-scene erzeugen die JSON aus sampleProject/generatePlan (npm run dump:native). - render2d: Scene.polylines fuer zusammenhaengende Umriss-/Zeichnungslaeufe → Gehrung statt Stumpfkappen an Wandecken/2D-Geometrien; MITER_LIMIT 4→8 (deckungsgleich mit SVG stroke-miterlimit:8 und WebGL2). - native3d-Feature + render3d-Pfad-Dep in der Tauri-Crate.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
// Erzeugt aus dem echten Modell (sampleProject → generatePlan) die JSON-Dateien,
|
||||
// die die nativen wgpu-Fenster (render2d/render3d) beim Start laden:
|
||||
// src-tauri/assets/native2d_scene.json (RScene: fills/outlines/lines)
|
||||
// src-tauri/assets/native3d_walls.json (RWall[])
|
||||
// Wird via scripts/dump-native-scene.mjs (esbuild-Bundle) unter Node ausgeführt.
|
||||
|
||||
import { writeFileSync, mkdirSync } from "node:fs";
|
||||
import { resolve } from "node:path";
|
||||
import { sampleProject } from "../src/model/sampleProject";
|
||||
import { generatePlan } from "../src/plan/generatePlan";
|
||||
import { planToRenderScene } from "../src/plan/toRenderScene";
|
||||
import { projectToWalls3d } from "../src/plan/toWalls3d";
|
||||
|
||||
const root = process.cwd();
|
||||
const outDir = resolve(root, "src-tauri", "assets");
|
||||
mkdirSync(outDir, { recursive: true });
|
||||
|
||||
// 2D: Erdgeschoss-Grundriss, alle sichtbaren Kategorien, Detailgrad „mittel".
|
||||
const floorId = "eg";
|
||||
const visibleCodes = new Set(sampleProject.layers.map((l) => l.code));
|
||||
const plan = generatePlan(sampleProject, floorId, visibleCodes);
|
||||
const scene = planToRenderScene(plan);
|
||||
|
||||
// 3D: alle Wände aller Geschosse, korrekt gestapelt.
|
||||
const walls = projectToWalls3d(sampleProject);
|
||||
|
||||
const scenePath = resolve(outDir, "native2d_scene.json");
|
||||
const wallsPath = resolve(outDir, "native3d_walls.json");
|
||||
writeFileSync(scenePath, JSON.stringify(scene));
|
||||
writeFileSync(wallsPath, JSON.stringify(walls));
|
||||
|
||||
console.log(
|
||||
`native2d_scene.json: ${scene.fills.length} fills, ${scene.outlines.length} outlines, ${scene.lines.length} lines`,
|
||||
);
|
||||
console.log(`native3d_walls.json: ${walls.length} walls`);
|
||||
console.log(`→ ${outDir}`);
|
||||
Reference in New Issue
Block a user