Améliorations prévues au Qt 3D Studio Runtime
Une réécriture utilisant Qt 3D, qui profitera des améliorations apportées

Le , par dourouc05, Responsable Qt
Après la sortie de Qt 3D Studio, quelques premières pistes d’amélioration ont été ébauchées, elles sont maintenant bien plus précises concernant le moteur d’exécution, qui se charge d’afficher les scènes à l’écran. L’objectif principal est une migration vers Qt 3D (en lieu et place du code OpenGL hérité de NVIDIA).
Qt 3D Studio est un outil de conception rapide d’interfaces graphiques en trois dimensions. Il fonctionne de manière similaire à Qt 3D : on commence par importer le contenu nécessaire (modèles et textures, principalement), puis on le positionne dans la scène, on peut ensuite appliquer des matériaux, des animations par images clés, etc.
Qt 3D Studio reprend le principe des calques des applications de traitement des images comme Photoshop et le généralise à la 3D : chaque calque comprend sa propre scène et sa propre caméra ; ensuite, les calques sont fusionnés selon leur position, leur taille et leurs options de fusion.
De plus, Qt 3D Studio dispose d’un système de transparents très proche des logiciels de présentation comme PowerPoint, similaire aux états : un transparent défini un ensemble d’objets visibles, de changements de propriétés et d’animations au début de son affichage.
Toutes ces fonctionnalités et bien d’autres sont implémentées dans le moteur d’exécution, Qt 3D Studio Runtime. Pour le moment, il s’agit d’un code C++ hérité de NVIDIA, assez peu touché. Le rendu est exclusivement effectué par OpenGL (ES) 3 . Ainsi, ce code est déjà extrêmement facile à porter sur de nouvelles plateformes, pour autant qu’il existe une interface OpenGL 3. Il s’intègre aussi relativement bien dans des interfaces Qt existantes, tout en étant assez léger et stable.
Cependant, il utilise très peu Qt pour son implémentation, alors qu’il pourrait très bien se baser sur Qt 3D 2.0, qui arrive à un bon niveau de maturité. En effet, ce moteur de rendu propose des abstractions très utiles dans le domaine, notamment un système à entités et des graphes de scène : il peut décrire très facilement le rendu de scènes 3D avec plusieurs passes, mais aussi utiliser d’autres API qu’OpenGL 3.
C’est pourquoi quelques petites expériences de transition de Qt 3D Studio Runtime vers Qt 3D ont démarré vers avril 2017, dans un style entièrement Qt (ce qui facilitera la maintenance du projet dans le futur). Ce moteur est parti de zéro : les développeurs sont partis d’une page blanche, puis ont commencé à lire les fichiers UIP (produits par Qt 3D Studio) et à générer la scène Qt 3D correspondante. Ils réutilisent néanmoins les mêmes ressources que Qt 3D Studio, notamment les shaders, pour faciliter leur travail (ils veulent obtenir le même résultat graphique qu’avec Qt 3D Studio Runtime).
La première version complète de ce travail de portage devrait arriver vers mai 2018. Le code actuel est déjà disponible (tout comme celui de Qt 3D Studio), mais devrait substantiellement changer dans les semaines à venir. La plus grande priorité sera toutefois de garder la compatibilité avec le code existant, pas de changer l’API ou le mode de fonctionnement.
Pour y arriver, Qt 3D devra être considérablement amélioré : pour afficher la même scène, Qt 3D Studio Runtime prend bien moins de ressources que Qt 3D (à l’époque de Qt 5.9.1). Une équipe de choc s’occupe actuellement de réduire la consommation de processeur et de mémoire du moteur (les premiers résultats devraient arriver pour Qt 5.11) : il s’agit surtout d’éviter des copies, c’est-à-dire de partager des données, de les mettre en cache, etc.

Sources : Towards an Improved Qt 3D Studio Runtime, Qt 3D as a Runtime Enabler.

Et vous ?

Qu'en pensez-vous ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -