"use client"; import { useThree } from "@react-three/fiber"; import { useLayoutEffect } from "react"; import { PMREMGenerator } from "three"; import { RoomEnvironment } from "three/addons/environments/RoomEnvironment.js"; // Generate studio reflections locally: an unavailable HDR CDN must not hide GLB models. export function LocalStudioEnvironment() { const { gl, scene } = useThree(); useLayoutEffect(() => { const room = new RoomEnvironment(); const generator = new PMREMGenerator(gl); const previous = scene.environment; let target: ReturnType | undefined; try { target = generator.fromScene(room, 0.04); scene.environment = target.texture; } catch { // Direct lights still render the model on devices unable to build a PMREM. } finally { room.dispose(); generator.dispose(); } return () => { if (scene.environment === target?.texture) scene.environment = previous; target?.dispose(); }; }, [gl, scene]); return null; }