Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Qt Quick 3D, une nouvelle API 3D de haut niveau pour Qt Quick
Une préversion de la nouvelle architecture de Qt Quick prévue pour Qt 6

Le , par dourouc05

22PARTAGES

3  0 
Qt 6 commence à s'annoncer de manière claire, les détails se précisent, notamment au niveau de la 3D. Lars Knoll avait annoncé une nouvelle API pour la 3D dans Qt Quick : Qt Quick 3D. Celle-ci serait en concurrence avec Qt 3D, un moteur 3D déjà complet intégré à Qt, même si les deux utiliseraient la même abstraction (RHI, qui devrait faire son apparition avec Qt 6) ; la différence principale entre Qt Quick 3D et Qt 3D serait le niveau d'abstraction, Qt Quick 3D étant plus abstrait. Le développement de Qt 3D devrait continuer, notamment au niveau de la performance. Qt Quick 3D devrait cependant remplacer le moteur de rendu de Qt 3D Studio : Qt Quick 3D se construit sur cette base. Des outils seront prévus pour faciliter la transition vers Qt Quick 3D.

Pour Qt 6, Qt Quick continuera à utiliser un graphe de scène pour le rendu, mais celui-ci disposera d'extensions pour gérer la 3D : ces extensions portent le nom de Qt Quick 3D. Leur but premier est de limiter les difficultés de synchronisation entre les parties 2D et 3D d'une interface : pour le moment, les deux sont gérées par des moteurs de rendu complètement différents qui n'ont aucun moyen aisé de se synchroniser — ce qui peut donner un rendu assez étrange pour des animations. De plus, la performance souffre de l'utilisation de deux moteurs différents qui ne sont pas particulièrement prévus pour travailler ensemble. Grâce à Qt Quick 3D, la situation devrait être plus simple : un moteur d'exécution, Qt Quick, un graphe de scène, qui mêle 2D et 3D, une interface d'édition d'interfaces, Qt Design Studio. Ceux qui ont des besoins plus poussés en 3D pourront utiliser Qt 3D.

L'API de Qt Quick 3D doit suivre les mêmes principes que les API de Qt Quick : elle doit être facile à utiliser, de haute performance, sans devoir comprendre les détails d'implémentation du moteur de rendu. Qt Quick 3D ne sera pas prévu pour des applications 3D complexes et spécifiques, mais plutôt pour la majorité des interfaces graphiques, celles qui combinent 2D et 3D. (À terme, une partie de plus en plus grande de l'API de rendu devrait être visible, ce qui permettra des utilisations plus avancées.) Qt Quick 3D sera déjà utilisable avec Qt 5, bien que pas dans sa forme finale (l'intégration complète avec Qt Quick requiert certains changements de compatibilité binaire, elle ne pourra arriver qu'avec Qt 6) : dans un premier temps, seule une API QML sera disponible, mais une API C++ devrait rapidement suivre (pour le moment, elle est privée, car d'énormes changements sont prévus pour Qt 6).

Qt Quick 3D proposera une série de composants de très haut niveau pour définir une vue sur du contenu 3D : des lumières, des caméras, des matériaux pour le rendu, mais aucun détail d'implémentation ne sera visible. L'API doit donc être très simple à utiliser, même si elle est limitée dans ses possibilités : il ne sera pas possible d'adapter très précisément la manière d'afficher une scène 3D, contrairement à Qt 3D. En particulier, le seul moteur de rendu actuellement disponible pour Qt Quick 3D repose sur une passe avant unique (encore une fois, contrairement à Qt 3D).
https://qt-blog-uploads.s3.amazonaws...inning_car.gif

Il n'empêche que Qt Quick 3D dispose déjà d'un certain nombre de composants primitifs : Node sera l'équivalent 3D de Item pour Qt Quick ; Camera se chargera de la transformation d'une scène 3D en une surface 2D, avec une position en 3D et une projection ; Light définit une source de lumière (directionnelle, ponctuelle et en surface, pour le moment), avec la possibilité de projeter des ombres ; Model charge un modèle 3D, constitué d'une géométrie et d'un ou plusieurs matériaux pour le rendu. À terme, il sera possible de programmer une géométrie, plutôt que seulement la charger depuis un fichier externe.

Le composant View3D est le seul à hériter de la classe QQuickItem, en C++ : il est le seul à être affichable dans une scène Qt Quick. La scène 3D peut être définie comme sous-composant de View3D ou en dehors ; ainsi, une scène peut être visible depuis un seul View3D ou disposer de plusieurs points de vue. View3D effectue le rendu du point de vue d'un composant Camera.
https://qt-blog-uploads.s3.amazonaws...08/teapots.gif

L'intégration avec des interfaces Qt Quick doit se faire de manière naturelle : autant l'intégration d'une partie 3D à l'intérieur d'une scène 2D que l'inverse. Dans un premier sens, View3D devrait suffire. Pour afficher du contenu Qt Quick 2D dans une scène 3D, on pourra utiliser n'importe quel composant Qt Quick comme texture source pour un modèle.
https://qt-blog-uploads.s3.amazonaws...ated_cubes.gif

Le système d'animation ne sera pas spécifique à Qt Quick 3D, c'est l'un des points qui a mené à son développement. En particulier, cela signifie que l'on peut utiliser le module Qt Quick Timeline, livré avec Qt Design Studio et d'abord prévu pour des interfaces 2D (animation à l'aide d'images clés), avec des scènes 3D.

Pour le moment, Qt Quick 3D n'est pas du tout intégré à Qt, le module correspondant doit être téléchargé séparément. Qt 5.12 est la version minimale nécessaire. Le module devrait être intégré à Qt 5.14, en tant que préversion technologique, avec un support complet dès Qt 5.15. Pour le moment, le nouveau moteur de rendu n'est pas utilisé pour toutes les applications : seules celles qui utilisent une partie 3D passeront à travers Qt Quick 3D, les autres continuent avec le graphe de scène actuel. Dès Qt 6, toutes les scènes Qt Quick seront affichées à travers Qt RHI (rendering hardware interface).

Source : Introducing Qt Quick 3D: A high-level 3D API for Qt Quick.

Une erreur dans cette actualité ? Signalez-le nous !

Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -

Partenaire : Hébergement Web