particulier des explications sur le modèle de Phong (chapitre Calculs d'éclairement)
et les transformations (chapitre Transformations géométriques).
La sphère constitue la dernière des trois entités de la scène. Elle aura trois composants,
comme le tore, mais aussi une animation sur l'angle de rotation (gérée avec Number -
Animation). Cette animation n'est pas un composant au sens de Qt 3D, mais bien un
composant Qt Quick habituel ; en tant que telle, elle est ajoutée comme enfant de l'entité
sphère (comme ce qui se ferait en dehors de Qt 3D).
Entity { // Racine
components: [ … ]
Entity { … } // Tore
Entity { // Sphère
components: [
SphereMesh {
radius: 2 }, PhongMaterial { ambient: Qt.darker("lightblue", 2) }, Transform { id:
sphereTransform property real angle: 0.0 matrix: { var m = Qt.matrix4x4();
m.rotate(angle, Qt.vector3d(0, 1, 0)); m.translate(Qt.vector3d(20, 0, 0)); return m; } } ]
NumberAnimation { target: sphereTransform property: "angle" duration: 5000 from:
0; to: 360 loops: Animation.Infinite running: true } } }
Précédemment, on utilisait une géométrie de tore (TorusMesh) ; ici, comme il s'agit
d'une bille, on utilise une géométrie de sphère (SphereMesh). Contrairement au cas
du tore, les paramètres par défaut produisent une sphère de très bonne apparence ;
cependant, on pourrait jouer sur les mêmes paramètres rings et slices pour
améliorer le rendu s'il n'était pas bon ou pour améliorer la performance au détriment
de la qualité du rendu.
L'angle de la transformation est une propriété qui changera régulièrement à
l'exécution : c'est grâce à elle que la bille pourra faire le tour du tore.
À la différence de la transformation du tore, on utilise ici une matrice pour
représenter la transformation de la sphère [30] . Cette manière d'écrire une
transformation reprend les informations des translations, des rotations et des mises à
l'échelle [31] . On crée une matrice avec Qt.matrix4x4(), puis on la modifie en
ajoutant des transformations élémentaires :
458
et les transformations (chapitre Transformations géométriques).
La sphère constitue la dernière des trois entités de la scène. Elle aura trois composants,
comme le tore, mais aussi une animation sur l'angle de rotation (gérée avec Number -
Animation). Cette animation n'est pas un composant au sens de Qt 3D, mais bien un
composant Qt Quick habituel ; en tant que telle, elle est ajoutée comme enfant de l'entité
sphère (comme ce qui se ferait en dehors de Qt 3D).
Entity { // Racine
components: [ … ]
Entity { … } // Tore
Entity { // Sphère
components: [
SphereMesh {
radius: 2 }, PhongMaterial { ambient: Qt.darker("lightblue", 2) }, Transform { id:
sphereTransform property real angle: 0.0 matrix: { var m = Qt.matrix4x4();
m.rotate(angle, Qt.vector3d(0, 1, 0)); m.translate(Qt.vector3d(20, 0, 0)); return m; } } ]
NumberAnimation { target: sphereTransform property: "angle" duration: 5000 from:
0; to: 360 loops: Animation.Infinite running: true } } }
Précédemment, on utilisait une géométrie de tore (TorusMesh) ; ici, comme il s'agit
d'une bille, on utilise une géométrie de sphère (SphereMesh). Contrairement au cas
du tore, les paramètres par défaut produisent une sphère de très bonne apparence ;
cependant, on pourrait jouer sur les mêmes paramètres rings et slices pour
améliorer le rendu s'il n'était pas bon ou pour améliorer la performance au détriment
de la qualité du rendu.
L'angle de la transformation est une propriété qui changera régulièrement à
l'exécution : c'est grâce à elle que la bille pourra faire le tour du tore.
À la différence de la transformation du tore, on utilise ici une matrice pour
représenter la transformation de la sphère [30] . Cette manière d'écrire une
transformation reprend les informations des translations, des rotations et des mises à
l'échelle [31] . On crée une matrice avec Qt.matrix4x4(), puis on la modifie en
ajoutant des transformations élémentaires :
458
