games· 8 min read

Comprendre Three.js pour le développement de jeux navigateur

Three.js rend les graphismes 3D accessibles dans le navigateur sans nécessiter de moteurs de jeu natifs. Ce guide couvre les concepts clés du développement Three.js, du setup de scène et de l'éclairage à l'intégration physique et l'optimisation des performances.

João CastroJoão Castro
Comprendre Three.js pour le développement de jeux navigateur

Mis à jour le 18 juillet 2026 — rafraîchi avec les données actuelles de la plateforme sur la génération de jeux navigateur et les workflows 3D assistés par IA.

Qu'est-ce que Three.js et pourquoi compte-t-il pour les jeux navigateur ?

Three.js est la bibliothèque 3D JavaScript la plus utilisée. Elle abstrait la complexité du WebGL brut dans une API conviviale qui gère les graphes de scène, les caméras, l'éclairage, les matériaux et le rendu — un jeu qui exigerait des milliers de lignes de WebGL brut en demande des centaines en Three.js. Combinée à un moteur physique comme cannon-es, elle propulse des expériences 3D interactives — des configurateurs produit aux jeux navigateur complets — qui tournent dans tout navigateur moderne sans plugin ni installation.

Comprendre ces concepts clés compte, que vous écriviez Three.js à la main ou que vous travailliez avec du code de jeu généré par IA. Les jeux et expériences interactives sont la catégorie d'apps n°2 la plus générée sur VULK avec 5,4 % de tous les projets, et la plateforme a enregistré 2 438 requêtes utilisateur mentionnant la 3D ou WebGL (données de la plateforme VULK, juillet 2026, N = 11 355 projets) — beaucoup de gens lisent donc et modifient du code Three.js qu'ils n'ont pas écrit de zéro. Ce guide vous donne le modèle mental pour le faire avec assurance.

Quels sont les blocs fondamentaux d'une application Three.js ?

Toute application Three.js se construit autour de trois objets fondamentaux — et d'une boucle qui les relie :

Concept Rôle Détail clé
Scene Conteneur de tous les objets 3D, lumières, effets La racine du graphe de scène
Camera Le point de vue d'observation de la scène Généralement PerspectiveCamera pour les jeux
Renderer Dessine scène + caméra sur un <canvas> WebGL sous le capot
Boucle de rendu Tourne ~60×/seconde Met à jour positions, physique, puis rend
Mesh Un objet visible Geometry (forme) + Material (apparence)
Lumières Rendent les matériaux visibles et les scènes réalistes Ambient, directional, point, spot, hemisphere

La boucle de rendu est le battement de cœur de toute application Three.js : elle met à jour les positions des objets, applique les calculs physiques et ordonne au renderer de dessiner la frame courante. La garder efficace est la clé d'une performance fluide.

Comment fonctionnent les meshes, matériaux et géométries ?

Les objets visibles dans Three.js s'appellent des Meshes, et chaque Mesh est une combinaison de Geometry (la forme) et de Material (l'apparence). La Geometry définit les sommets, faces et normales qui composent une forme 3D. Le Material définit comment la lumière interagit avec cette forme — sa couleur, sa réflectivité, sa rugosité et sa transparence.

