我在Next.js中使用react-three-fiber并且正在渲染包含画布的组件并通过使用 Next 的导入和禁用的服务器端渲染加载 glTF 文件。访问/重新加载页面时,glTF 会按预期加载并显示。useGLTFoader
dynamic
我的问题是,切换页面时出现以下错误:
三.WebGLRenderer:上下文丢失。
再次导航回页面时,尽管画布可用,但模型不可见,并且对指定操作进行屏幕截图的组件也可以正常工作(但也不显示模型)。
保存画布并渲染 glTF 的组件非常基本,如下所示:
export const Rendering = ({
resourcePath,
}) => {
const gltf = useGLTFLoader(resourcePath, false);
return (
<Canvas
colorManagement
shadowMap
camera={{ position: new Vector3(1, 1, 1) }}
pixelRatio={window.devicePixelRatio}
gl={{ preserveDrawingBuffer: true }}
>
<MakeScreenshot />
<primitive object={gltf.scene} position={[0, -1, 0} />
<ambientLight intensity={0.8} />
<pointLight intensity={1} position={[0, 6, 0]} />
</Canvas>
);
};
导入(如此处所述)是这样完成的:
const Rendering = dynamic(() => import('../rendering/rendering'), {
ssr: false,
});