une rotation avec la fonction rotate, qui prend en argument un angle et une
rotation (comme pour le tore) ;
une translation avec la fonction translate, qui prend en argument trois
nombres.
(Ces opérations ne sont pas définies dans la documentation de Qt Quick, mais bien
dans celle de Qt.)
Pour finir, une animation s'occupe de faire varier l'angle de la bille (la propriété
angle de sphereTransform) autour du tore, entre 0 et 360° (c'est-à-dire un tour
complet). Un tour dure cinq secondes (duration est exprimé en millisecondes).
L'animation se répète sans fin (loops: Animation.Infinite) et se lance en même
temps que l'application (running: true).
Note > Bien évidemment, il est possible d'instancier d'autres types de géométrie que
des sphères ou des tores. En toute généralité, le composant Mesh peut charger un
fichier de géométrie, grâce à sa propriété source.
Note > Le composant Transform définit déjà une propriété angle, mais cet exemple
redéfinit une propriété qui porte le même nom . Ainsi, la propriété angle de
Transform est cachée. Ceci évite un problème de dépendance circulaire : spécifier
une transformation avec matrix impose la valeur à toute une série de propriétés
(scale, angle, etc.) ; si on donne la valeur d'angle en même temps, elle doit donc prendre
plusieurs valeurs simultanément (celle donnée directement dans le code et celle
donnée implicitement par matrix). De même, donner un angle crée, de manière interne,
une nouvelle matrix de transformation.
Si on enlevait les mots clés property real, on aurait le message d'erreur suivant :
QML Transform: Binding loop detected for property "matrix"
Attention > La scène Qt 3D n'est pas encore utilisable : la racine est une entité, qui
n'a pas de représentation à l'écran telle quelle. (En C++, on peut utiliser la classe
Qt3DQuickWindow pour lancer directement ce fichier QML, mais elle n'existe pas
encore dans PyQt3D.)
2.2. Intégration à une application Qt Quick
459
Précédent

- 460/494

Suivant