Tobias Ludwig
Start
ServicesWeb, Apps, Backend und KIPlanerBausteine wählen, Preis sofort sehenBranchen-DemosBeispielseiten für Handwerk, Praxis, GastroReferenzenKundenprojekte mit ErgebnisMatch-CheckPasst das Vorhaben zu mir?Über michWer hinter der Seite steht
ProjekteEigene Software und Open SourceProdukteFertige Apps und WerkzeugeFlutterPlugins und PaketeBlogNotizen aus der Praxis
ToolsKleine Helfer im BrowserTech-WikiWerkzeuge und Stacks, kurz erklärtShowcaseDemos, Shader, Inszenierungen
Support & HilfeHilfe zu laufenden ProjektenMein KontoTickets und Zugänge
Erstgespräch
Erstgespräch buchenKostenloser Kennenlern-CallKontakt schreibenNachricht per Formular
$whoami
Tobias Ludwig
DevOps · Application Manager · Software Engineer
$ls /pages
tobias-ludwig/projekte/kontakt/kalender/impressum/datenschutz/
$git remote
github.com/nexas105
online·next.js 16·hono·postgresql
© 2026 tjl·stay curious_
Ambient OFF
Weiter so… ↓↓ ← → ← → B A
zurück zur Tech-Wiki
Tech-Wiki/Libraries
T

Three.js

WebGL-Library für 3D-Szenen, Kameras und Effekte im Browser.

·mrdoob·MIT
WebsiteDocsRepository

Ü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, niemals setInterval.
  • 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.
  • pixelRatio auf 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)

  • Bewerbungsplattform

Referenzen(2)

  • frank-klingebiel.de
  • alexander-mittag.de

Produkte(1)

  • KODOYA

Kategorie

Libraries

Tags

3dwebgl

Aliase

three · threejs

Slug

three-js