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" >