zurück zur Tech-Wiki
Tech-Wiki/Libraries
R
React Three Fiber
React-Renderer für Three.js — deklarative 3D-Szenen.
·Poimandres·MIT
Übersicht
Was ist es?
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.
Quickstart
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>
)
}
Typische Patterns
@react-three/dreifür 90% der Three-Helper (Loader, Controls, Shaders, Environment, Text).useFrame((state, delta) => {...})für Per-Frame-Updates — niemalsuseEffectfür Animationen.useGLTF+useTexturemit Suspense für Asset-Loading.- Refs auf Three-Objekte:
const ref = useRef<THREE.Mesh>(null!) useFrame(() => { ref.current.rotation.y += 0.01 }) - Performance-Tools aus drei:
<Stats />,<Perf />,<Bvh />für Hit-Tests.
Gotchas / Was oft schiefgeht
<Canvas>in Next.js: muss"use client", Dynamic-Import mit{ ssr: false }.- Camera/Renderer-Props nach Init geändert → werden ignoriert; via Ref oder
<Canvas key>neu mounten. - Events im Three-Space sind raycasted — performance-kritisch bei vielen Meshes.
<Bvh>aus drei beschleunigt. dispose()macht R3F automatisch bei Unmount — kein manuelles Cleanup für Standard-Cases.- State-Updates in
useFrametriggern Re-Render → Performance-Killer. Mutationen direkt auf Refs.
Wann nicht?
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.
Eingesetzt in
Produkte(1)