diff --git a/public/assets/fonts/orbitron-bold.ttf b/public/assets/fonts/orbitron-bold.ttf new file mode 100644 index 0000000..374f46f Binary files /dev/null and b/public/assets/fonts/orbitron-bold.ttf differ diff --git a/public/assets/fonts/rajdhani-bold.ttf b/public/assets/fonts/rajdhani-bold.ttf new file mode 100644 index 0000000..33205f3 --- /dev/null +++ b/public/assets/fonts/rajdhani-bold.ttf @@ -0,0 +1,11 @@ + + + + + Error 404 (Not Found)!!1 + + +

404. That’s an error. +

The requested URL /s/ajdhani/v17/LDI2apCSOBg7S-QT7pa8FsOs.ttf was not found on this server. That’s all we know. diff --git a/public/assets/fonts/space-mono-bold.ttf b/public/assets/fonts/space-mono-bold.ttf new file mode 100644 index 0000000..51cd703 Binary files /dev/null and b/public/assets/fonts/space-mono-bold.ttf differ diff --git a/public/assets/models3d/bmu-switch-mosfet.glb b/public/assets/models3d/bmu-switch-mosfet.glb new file mode 100644 index 0000000..40876e4 Binary files /dev/null and b/public/assets/models3d/bmu-switch-mosfet.glb differ diff --git a/public/assets/models3d/bmu-v2-full.glb b/public/assets/models3d/bmu-v2-full.glb new file mode 100644 index 0000000..893a38a Binary files /dev/null and b/public/assets/models3d/bmu-v2-full.glb differ diff --git a/src/components/AtomGlitch.tsx b/src/components/AtomGlitch.tsx index c8c25d9..ea96851 100644 --- a/src/components/AtomGlitch.tsx +++ b/src/components/AtomGlitch.tsx @@ -171,6 +171,26 @@ function Nucleus() { } }); + // Logo refs — 3 copies at different rotations + const logo1Ref = useRef(null); + const logo2Ref = useRef(null); + const logo3Ref = useRef(null); + + useFrame(({ clock, camera }) => { + const t = clock.getElapsedTime(); + // Each logo copy rotates on a different axis + if (logo1Ref.current) { + logo1Ref.current.rotation.y = t * 0.8; + logo1Ref.current.quaternion.copy(camera.quaternion); + } + if (logo2Ref.current) { + logo2Ref.current.rotation.set(t * 0.5, t * 0.3, 0); + } + if (logo3Ref.current) { + logo3Ref.current.rotation.set(0, t * -0.4, t * 0.6); + } + }); + return ( {/* outer energy shell */} @@ -188,6 +208,26 @@ function Nucleus() { + + {/* ER logo — 3 copies at center, different rotations */} + + + ER + + + + + + ER + + + + + + ER + + + ); } @@ -233,7 +273,7 @@ function EnergyArc({ color }: { color: THREE.Color }) { /* ---------- 3D Circular / Orbital text ---------- */ const LAUNCH = new Date('2026-05-01T00:00:00+02:00').getTime(); -const FONT_URL = '/assets/fonts/manrope-regular.ttf'; +const FONT_URL = '/assets/fonts/orbitron-bold.ttf'; function pad(n: number) { return String(n).padStart(2, '0'); } diff --git a/src/components/WebGLBackground.tsx b/src/components/WebGLBackground.tsx index 7e66e94..0260e1f 100644 --- a/src/components/WebGLBackground.tsx +++ b/src/components/WebGLBackground.tsx @@ -22,24 +22,39 @@ const COLORS = { silkscreen: new THREE.Color('#e8e8d0'), }; -const FONT_URL = '/assets/fonts/manrope-regular.ttf'; +const FONT_URL = '/assets/fonts/orbitron-bold.ttf'; /* ---------- Scroll state ---------- */ let scrollProgress = 0; -/* ---------- Real PCB Board ---------- */ +/* ---------- Real PCB Board (full 3D with components from FreeCAD) ---------- */ function RealPCB() { let glb: any = null; - try { glb = useGLTF('/assets/models3d/pcb-bmu-v2.glb'); } catch {} + try { glb = useGLTF('/assets/models3d/bmu-v2-full.glb'); } catch {} if (!glb?.scene) return null; return ( + ); +} + +/* ---------- 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 ( + ); } @@ -377,6 +392,7 @@ function PCBScene() { + @@ -440,7 +456,8 @@ export default function WebGLBackground() { } /* Preload all models */ -useGLTF.preload('/assets/models3d/pcb-bmu-v2.glb'); +useGLTF.preload('/assets/models3d/bmu-v2-full.glb'); +useGLTF.preload('/assets/models3d/bmu-switch-mosfet.glb'); useGLTF.preload('/assets/models3d/resistor_0603.glb'); useGLTF.preload('/assets/models3d/capacitor_0805.glb'); useGLTF.preload('/assets/models3d/inductor_0805.glb');