Developpez.com - Rubrique Qt

Le Club des Développeurs et IT Pro

Qt Quick et la 3D

Une vidéo démontre ses époustouflantes capacités en 3D, la réalité est-elle aussi rose ?

Le 2010-08-10 17:57:53, par yan, Rédacteur
Avec la sortie imminente de QML et de Qt 4.7, il serait peut-être temps de dévoiler les dernières avancées de nos travaux pour le support de ce nouveau paradigme de conception dans Qt dans la contrée si spéciale du graphisme.

En novembre 2009 était présenté Qt/3D, un set d'outils pour faciliter le développement de graphismes 3D dans des applications Qt. La plupart de ses fonctionnalités sont déjà intégrées dans Qt, de nouvelles sont prévues au vu de l'engouement général pour ce framework. À cette époque, QML/3D était déjà vu comme la prochaine étape logique du développement d'applications 3D. Depuis lors, un prototype avancé et fonctionnel est disponible.

Il faut remarquer que ce framework est loin d'être un framework de développement applicatif bien huilé, même s'il prouve que du contenu 3D peut être facilement intégré à des applications et que même le plus novice des développeurs peut intégrer la 3D dans son application, toute la partie plus technique est gérée par Qt/3D.

[ame]http://www.youtube.com/watch?v=OXcxFZbKUNI[/ame]

Un peu plus d'info : http://labs.trolltech.com/blogs/2010...10/qml3d-demo/

Extrait de la discussion Qt Quick : le futur du développement d'IHM (anciennement Declarative UI).
  Discussion forum
14 commentaires
  • kwent78
    Membre à l'essai
    Punaise, ils font vraiment fort là ...
  • haraelendil
    Membre confirmé
    lol, énorme le tuto^^

    Bah ouai, la ça devient de plus en plus ouf leur truc, on va pouvoir tout faire avec ça si ça continue comme ça lol
  • TanEk
    Membre expérimenté
    Ça a l'air tres prometteur mais pour moi il y a trois inconnus qui me font tres peurs et qui sont pour moi eliminatoires:
    • est-ce que c'est assez rapide pour faire tourner de complexes applications?
    • est-ce que ça scale (genre y'a pas un algo non lineaire qui traine la-dedans)?
    • ou sont les outils de profiling and debugging?
  • yan
    Rédacteur
    Envoyé par kwent78
    Punaise, ils font vraiment fort là ...
    Je trouve que cela montre la maturité précoce de QML. Ça donne envie!!
    En tous cas ils ont du bien tripper pour faire cette vidéo
  • yan
    Rédacteur
    Envoyé par TanEk
    est-ce que c'est assez rapide pour faire tourner de complexes applications?
    qml est juste un pseudo language qui permet d'instancier les classe Qt + du script à base de javascript(normalement optimisé par le moteur du webkit). Rien n'empêche de ne faire que la partie IHM en QML(qui est le but en faite) avec du code métier. Donc je dirais oui on peut faire des appli complexe. Si tu regardes les diverses vidéos, il y a quelques exemples assez intéressants.

    est-ce que ça scale (genre y'a pas un algo non lineaire qui traine la-dedans)?
    C'est à dire? tu parles du module 3D ?

    ou sont les outils de profiling and debugging?
    Profiling, propre à qml je ne sais pas. Sinon c'est du profiling C++.
    Debugging : C'est proposé avec QtCreator
  • _skip
    Expert éminent
    Je vois totalement l'intérêt de l'UI declarative, en revanche il serait bien qu'il soit possible de faire la partie métier (event et autre) côté C++. A priori c'est le but mais je n'ai pas encore vu d'exemple concret de comment la *glue* se fait.

    Une bonne approche serait de pouvoir designer une fenêtre, puis de pouvoir récupérer des pointeurs sur les widgets déclarés par leur nom ou leur ID. De là on pourrait leur associer leur slot et le code métier.
    Ca donnerait une superbe ouverture pour adapter les écrans au client final sans avoir à recompiler. Et même en standard, avoir différents jeux d'UI pour une fonctionnalité, par exemple la version simplifiée et la version exhaustive d'un même écran.

    Ca ce serait fantastique, mais je ne suis pas encore sûr que quick aille réellement dans ce sens.
  • gbdivers
    Inactif
    Les développeurs de Qt ont bien fait les choses ; il est possible de choisir l'approche que l'on souhaite :
    - une application entièrement en QML (le QML est relativement complet et intèrgre par exemple la communication réseau et l'accès aux bases de données)
    - une application en C++ qui utilise une interface QML, par exemple en affichant l'UI QML dans une QDeclarativeView (voir http://qt.developpez.com/doc/4.7-sna...ot/qtbinding/l)
    - une application QML qui utilise des objets C++, par exemple des objets métier (voir http://qt.developpez.com/doc/4.7-sna...tutorial-index)

    Et comme la communication entre le C++ et le QML est complète, on peut faire ce que l'on veut en terme d'UI (les possibilités du QML ne sont limités que par Qt et le C++... donc pas très limitées )
  • _skip
    Expert éminent
    J'ai jeté un oeil aux exemples, je dois dire que je suis moyennement convaincu. Certains me donnent vraiment l'impression d'être des méli-mélos script/C++ assez moches.
    Le genre qui pourrait vite devenir du code spaghetti totalement intestable, avec l'UI qui s'adapte après notification à des changements induits par le code c++ et vice versa.

    A mon avis, ce framework QML devra être utilisé avec beaucoup de prudence si on veut une séparation claire entre l'affichage et le code métier.
    Wait and see...
  • yan
    Rédacteur
    QML est un langage de script. Il est interprété et non compilé. Il n'a rien à voir avec les spécificités du C++.

    Comme je le comprends, QML est développé pour la création d'ihm nouvelle génération. Le fait de pouvoir faire du code métier sous forme de javascript est plus une démonstration de ses capacités ou pour la création de plugin.

    Tu peux voir QML comme un langage de script qui va interfacer ton code métier. C'est une forme plus aboutie de l'utilisation de Html/css/javascript pour créé une ihm et manipulant du code métier par introspection au travers du JS.

    Le gros intérêt que je vois est la possibilité
    • de laisser le développement d'un ihm à des graphistes pendant le développement du coeur par les développeur. Et donc d'avoir une séparation forte.
    • de la modifier(ou patcher) rapidement pendant une réunion (exemple de la dernière démo). Ça peut donner une base de discussions très interactive.
    • de maquetter très rapidement 'une ihm avec des proposition d'ergonomie.


    Je dis pas que QML est magique , mais que je trouve l'idée très prometteur.
  • betsprite
    Membre confirmé
    Les démos proposées sont assez impressionnantes !

    Je me pose cependant une petite question :

    Tu peux voir QML comme un langage de script qui va interfacer ton code métier
    * Il sera donc envisageable d'utiliser QML avec des interfaces Qt déjà conçu grâce notamment au module QtGui ou la flexibilité offerte de ces interfaces du futur implique-t-elle un changement important des interfaces préconçues ?