Three.js
Intégration
2025 - 2026
Hold on to
your butts
Mise en place
Jouer avec codepen c'est cool pour tester des bouts de codes sans devoir considérer tout les à-côtés. Nous allons voir comment mettre en place three.js dans un projet web, qui peut être mis en ligne.
Structure
- index.html
- js/main.js
- css/reset.css
- css/main.css
- assets/
Html
L'HTML reste simple, avec la balise head qui contiendra les bases des métadonnées et nos fichiers .css & .js. La petite sutbilité est le type="module" de notre balise script qui permet d'utiliser import dans notre javascript.
Le body reste basique, notons les classes écritent en BEM et que nous englobons notre canvas dans une div.canvas__wrapper qui nous servira de réceptacle sur lequel on se basera pour gérer la taille de notre canvas.
CSS
Les styles sont minimes, un reset.css pour éviter les styles par défaut et un main.css qui contient uniquement la taille et le comportement de notre canvas dans la page.
JS
Voici la structure de notre main.js :
Imports
Les 2 premières lignes importent des scripts externes. Dans notre cas, nous aurons besoin de Three.js et de Tweakpane.
Variables
Nous allons avoir besoin de stocker certaines informations avec 2 objets :
- settings : contient les données générales.
- threejsOptions : contient les options à passer à la construction de moteur de rendu WebGLRenderer.
Class Viewer
Cette classe va gérer tout les aspects de notre canvas Three.js via des méthodes (=fonctions) :
- contructor
- setRenderer
- render
- populate
- resize
Appels &
évènements
La dernière partie s'occupe de créer l'instance de notre class Viewer et d'ajouter un évènement resize pour s'assurer que le canvas reste aux bonnes dimensions.
Viewer
constructor
Une class en javascript doit avoir la méthode constructor définie pour être valide et fonctionner. Cette fonction est appelé via le mot clé new et permet d'indiquer comment l'instance est créée.
new est toujours suivi du nom de la class suivi de ( ). Ex: new Viewer();Ici nous allons simplement stocker le canvas dans la propriété canvas de notre instance et appeler la méthode setRenderer( ) avec nos options.
setRenderer
Gère la mise en place de notre moteur de rendu, de la camera et de la scene. Les fonctions resize( ) et populate( ) sont appelées ensuite.
render
Cette méthode rend plus facile l'appel d'un rendu en passant la scene et la camera, préalablement créées, directement dans la fonction render du moteur de rendu.
populate
La fonction qui gère l'ajout de contenu dans notre scene, et appele la méthode render( ) de notre instance :
resize
S'occupe de redimmensionner le canvas via le moteur de rendu, de changer son aspect-ratio et mettre à jour la caméra. Cette fonction sera appelée par l'évènement resize du window à la fin du fichier main.js.