zurück zur Tech-Wiki
Tech-Wiki/Libraries
T
Three.js
WebGL-Library für 3D-Szenen, Kameras und Effekte im Browser.
·mrdoob·MIT
Übersicht
Was ist es?
Three.js ist die De-facto-Library für WebGL — Szenen, Kameras, Materialien, Loader, Post-Processing. Imperativ, low-level genug für volle Kontrolle, hoch-level genug für schnellen Einstieg.
Quickstart
pnpm add three
pnpm add -D @types/three
import * as THREE from 'three'
const scene = new THREE.Scene()
const camera = new THREE.PerspectiveCamera(75, w/h, 0.1, 1000)
const renderer = new THREE.WebGLRenderer({ antialias: true })
renderer.setSize(w, h)
scene.add(new THREE.Mesh(geo, mat))
renderer.render(scene, camera)
Typische Patterns
- GLTFLoader für 3D-Assets aus Blender / SketchUp.
requestAnimationFrame-Loop für Render-Updates, niemalssetInterval.- OrbitControls aus
three/examples/jsm/controls/für Mouse-Steuerung. - InstancedMesh für Tausende identischer Objekte (eine Draw-Call).
dispose()explizit aufrufen — Three managt kein GC für GPU-Ressourcen.
Gotchas / Was oft schiefgeht
- Memory-Leaks: Geometries, Materials, Textures müssen manuell
dispose()d werden — sonst frisst die GPU sich voll. - Renderer-Resize bei Window-Resize vergessen → verzerrtes Bild.
renderer.setSize+camera.aspect+updateProjectionMatrix. pixelRatioauf Retina nicht setzen → blurry. Aber:Math.min(2, window.devicePixelRatio)als Cap.- Three-Versionen brechen oft API (z. B.
OutlinePass,EffectComposer-Imports) — Changelog lesen. - In React: Lifecycle vs Render-Loop entkoppeln, sonst Re-Renders zerstören Szene.
Wann nicht?
Reines 2D oder einfache Charts → Canvas-API / PixiJS / D3 reichen. WebGPU-only-Projekte → Babylon.js oder native WebGPU. In React fast immer @react-three/fiber als Wrapper.
Eingesetzt in
Projekte(1)
Produkte(1)