Qt 3D Animation C++ Classes
Les modules d'animation d'Qt 3D fournissent un ensemble d'éléments prédéfinis pour vous aider à vous lancer avec Qt 3D. En savoir plus...
Ce module est obsolète depuis la version 6.8. Nous vous déconseillons fortement de l'utiliser dans du nouveau code.
Espaces de noms
Classes
Une classe de base abstraite pour les animations Qt3D | |
La classe de base pour les types fournissant des données d’animation par images clés | |
La classe de base pour les types fournissant des capacités de lecture d'animation | |
La classe de base pour les types utilisés pour construire des arborescences de fusion d'animations | |
Effectue un mélange additif de deux clips d'animation en fonction d'un facteur additif | |
Fournit des capacités d’animation par images clés à Qt 3D | |
Représente un objet de rappel d'animation | |
Spécifie les données d’animation par images clés | |
Classe contenant les données d'animation | |
Permet de charger des données d’animation par images clés à partir d’un fichier | |
Une classe de contrôleur pour les animations | |
Une classe regroupant des animations | |
Composant offrant des fonctionnalités de lecture d’animation d’une arborescence de nœuds de fusion | |
Permet de mapper les canaux du clip sur l'appel d'un objet de rappel | |
Définit un canal pour un QAnimationClipData. Le système d’animation interpole chaque composant de canal indépendamment, sauf si le QChannel est nommé « Rotation » (sensible à la casse) : dans ce cas, il comporte quatre QChannelComponents et le même nombre d’images clés pour chaque QChannelComponent. Dans ce cas, l’interpolation sera effectuée à l’aide de SLERP | |
Permet de mapper les canaux du clip sur les propriétés d’objets de l’application | |
Permet de mapper les canaux du clip sur les propriétés des objets de l’application | |
Composant offrant des fonctionnalités simples de lecture d’animation | |
Classe utilisée pour inclure un clip dans un arbre de fusion | |
Une classe de base pour la gestion des images clés | |
Classe implémentant une animation simple par images clés pour un QTransform | |
Effectue une interpolation linéaire de deux clips d'animation en fonction d'un facteur normalisé | |
Une classe fournissant des cibles de morphing pour l’animation par blend-shapes | |
Une classe implémentant l'animation de morphing par blend-shape | |
Une classe implémentant une animation de morphing par fusion de sommets |
Description détaillée
Ce module est encore en cours de développement, mais il est disponible en avant-première technologique. Cela signifie qu’il est instable, susceptible d’évoluer et fourni à titre indicatif uniquement.
#include <Qt3DAnimation>Pour lier votre projet à la bibliothèque C++ correspondante, ajoutez ce qui suit à votre fichier de projet qmake :
QT += 3danimationLes classes, types et fonctions sont déclarés sous l'espace de noms Qt3DAnimation.
Présentation
Le module d’animation Qt 3D permet de définir et d’utiliser des animations pouvant être appliquées aux propriétés des objets de votre simulation. Dans un premier temps, ce module prend en charge les animations basées sur des images clés. Concrètement, les propriétés ont des valeurs « ancrées » à certains moments et, lors de la lecture, ces valeurs sont calculées par interpolation entre les valeurs connues des images clés. L’ensemble du traitement des animations au sein du module d’animation d’ Qt 3D s’effectue sur le pool de threads Qt 3D. Cela permet aux animations de s’exécuter de manière fluide et d’atteindre un débit élevé.
Données d’animation
Les données d’animation par images clés peuvent soit être créées par programmation via les API d’animation d’ Qt 3D, telles que Qt3DAnimation::QKeyFrameData, soit provenir d’outils de création de contenu numérique (DCC) tels que Blender, Maya ou 3D Studio Max. Qt 3D fournit un exemple de script d’exportation de données d’animation pour Blender. Le format actuellement pris en charge par l’animation d’ Qt 3D est un format simple basé sur JSON. Cela permet tant aux développeurs qu’aux artistes de travailler facilement avec les données d’animation. D’autres formats optimisés pour l’exécution seront ajoutés ultérieurement.
Les données d’animation par images clés peuvent être chargées à partir d’un fichier à l’aide de la classe ` Qt3DAnimation::QAnimationClipLoader `. Pour spécifier les données d’animation par programmation, utilisez la classe ` Qt3DAnimation::QAnimationClip `.
Par défaut, les données d’images clés sont définies à l’aide de courbes de Bézier cubiques. Cela permet de créer des animations fluides à partir d’un petit nombre de points de données d’images clés. D’autres types d’interpolation seront ajoutés ultérieurement.
Lecture des animations
Outre les données d’animation contenant les images clés, Qt 3D Animation fournit également des API permettant de lire les animations et de mapper les valeurs de propriétés résultantes sur les propriétés des objets de votre simulation. Il existe actuellement deux façons de lire les animations :
Ces deux méthodes sont implémentées sous forme de sous-classes d’ Qt3DCore::QComponent, ce qui signifie que les objets de ces types peuvent être agrégés par des objets « Qt3DCore::QEntity » afin d’ajouter des capacités d’animation à vos entités simulées.
Lecture simple d’une animation
La classe ` Qt3DAnimation::QClipAnimator ` permet la lecture d’une seule animation ` Qt3DAnimation::QAbstractAnimationClip ` à la fois. Pour ajouter une animation à une entité, il suffit d’ajouter une instance de la classe ` Qt3DAnimation::QClipAnimator ` à la propriété ` components ` de votre entité.
Le module Animation de Qt 3D adopte une approche légèrement différente de celle d’ QPropertyAnimation et d’ AbstractAnimation. Avec ces frameworks d’animation, l’animation spécifie à la fois les valeurs d’animation et les objets et propriétés cibles. Les composants d’animation de Qt 3D séparent ces deux concepts orthogonaux. Par exemple, le composant Qt3DAnimation::QClipAnimator dispose d’une propriété clip permettant de spécifier les données d’animation (Qt3DAnimation::QAnimationClip ou Qt3DAnimation::QAnimationClipLoader).
Cela permet de calculer les valeurs animées, mais des informations supplémentaires sont nécessaires pour mapper ces valeurs sur les propriétés des objets. C’est ce que permet l’objet « Qt3DAnimation::QChannelMapper », qui contient une liste d’objets « Qt3DAnimation::QChannelMapping ». Un « Qt3DAnimation::QChannelMapping » sert à associer un canal spécifique d’un clip d’animation à une propriété nommée d’un objet cible. En séparant ainsi les données d’animation et les mappages de propriétés, une même animation peut être appliquée à de nombreux objets sans qu’il soit nécessaire de disposer de plusieurs copies des données d’animation ou des objets. Cela permet également de réaffecter facilement les données d’animation à d’autres objets.
Lecture d’animations fusionnées
Le composant « Qt3DAnimation::QBlendedClipAnimator » permet d’aller au-delà des possibilités offertes par « Qt3DAnimation::QClipAnimator » en fusionnant plusieurs clips d’animation avant d’appliquer les modifications aux propriétés cibles. Ce composant d’animation utilise toujours un mappeur de canaux, tout comme le composant standard « Qt3DAnimation::QClipAnimator ». Cependant, au lieu de spécifier un seul clip d’animation, il est nécessaire de définir la propriété « blendTree » pour qu’elle pointe vers le nœud racine d’un arbre de fusion.
Un arbre de fusion est une structure de données représentant la manière dont les clips d’animation sont agrégés ou fusionnés en fonction des propriétés des nœuds de l’arbre de fusion. Les nœuds d’arbre de fusion actuellement pris en charge sont les suivants :
Les clips d’animation sources sont spécifiés en tant que nœuds feuilles dans l’arbre de fusion à l’aide d’instances de la classe ` Qt3DAnimation::QClipBlendValue `. Ces clips d’animation peuvent être combinés de nombreuses façons. Pour l’instant, le module d’animation Qt3D fournit des opérations d’interpolation linéaire (LERP) et de fusion additive. D’autres types de nœuds de fusion seront ajoutés au fil du temps. Ceux-ci devraient inclure au moins un nœud LERP généralisé et un nœud LERP barycentrique.
Prenons par exemple l’arbre de fusion suivant :
Clip0----
|
Lerp Node----
| |
Clip1---- Additive Node
|
Clip2----Supposons que ` Clip0 ` représente un cycle d’animation de marche d’une durée de 3 secondes et que ` Clip1 ` représente un cycle d’animation de course d’une durée de 2 secondes. Ces deux éléments constituent des entrées (et des dépendances) du nœud de mélange ` Lerp `. Le résultat de l’évaluation du nœud Lerp dépend de la propriété blendFactor du nœud Lerp. Celle-ci pourrait par exemple être liée à la vitesse d’un personnage humanoïde. À mesure que la vitesse du personnage augmente, l’animation effectue un fondu enchaîné progressif entre l’animation de marche de Clip0 et l’animation de course de Clip1.
De plus, supposons que Clip2 représente une animation de variation pouvant être superposée (agiter les bras ou secouer la tête, par exemple). L’intensité de ce clip additif peut être contrôlée par la propriété « additiveFactor » du nœud de fusion Additive.
Lors de l’évaluation d’un arbre de fusion, on utilise un temps (ou une phase) normalisé afin que des clips de durées différentes puissent être fusionnés sans problème. Par exemple, même si les clips d’animation de marche et de course ont des durées différentes, tant qu’ils sont créés par l’animateur de manière à ce que les foulées s’alignent sur la même phase, ils peuvent être interpolés de manière harmonieuse.
Cela implique que la durée du clip fusionné dépend en réalité des facteurs de fusion des nœuds de l’arborescence. Si l’on considère uniquement le nœud « Lerp » de l’exemple ci-dessus, lorsque le facteur de fusion du nœud « Lerp » est égal à 0, seule l’animation de marche du Clip0 est utilisée, ce qui donne une durée de 3 secondes. Avec un facteur de fusion de 1, la durée obtenue sera de 2 secondes. Pour des facteurs de fusion intermédiaires, la durée sera interpolée linéairement entre 3 et 2 secondes.
En définissant vos propres arborescences de fusion, vous disposez d’un contrôle total sur la manière de combiner votre collection de clips d’animation d’entrée. L’arborescence de fusion peut être configurée à l’aide des propriétés des nœuds de fusion. Notez également que les propriétés des nœuds de fusion eux-mêmes ne sont que des propriétés standard ; elles peuvent donc à leur tour être pilotées par d’autres animations si vous le souhaitez.
Référence
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.