React-Renderer für Three.js — deklarative 3D-Szenen.
React Three Fiber (R3F) ist der React-Renderer für Three.js — du baust 3D-Szenen als JSX-Komponenten, R3F reconcilt das auf den Three-Scene-Graph. Alles, was in Three geht, geht in R3F.
pnpm add three @react-three/fiber @react-three/drei
import { Canvas } from '@react-three/fiber'
import { OrbitControls } from '@react-three/drei'
export default function Scene() {
return (
<Canvas camera={{ position: [3, 3, 3] }}>
<ambientLight intensity={0.5} />
<mesh>
<boxGeometry />
<meshStandardMaterial color="hotpink" />
</mesh>
<OrbitControls />
</Canvas>
)
}
@react-three/drei für 90% der Three-Helper (Loader, Controls, Shaders, Environment, Text).useFrame((state, delta) => {...}) für Per-Frame-Updates — niemals useEffect für Animationen.useGLTF + useTexture mit Suspense für Asset-Loading.const ref = useRef<THREE.Mesh>(null!)
useFrame(() => { ref.current.rotation.y += 0.01 })
<Stats />, <Perf />, <Bvh /> für Hit-Tests.<Canvas> in Next.js: muss "use client", Dynamic-Import mit { ssr: false }.<Canvas key> neu mounten.<Bvh> aus drei beschleunigt.dispose() macht R3F automatisch bei Unmount — kein manuelles Cleanup für Standard-Cases.useFrame triggern Re-Render → Performance-Killer. Mutationen direkt auf Refs.Wenn dein Code zu 100% imperativ Three-Logik ist (Game-Engine-mäßig) → reines Three.js. Sehr custom Render-Pipelines → Three direkt mit eigener Loop.