- Threlte est un framework open source qui superpose le modèle de composants réactifs de Svelte à Three.js afin de créer rapidement des apps 3D interactives sur le Web
- Il permet de composer des objets Three.js avec des composants déclaratifs comme
<T.Mesh>, et de gérer les abonnements aux événements ainsi que les changements d’état via le cycle de vie de Svelte - Il fournit d’emblée le moteur physique Rapier, l’outil d’animation Theatre.js,
@threlte/gltfet@threlte/extras, ce qui réduit la configuration initiale d’une app 3D - Les comportements que les seuls composants
<T>ne suffisent pas à couvrir peuvent être étendus avec des Plugins typés, qui ajoutent des props et événements personnalisés - Dans l’écosystème Svelte, sa documentation et son ergonomie sont considérées comme des atouts pour les développeurs qui cherchent une bibliothèque THREE déclarative et des outils de création d’apps WebGL
Composer des scènes Three.js à la manière de Svelte
- Threlte est un framework 3D pour le Web construit sur Svelte et Three.js
- Il met l’accent sur la création rapide d’apps 3D interactives avec des composants déclaratifs et réactifs
- En s’appuyant sur le cycle de vie des composants Svelte, il permet de gérer les tâches suivantes
- Abonnement aux événements
- Gestion des changements d’état
- Connexion de comportements basés sur les composants
- L’exemple de code place une géométrie et un matériau dans
<T.Mesh>, et définit directement des props et événements commescale,position.xetonclick - La création d’une première scène est présentée dans Make Your First Scene
Outils fournis et mode d’extension
- Threlte met en avant une approche « batteries included » et fournit les outils nécessaires à la création d’apps 3D
- Rapier : moteur physique
- Theatre.js : bibliothèque d’animation avec une suite d’outils professionnelle de motion design
@threlte/gltf: outil qui convertit les fichiers GLTF en composants Threlte@threlte/extras: collection de composants et d’utilitaires nécessaires pour démarrer
- L’exemple Rapier combine
RigidBody,AutoColliderset<T.Mesh>pour composer un collider sphérique et un mesh - L’exemple
@threlte/extrascharge le modèle/models/flower.glbavec les composantsFloatetGLTF, puis définit les ombres, la position et l’échelle - L’utilisation de
@threlte/extrasest décrite dans la Documentation - Les Plugins sont un mécanisme d’extension qui ajoute à
<T>des props et événements personnalisés de manière type-safe- L’exemple de plugin enregistre une prop
lookAtavecinjectPlugin, puis appelleargs.ref.lookAt(args.props.lookAt)dans$effect - Les usages avancés sont détaillés dans la documentation Plugins
- L’exemple de plugin enregistre une prop
- Des documents de démarrage et des liens vers la communauté sont également fournis
1 commentaires
Commentaires sur Hacker News
En gros, nous travaillons sur deux choses. La première, c’est la prise en charge de Svelte 5 : Threlte a davantage de travail qu’une bibliothèque Svelte classique, car nous avons beaucoup modifié l’intérieur des composants pour rendre la gestion des événements plus efficace ou pour appliquer les transitions Svelte à des composants plutôt qu’à des éléments du DOM. Une bonne partie de cela est désormais intégrée à Svelte 5, et pour le reste, comme les transitions, il va falloir le mettre de côté pour le moment
La seconde, c’est Threlte Studio. Je ne sais pas encore très bien comment le présenter, mais on peut dire que c’est un éditeur qui permet de modifier visuellement le code. Il est extensible, donc chacun peut l’adapter à son propre workflow, et je suis curieux de voir jusqu’où ça peut aller. Si ça vous intéresse, vous pouvez nous suivre sur Discord http://chat.threlte.xyz ou sur X https://twitter.com/threlte
Comme Svelte est vraiment intuitif, j’ai naturellement pensé qu’il permettrait aussi de gérer efficacement un environnement 3D, donc j’ai fini par chercher « Svelte + three.js »
Ayant utilisé PlayCanvas et Babylon.js, j’attends avec beaucoup d’intérêt le développement de Threlte Studio. J’aime le fait que DREI expose tout comme un répertoire, mais ça m’a fait penser à un « outil studio » plus familier. Je me demande quel est le calendrier prévu pour Threlte Studio
Celui que je préfère, c’est l’exemple de galerie d’images. Je l’ai modifié pour qu’un clic sur une image fasse entrer dans une autre pièce, donc dans une autre galerie
https://github.com/pmndrs/drei est une collection d’exemples et d’utilitaires
Ce qui m’a le plus marqué, c’est l’exemple qui utilise des modèles GLTF, une texture vidéo sur du texte, des reflets, etc., et sa version autonome est ici : https://bfplr.csb.app/
Encore plus impressionnant, il y a ce sandbox qui montre que le code n’est pas si long : https://codesandbox.io/p/sandbox/ground-reflections-and-vide...
Ajouter une couche au-dessus de three.js demande beaucoup de travail et peut être assez prise de tête, mais le potentiel est énorme. three.js a complètement changé ma façon de voir le développement web, et si vous utilisez Svelte, ça vaut vraiment le coup d’y jeter un œil
Le Technical Outline, en particulier l’explication simplifiée de la physique automobile, est assez instructif. C’est essentiellement un clone de Trackmania avec en plus un éditeur de circuits, et ça semble être un exemple qui exploite au maximum les avantages de Svelte/Threlte
Je me demande si les gens veulent vraiment de la 3D déclarative. X3D/VRML existe depuis plus de 25 ans et A-Frame depuis 8 ans, mais aucun des deux n’est devenu vraiment grand public, et beaucoup d’autres formats sont apparus puis ont disparu. En revanche, three.js et la 3D impérative/procédurale semblent globalement bien se porter ; je me demande pourquoi
Ce n’est pas extrêmement bien optimisé, et tous les modèles sont des modèles gratuits de Sketchfab. Comme c’est un environnement de jeu 3D, avoir un PC récent aide
Je pense que beaucoup d’interfaces pourraient tirer parti d’un usage de la 3D