Sur cette page

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

Qt3DAnimation

Contient les classes du module Qt3DAnimation

Classes

Qt3DAnimation::QAbstractAnimation

Une classe de base abstraite pour les animations Qt3D

Qt3DAnimation::QAbstractAnimationClip

Classe de base pour les types fournissant des données d'animation d'images clés

Qt3DAnimation::QAbstractClipAnimator

Classe de base pour les types fournissant des capacités de lecture d'animation

Qt3DAnimation::QAbstractClipBlendNode

Classe de base pour les types utilisés pour construire des arbres de mélange d'animation

Qt3DAnimation::QAdditiveClipBlend

Effectue un mélange additif de deux clips d'animation sur la base d'un facteur additif.

Qt3DAnimation::QAnimationAspect

Fournit des capacités d'animation d'images clés à Qt 3D

Qt3DAnimation::QAnimationCallback

Représente un objet de rappel d'animation

Qt3DAnimation::QAnimationClip

Spécifie les données d'animation de l'image clé

Qt3DAnimation::QAnimationClipData

Classe contenant les données d'animation

Qt3DAnimation::QAnimationClipLoader

Permet de charger des données d'animation d'images clés à partir d'un fichier

Qt3DAnimation::QAnimationController

Une classe de contrôleur pour les animations

Qt3DAnimation::QAnimationGroup

Classe regroupant les animations

Qt3DAnimation::QBlendedClipAnimator

Composant offrant des capacités de lecture d'animation d'un arbre de nœuds de mélange

Qt3DAnimation::QCallbackMapping

Permet de faire correspondre les canaux du clip à l'invocation d'un objet de rappel.

Qt3DAnimation::QChannel

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.

Qt3DAnimation::QChannelMapper

Permet d'affecter les canaux du clip aux propriétés des objets de l'application.

Qt3DAnimation::QChannelMapping

Permet d'associer les canaux du clip aux propriétés des objets de l'application.

Qt3DAnimation::QClipAnimator

Composant offrant des capacités simples de lecture d'animations

Qt3DAnimation::QClipBlendValue

Classe utilisée pour inclure un clip dans un arbre de fusion

Qt3DAnimation::QKeyFrame

Classe de base pour la gestion des images clés

Qt3DAnimation::QKeyframeAnimation

Classe mettant en œuvre une animation simple d'images clés vers une QTransform

Qt3DAnimation::QLerpClipBlend

Effectue une interpolation linéaire de deux clips d'animation sur la base d'un facteur normalisé

Qt3DAnimation::QMorphTarget

Une classe fournissant des cibles de morphes pour l'animation de formes de mélange

Qt3DAnimation::QMorphingAnimation

Une classe implémentant l'animation de morphing de formes mélangées

Qt3DAnimation::QVertexBlendAnimation

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.