Qt 3D Animation C++ Classes
Les modules d'animation Qt 3D fournissent un ensemble d'éléments préconstruits pour vous aider à démarrer avec Qt 3D. Plus...
Ce module est obsolète depuis la version 6.8. Il est fortement déconseillé de l'utiliser dans un nouveau code.
Espaces de noms
Contient les classes du module Qt3DAnimation |
Classes
Une classe de base abstraite pour les animations Qt3D | |
Classe de base pour les types fournissant des données d'animation d'images clés | |
Classe de base pour les types fournissant des capacités de lecture d'animation | |
Classe de base pour les types utilisés pour construire des arbres de mélange d'animation | |
Effectue un mélange additif de deux clips d'animation sur la base d'un facteur additif. | |
Fournit des capacités d'animation d'images clés à Qt 3D | |
Représente un objet de rappel d'animation | |
Spécifie les données d'animation de l'image clé | |
Classe contenant les données d'animation | |
Permet de charger des données d'animation d'images clés à partir d'un fichier | |
Une classe de contrôleur pour les animations | |
Classe regroupant les animations | |
Composant offrant des capacités de lecture d'animation d'un arbre de nœuds de mélange | |
Permet de faire correspondre les canaux du clip à l'invocation 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 dans le cas où le QChannel est appelé "Rotation" (sensible à la casse), qu'il possède 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 d'affecter les canaux du clip aux propriétés des objets de l'application. | |
Permet d'associer les canaux du clip aux propriétés des objets de l'application. | |
Composant offrant des capacités simples de lecture d'animations | |
Classe utilisée pour inclure un clip dans un arbre de fusion | |
Classe de base pour la gestion des images clés | |
Classe mettant en œuvre une animation simple d'images clés vers une QTransform | |
Effectue une interpolation linéaire de deux clips d'animation sur la base d'un facteur normalisé | |
Une classe fournissant des cibles de morphes pour l'animation de formes de mélange | |
Une classe implémentant l'animation de morphing de formes mélangées | |
Une classe implémentant l'animation de morphing par vertex-blend |
Description détaillée
Ce module est encore en cours de développement mais est disponible en tant qu'aperçu technologique. Cela signifie qu'il est instable, susceptible d'être modifié et qu'il n'est fourni qu'à titre de commodité.
#include <Qt3DAnimation>Pour établir un lien avec la bibliothèque C++ correspondante, ajoutez ce qui suit à votre fichier de projet qmake :
QT += 3danimation
Les classes, les types et les fonctions sont déclarés dans l'espace de noms Qt3DAnimation.
Vue d'ensemble
Le module d'animation Qt 3D permet de spécifier et d'utiliser des animations qui peuvent être appliquées aux propriétés des objets de votre simulation. Au départ, ce module prend en charge les animations basées sur les images clés. En d'autres termes, les propriétés ont des valeurs "clés" à certains moments et, lors de la lecture, les valeurs des propriétés sont calculées par interpolation entre les valeurs connues dans les images clés. Toute l'évaluation de l'animation au sein du module d'animation Qt 3D s'effectue sur le pool de threads Qt 3D. Cela permet aux animations de se dérouler en douceur et de s'adapter à un débit élevé.
Données d'animation
Les données d'animation des images clés peuvent être créées de manière programmatique via les API d'animation de Qt 3D telles que Qt3DAnimation::QKeyFrameData ou 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 utilisé actuellement par Qt 3D Animation est un format simple basé sur JSON. Il permet aux développeurs et aux artistes de travailler facilement avec les données d'animation. D'autres formats optimisés pour la consommation en cours d'exécution seront ajoutés ultérieurement.
Les données d'animation des 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 de manière programmatique, utilisez la classe Qt3DAnimation::QAnimationClip.
Par défaut, les données de l'image clé sont spécifiées à 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 d'animations
Outre les données d'animation contenant les images clés, Qt 3D Animation fournit également des API permettant de jouer les animations et de mapper les valeurs des propriétés résultantes sur les propriétés des objets de votre simulation. Il existe actuellement deux façons de jouer les animations :
Ces deux méthodes sont mises en œuvre en tant que sous-classes de Qt3DCore::QComponent, ce qui signifie que les objets de ces types peuvent être agrégés par des objets Qt3DCore::QEntity pour ajouter des capacités d'animation à vos entités simulées.
Lecture d'une animation simple
La classe Qt3DAnimation::QClipAnimator permet la lecture d'une seule 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 d'animation Qt 3D adopte une approche légèrement différente de celle des modules QPropertyAnimation et AbstractAnimation. Avec ces cadres 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 possède une propriété clip pour 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 faire correspondre ces valeurs aux propriétés des objets. Pour ce faire, on utilise une propriété Qt3DAnimation::QChannelMapper qui contient une liste d'objets Qt3DAnimation::QChannelMapping. Un Qt3DAnimation::QChannelMapping est utilisé pour mapper un canal spécifique d'un clip d'animation sur 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, la même animation peut être appliquée à de nombreux objets sans qu'il soit nécessaire d'avoir plusieurs copies des données d'animation ou des objets. Cela permet également de recibler facilement les données d'animation sur d'autres objets.
Lecture d'animations mixtes
Le composant Qt3DAnimation::QBlendedClipAnimator permet d'aller au-delà de ce qui est possible avec Qt3DAnimation::QClipAnimator en mélangeant plusieurs clips d'animation avant d'appliquer les changements de propriétés aux propriétés cibles. Le composant animator prend toujours un mappeur de canaux 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. L'ensemble des nœuds de l'arbre de fusion actuellement pris en charge sont les suivants :
Les entrées du clip d'animation source sont spécifiées en tant que nœuds de feuille 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 Qt3D Animation propose des opérations d'interpolation linéaire (LERP) et de mélange additif. 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 l'exemple de l'arbre de mélange 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 est un cycle d'animation de course d'une durée de 2 secondes. Il s'agit des deux entrées (et dépendances) du nœud de fusion Lerp. Le résultat de l'évaluation du nœud Lerp dépend de la propriété blendFactor du nœud Lerp. Cette propriété pourrait être liée à la vitesse d'un personnage humanoïde, par exemple. Lorsque la vitesse du personnage augmente, l'animation passe progressivement de l'animation de marche ( Clip0 ) à l'animation de course ( Clip1).
En outre, supposons que Clip2 représente une animation de variation qui peut être ajoutée (en agitant les bras ou en secouant la tête, par exemple). La quantité de clip additif ajoutée peut être contrôlée par la propriété additiveFactor du nœud de mélange Additive.
Lors de l'évaluation d'un arbre de fusion, le temps normalisé (ou la phase) est utilisé 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 sont de longueurs différentes, tant qu'ils sont créés par l'animateur de manière à ce que les chutes de pieds s'alignent sur la même phase, ils peuvent être agréablement interpolés.
Cela implique que la durée du clip mélangé est en fait une fonction des facteurs de mélange des nœuds de l'arbre. Si l'on considère uniquement le nœud Lerp dans l'exemple ci-dessus, lorsque le facteur de fusion du nœud Lerp est de 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 les facteurs de fusion intermédiaires, la durée sera interpolée linéairement entre 3 et 2 secondes.
En définissant vos propres arbres de fusion, vous avez un contrôle total sur la façon de combiner votre collection de clips d'animation d'entrée. L'arbre de fusion peut être configuré par les 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, de sorte qu'elles peuvent à 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.