Three.js propose à la fois des matériaux basiques (MeshBasicMaterial, qui ignore l'éclairage) et des matériaux à rendu physiquement réaliste (PBR : MeshStandardMaterial, MeshPhysicalMaterial) qui simulent une interaction lumineuse réaliste. Les matériaux PBR utilisent des cartes de metalness et roughness pour créer des surfaces convaincantes comme du métal brossé, du béton usé ou du verre poli.

Comment fonctionne l'éclairage dans Three.js ?

L'éclairage est ce qui rend les scènes 3D réelles. Three.js propose plusieurs types de lumières : AmbientLight pour l'illumination de base, DirectionalLight pour des rayons parallèles façon soleil, PointLight pour des sources omnidirectionnelles comme des ampoules, SpotLight pour des faisceaux focalisés et HemisphereLight pour le dégradé ciel-sol en extérieur. La plupart des scènes utilisent une combinaison de lumière ambiante et directionnelle comme base, avec des lumières ponctuelles et spots pour des effets spécifiques.

Les ombres ajoutent une couche de réalisme mais ont un coût en performance. Chaque lumière projetant des ombres exige une passe de rendu supplémentaire. Pour les jeux navigateur, limiter les lumières à ombres à une ou deux directionnelles est une optimisation courante.

Comment ajouter de la physique avec cannon-es ?

Three.js gère le rendu, mais ne simule pas la physique. Pour un mouvement réaliste, des collisions et de la gravité, la plupart des jeux navigateur associent Three.js à cannon-es (un fork maintenu de cannon.js). Le moteur physique exécute sa propre boucle de simulation, et vous synchronisez les positions des corps physiques avec celles des meshes Three.js à chaque frame.

Les concepts clés de cannon-es incluent les Bodies (objets avec masse et forme), les Shapes (sphères, boîtes, cylindres, enveloppes convexes) et le World (le conteneur de simulation avec gravité et détection de collisions). Pour la physique des véhicules, cannon-es fournit une classe RaycastVehicle qui simule suspension, direction et friction des roues.

Comment charger des modèles 3D ?

Si les formes simples peuvent être créées avec la géométrie intégrée, les objets complexes comme les personnages, véhicules et bâtiments sont typiquement créés dans des logiciels de modélisation 3D et chargés en fichiers GLB ou GLTF. Le GLTFLoader de Three.js s'en charge, parsant le fichier et renvoyant un graphe de scène que vous ajoutez à votre scène.

GLTF (GL Transmission Format) est devenu le standard de la 3D web parce qu'il supporte meshes, matériaux, textures, animations et hiérarchie de scène dans un unique format binaire efficace. L'optimisation des modèles — réduire le nombre de polygones, compresser les textures, utiliser des layouts UV efficaces — est importante pour la performance navigateur.

Three.js game development

Quelles optimisations de performance comptent le plus dans le navigateur ?

Les jeux navigateur font face à des contraintes de performance plus strictes que les applications natives. Stratégies clés :

  • Rendu instancié : Dessiner de nombreuses copies de la même géométrie (arbres, bâtiments, particules) en un seul draw call
  • Niveau de détail (LOD) : Afficher des modèles simplifiés pour les objets lointains, détaillés pour les proches
  • Frustum culling : Sauter le rendu des objets hors du champ de la caméra (Three.js le fait automatiquement)
  • Atlas de textures : Combiner plusieurs textures en une seule image pour réduire les draw calls
  • Object pooling : Réutiliser les objets au lieu de les créer et détruire, pour réduire le garbage collection

Comment structurer une boucle de jeu ?

Une boucle de jeu typique en Three.js suit ce schéma : lire les entrées (clavier, souris, manette), mettre à jour l'état du jeu (position du joueur, comportement des PNJ, pas de physique), synchroniser les corps physiques avec les meshes, mettre à jour la caméra et rendre la frame. Garder chaque étape efficace assure un jeu fluide à 60fps.

Pour les jeux complexes, séparer la logique en modules — une classe Engine pour le rendu et les boucles, une classe World pour la géométrie des niveaux, une classe Character pour le contrôle du joueur, une classe Vehicle pour la conduite — garde le code organisé et maintenable.

Faut-il encore apprendre tout cela à la main ?

De moins en moins — mais les concepts comptent toujours. La génération de code par IA produit aujourd'hui des jeux Three.js complets à partir de descriptions en langage naturel : sur VULK, un prompt comme « construis un endless runner 3D avec obstacles et compteur de score » génère le setup de scène, la boucle de jeu, l'intégration physique et la gestion des entrées comme du vrai code éditable, rendu dans un aperçu en direct en quelques secondes. La génération est vérifiée — le render gate de VULK charge la scène dans un vrai navigateur et rejette la génération si le canvas rend une page blanche.

Ce que les concepts de ce guide vous donnent, c'est la capacité d'itérer intelligemment : savoir que les ombres coûtent des passes de rendu, que l'instancing réduit les draw calls et que les corps physiques se synchronisent aux meshes à chaque frame vous permet de diriger l'IA avec précision — et d'éditer le code généré quand il vous faut du non-standard.


FAQ

Three.js suffit-il pour de vrais jeux, ou faut-il Unity ou Unreal ?

Pour les jeux 3D distribués par navigateur — arcade, runners, puzzles, expériences liées à un produit — Three.js est le standard et délivre 60fps sur du matériel moderne. Pour des titres d'échelle AAA avec mondes massifs et cibles console, les moteurs natifs gagnent encore. L'avantage de Three.js est la distribution sans installation : votre jeu est une URL.

Quel est le moyen le plus rapide d'obtenir un jeu Three.js fonctionnel ?

Décrivez-le à un générateur IA. Sur VULK, les prompts de jeux déclenchent un pipeline spécifique Three.js qui génère la scène, la boucle de jeu, la physique et la gestion des entrées comme projet Vite avec aperçu en direct. Les jeux et expériences interactives sont la catégorie n°2 de la plateforme avec 5,4 % de toutes les générations (données de la plateforme VULK, juillet 2026). Vous itérez ensuite par la conversation et déployez sur Cloudflare Pages en un clic.

Faut-il un moteur physique pour chaque jeu ?

Non. Beaucoup de jeux navigateur à succès utilisent des maths simples (tests de bounding box, vélocité manuelle) plutôt qu'une simulation complète. Ajoutez cannon-es quand vous avez besoin de gravité réaliste, d'empilement, de collisions entre de nombreux corps ou de dynamique de véhicules.

Quelle taille peut atteindre un jeu Three.js avant que la performance souffre ?

Pas de limite fixe — cela dépend des draw calls, du nombre de polygones et de la mémoire de textures. Avec instancing, LOD et atlas de textures, des scènes de dizaines de milliers d'objets tournent fluidement. Le goulot habituel : les draw calls — gardez-les dans les basses centaines pour le mobile.

Puis-je exporter et auto-héberger un jeu généré avec VULK ?

Oui. Les jeux générés sont des projets standard Vite + Three.js. Vous pouvez exporter la source complète en ZIP ou la pousser sur GitHub, puis héberger le build statique n'importe où. VULK est payant uniquement (pas d'offre gratuite) : plans à partir de Builder 19,99 $/mois, avec un accès complet d'essai de 3 jours dès 3,99 $ crédité sur votre premier mois.


Que vous construisiez un visualiseur produit, une simulation éducative ou un jeu navigateur complet, Three.js fournit la fondation — et avec la génération IA qui produit des scènes Three.js vérifiées à partir de langage naturel, la barrière d'entrée n'a jamais été aussi basse. Commencez sur vulk.dev.

Publié par João Castro · 8 min read

À lire ensuite

Tous les articles
Support VULK

En ligne

Bonjour ! Comment puis-je vous aider aujourd'hui ?

Sujets populaires

Support IA • support.vulk.dev

Comprendre Three.js pour le développement de jeux navigateur — Blog | VULK