Informatique

Three.js : de la 3D dans le navigateur


C’est quoi Three.js ?

Three.js est une bibliothèque JavaScript qui simplifie l’affichage de 3D dans le navigateur. Elle s’appuie sur WebGL (et WebGPU) et évite d’écrire soi-même les shaders et la gestion bas niveau.

Les trois briques de base

Tout projet Three.js repose sur trois éléments :

  • une scène (Scene) qui contient les objets et les lumières ;
  • une caméra (PerspectiveCamera) qui définit le point de vue ;
  • un renderer (WebGLRenderer) qui dessine la scène dans un <canvas>.

Un objet visible (Mesh) associe une géométrie (la forme) et un matériau (l’aspect).

Exemple minimal

import * as THREE from 'three';

const renderer = new THREE.WebGLRenderer({ canvas, antialias: true });
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(50, 1, 0.1, 100);
camera.position.z = 5;

const mesh = new THREE.Mesh(
	new THREE.TorusKnotGeometry(1, 0.32, 160, 24),
	new THREE.MeshStandardMaterial({ color: 0x7c8cff }),
);
scene.add(mesh, new THREE.DirectionalLight(0xffffff, 2));

function render() {
	requestAnimationFrame(render);
	mesh.rotation.y += 0.01;
	renderer.render(scene, camera);
}
render();

La démo

Voici le résultat : un nœud torique en rotation. Le bouton permet de passer en mode filaire pour voir le maillage.

Avec Astro

Three.js est lourd : pour garder le site rapide, charge-le avec un import() dynamique, uniquement quand le canvas est visible. C’est ce que fait cette démo.

À retenir

Avec une scène, une caméra et un renderer, on obtient de la 3D en quelques lignes. Pour aller plus loin : lumières, textures, modèles glTF et contrôles de caméra (OrbitControls).