Flutter passe à la vitesse supérieure avec le rendu 3D natif
Pendant longtemps, lorsqu'on évoquait la 3D dans Flutter, la réponse était presque toujours la même : intégrer un moteur externe, afficher une WebView ou utiliser une scène OpenGL plus ou moins maintenue.
Avec l'arrivée de Flutter GPU et du package flutter_scene, les choses commencent à changer.
Pour me faire une idée des possibilités offertes par cette nouvelle pile graphique, j'ai réalisé une petite démonstration : PadForge, une application Flutter permettant de personnaliser une manette Xbox en temps réel.
L'objectif n'était pas de produire une application complète mais d'explorer les performances, la simplicité de l'API et le potentiel qu'offre cette nouvelle génération de rendu graphique.
Une véritable scène 3D
La première surprise est la simplicité de l'API.
Une scène est créée en quelques lignes de code.
On y charge un modèle GLB, puis on peut manipuler sa matrice de transformation pour :
- déplacer le modèle ;
- modifier son orientation ;
- changer son échelle ;
- animer les différents éléments de la scène.
On retrouve finalement une approche assez proche de celle d'un moteur 3D classique, mais directement intégrée à Flutter.
Une interface Flutter... avec une scène 3D
Ce qui est particulièrement intéressant, c'est que la scène 3D devient simplement un widget Flutter.
L'interface utilisateur continue d'utiliser les widgets habituels :
- boutons ;
- sliders ;
- panneaux de configuration ;
- animations ;
- gestion de l'état avec Riverpod ou tout autre framework.
La scène 3D s'intègre naturellement dans l'arbre des widgets.
On ne quitte jamais Flutter.
Le GPU devient enfin accessible
Le véritable changement vient de Flutter GPU.
Au lieu de passer par différentes couches d'abstraction, le moteur Impeller peut désormais dialoguer beaucoup plus directement avec le GPU.
Concrètement, cela ouvre la porte à :
- des modèles 3D plus détaillés ;
- des matériaux plus réalistes ;
- des effets graphiques avancés ;
- des animations beaucoup plus fluides.
Cette évolution rapproche Flutter de ce que proposent aujourd'hui certains moteurs graphiques dédiés.
Une API encore expérimentale
Il faut cependant garder les pieds sur terre.
À l'heure où j'écris cet article, Flutter GPU reste expérimental.
Quelques points sont à connaître avant de commencer :
- l'accès au GPU n'est actuellement disponible que sur la branche master de Flutter ;
- il faut activer Impeller ;
- l'application doit être lancée avec les options suivantes :
flutter run --enable-impeller --enable-flutter-gpu
Ces flags étant expérimentaux, ils peuvent varier selon la version précise du SDK (flutter --version).
Pourquoi cette évolution est importante
Pendant longtemps, Flutter excellait pour développer des interfaces 2D, mais atteignait rapidement ses limites lorsqu'il fallait créer des expériences immersives.
Avec Flutter GPU, un nouveau champ d'applications devient envisageable :
- configurateurs de produits ;
- visualisation d'objets techniques ;
- architecture et immobilier ;
- automobile ;
- e-commerce interactif ;
- jeux casual ;
- interfaces mêlant UI traditionnelle et objets 3D.
Pour beaucoup de projets, il ne sera plus nécessaire d'intégrer Unity ou Unreal simplement pour afficher un objet interactif.
Et PadForge ?
Cette petite démonstration n'est qu'un prototype.
L'idée était surtout de vérifier qu'il était possible de construire une interface moderne où la personnalisation d'un objet se fait directement sur un modèle 3D temps réel.
Le résultat est particulièrement encourageant.
La fluidité est excellente, l'intégration avec Flutter est naturelle et l'API est suffisamment simple pour être prise en main rapidement.
Conclusion
Flutter ne devient évidemment pas un moteur de jeu.
En revanche, il commence à proposer tout ce qu'il faut pour construire des applications où la 3D fait partie intégrante de l'expérience utilisateur.
Pour les développeurs Flutter, c'est probablement l'une des évolutions les plus intéressantes de ces dernières années.
Il faudra encore patienter avant une API stable, mais la direction prise est particulièrement prometteuse.
Credits :
La démonstration PadForge a été réalisée avec flutter_scene, Flutter GPU et le moteur Impeller. Si vous souhaitez expérimenter cette nouvelle génération de rendu graphique, pensez à utiliser la branche master de Flutter et à activer les options expérimentales lors du lancement de l'application. Modèle 3D Xbox Elite Controller par Rusfort
Si vous souhaitez concevoir une application mobile, une architecture IA on-device ou réduire vos coûts d’inférence, n’hésitez pas à nous contacter et parlons-en ensemble. 😊