From 7d9b5e49adcf61287ddcd26c987494ac0a7e3d40 Mon Sep 17 00:00:00 2001 From: hypercross Date: Sat, 15 Aug 2026 12:42:05 +0800 Subject: [PATCH] feat(web): light 3D scene with image-based lighting Replace the hand-placed light rig with an Environment built from Lightformers, giving MeshStandardMaterial objects consistent PBR lighting and richer color. Keep ContactShadows, which needs no light. --- apps/web/src/components/viewers/Scene.tsx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/web/src/components/viewers/Scene.tsx b/apps/web/src/components/viewers/Scene.tsx index b559a33..a22482f 100644 --- a/apps/web/src/components/viewers/Scene.tsx +++ b/apps/web/src/components/viewers/Scene.tsx @@ -1,7 +1,7 @@ import { Suspense, useEffect, useRef, useState, type ReactNode } from 'react'; import { Icon } from '@iconify/react'; import { Canvas } from '@react-three/fiber'; -import { Bounds, ContactShadows, OrbitControls, useProgress } from '@react-three/drei'; +import { Bounds, ContactShadows, Environment, Lightformer, OrbitControls, useProgress } from '@react-three/drei'; import { BrightnessContrast, EffectComposer, ToneMapping, Vignette } from '@react-three/postprocessing'; import { ToneMappingMode } from 'postprocessing'; @@ -73,7 +73,7 @@ export default function Scene({
@@ -93,10 +93,12 @@ export default function Scene({ dpr={[1, 2]} gl={{ antialias: true, alpha: true }} > - - - - + + + + + + {children} @@ -121,8 +123,8 @@ export default function Scene({ /> - - + +