feat: Production-ready configurator with Dutch standards, pricing & visual UI

- Update door-models.ts: 7mm VSG 33.1 safety glass, 15mm offset, Taats pivot 60mm
- Add pricing engine (lib/pricing.ts): steel €45/m + glass €140/m² + €650 base
- Wire reactive pricing into Zustand store on every config change
- Fix 3D materials: glass thickness 0.007m, corrected roughness/metalness
- Upgrade scene: apartment environment, wider contact shadows
- Add Dutch height presets: Renovatie 2015mm, Nieuwbouw 2315mm, Plafondhoog 2500mm
- Replace text buttons with visual SVG tiles for door type & grid selection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ubuntu
2026-02-14 01:11:55 +00:00
parent 9319750912
commit 87be70e78b
7 changed files with 349 additions and 83 deletions

View File

@@ -54,27 +54,25 @@ function SteelMaterialTextured({ color, finish }: { color: string; finish: strin
<meshStandardMaterial
map={texture}
color={color}
roughness={0.6}
metalness={0.7}
roughness={0.7}
metalness={0.6}
envMapIntensity={1.5}
/>
);
} catch (error) {
// Fallback to solid color if texture fails
return <SteelMaterialFallback color={color} />;
}
}
/**
* Fallback Steel Material (Solid Color)
* Used when textures fail to load or as initial state
*/
function SteelMaterialFallback({ color }: { color: string }) {
return (
<meshStandardMaterial
color={color}
roughness={0.6}
metalness={0.7}
roughness={0.7}
metalness={0.6}
envMapIntensity={1.5}
/>
);
@@ -88,12 +86,12 @@ const GlassMaterial = () => (
<meshPhysicalMaterial
transmission={0.98}
roughness={0.05}
thickness={0.5}
thickness={0.007}
ior={1.5}
color="#eff6ff"
transparent
opacity={0.98}
envMapIntensity={0.8}
envMapIntensity={1.0}
/>
);