diff --git a/public/assets/models3d/bmu-switch-mosfet.glb b/public/assets/models3d/bmu-switch-mosfet.glb
deleted file mode 100644
index 40876e4..0000000
Binary files a/public/assets/models3d/bmu-switch-mosfet.glb and /dev/null differ
diff --git a/public/assets/models3d/bmu-v2-full.glb b/public/assets/models3d/bmu-v2-full.glb
deleted file mode 100644
index 893a38a..0000000
Binary files a/public/assets/models3d/bmu-v2-full.glb and /dev/null differ
diff --git a/public/assets/models3d/pcb-bmu-v2.glb b/public/assets/models3d/pcb-bmu-v2.glb
deleted file mode 100644
index 449aba5..0000000
Binary files a/public/assets/models3d/pcb-bmu-v2.glb and /dev/null differ
diff --git a/src/components/WebGLBackground.tsx b/src/components/WebGLBackground.tsx
index 51eef08..79ef2d1 100644
--- a/src/components/WebGLBackground.tsx
+++ b/src/components/WebGLBackground.tsx
@@ -44,20 +44,6 @@ function RealPCB() {
);
}
-/* ---------- Switch MOSFET board ---------- */
-function SwitchBoard() {
- let glb: any = null;
- try { glb = useGLTF('/assets/models3d/bmu-switch-mosfet.glb'); } catch {}
- if (!glb?.scene) return null;
- return (
-
- );
-}
/* ---------- GLB Component placement ---------- */
function GLBComponent({ modelUrl, position, scale = 1, rotation = [0, 0, 0] as [number, number, number] }: {
@@ -289,7 +275,7 @@ function ComponentCluster() {
return (
{/* Zone 1 — MCU area (top-right of board) */}
-
+
@@ -300,7 +286,7 @@ function ComponentCluster() {
{/* Zone 2 — Analog / Op-amp area (left of board) */}
-
+
@@ -311,7 +297,7 @@ function ComponentCluster() {
{/* Zone 3 — Power stage (bottom-right) */}
-
+
@@ -322,7 +308,7 @@ function ComponentCluster() {
{/* Zone 4 — Communication (bottom-left) */}
-
+
@@ -332,7 +318,7 @@ function ComponentCluster() {
{/* Zone 5 — DSP / Neural (center-top) */}
-
+
@@ -341,7 +327,7 @@ function ComponentCluster() {
{/* Zone 6 — Contact area (center) */}
-
+
{/* Scattered passives */}
{Array.from({ length: 15 }).map((_, i) => (
@@ -384,16 +370,19 @@ function CameraLight() {
}
/* ---------- Camera — orbits around PCB, zooms on scroll ---------- */
-// PCB at scale=1 in mm. Board ~80x60mm. Camera needs to be ~200mm away for overview.
+// PCB bounds: X[-74,81] Y[-43,63] Z[-17,150] mm. Center ≈ (4, 10, 66).
+// After rotation -π/2 on X, the Y/Z swap: model Y→scene -Z, model Z→scene Y.
+// So in scene coords, board center ≈ (4, 66, -10), extends ~155mm in Y (height).
+const BOARD_CENTER = [4, 66, -10];
const CAMERA_STOPS = [
- { scroll: 0.00, pos: [0, 200, 150], look: [0, 0, 0] }, // Overview — full board
- { scroll: 0.12, pos: [40, 80, -10], look: [30, 0, -15] }, // MCU zone
- { scroll: 0.28, pos: [-35, 80, 0], look: [-30, 0, -10] }, // Analog zone
- { scroll: 0.42, pos: [35, 80, 30], look: [25, 0, 25] }, // Power zone
- { scroll: 0.56, pos: [-35, 80, 30], look: [-30, 0, 25] }, // Formation zone
- { scroll: 0.70, pos: [0, 90, -40], look: [0, 0, -30] }, // Missions zone
- { scroll: 0.85, pos: [0, 50, 10], look: [0, 0, 5] }, // Contact zone (close)
- { scroll: 1.00, pos: [0, 250, 150], look: [0, 0, 0] }, // Pull back overview
+ { scroll: 0.00, pos: [0, 250, 120], look: [4, 66, -10] }, // Overview — sees full assembly
+ { scroll: 0.12, pos: [50, 140, 20], look: [40, 80, -10] }, // MCU zone (top-right)
+ { scroll: 0.28, pos: [-40, 140, 20], look: [-30, 80, -10] }, // Analog zone (top-left)
+ { scroll: 0.42, pos: [40, 40, -20], look: [30, 20, -10] }, // Power zone (bottom-right)
+ { scroll: 0.56, pos: [-40, 40, -20], look: [-30, 20, -10] }, // Formation zone (bottom-left)
+ { scroll: 0.70, pos: [0, 120, 40], look: [0, 100, -10] }, // Missions zone (mid)
+ { scroll: 0.85, pos: [4, 80, 5], look: [4, 66, -10] }, // Contact (center close)
+ { scroll: 1.00, pos: [0, 300, 150], look: [4, 66, -10] }, // Pull back
];
function OrbitCamera() {
@@ -478,7 +467,7 @@ export default function WebGLBackground() {
aria-hidden="true"
>