QBlendedClipAnimator Class
class Qt3DAnimation::QBlendedClipAnimatorQBlendedClipAnimator ist eine Komponente, die die Wiedergabe von Animationen eines Baums von Überblendknoten ermöglicht. Mehr...
Kopfzeile: | #include <QBlendedClipAnimator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3danimation) target_link_libraries(mytarget PRIVATE Qt6::3danimation) |
qmake: | QT += 3danimation |
In QML: | BlendedClipAnimator |
Vererbt: | Qt3DAnimation::QAbstractClipAnimator |
Status: | Veraltet |
Eigenschaften
- blendTree : Qt3DAnimation::QAbstractClipBlendNode*
Öffentliche Funktionen
Qt3DAnimation::QAbstractClipBlendNode * | blendTree() const |
Öffentliche Slots
void | setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
Signale
void | blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
Detaillierte Beschreibung
Eine Instanz von QBlendedClipAnimator kann von einer QEntity aggregiert werden, um die Fähigkeit hinzuzufügen, Animationsclips abzuspielen und die berechneten Animationswerte auf Eigenschaften von QObjects anzuwenden.
Während QClipAnimator seine Animationsdaten aus einem einzelnen Animationsclip bezieht, kann QBlendedClipAnimator mehrere Clips zusammenfügen. Die Animationsdaten werden durch Auswertung eines so genannten Blend-Trees gewonnen. Ein Überblendungsbaum ist eine hierarchische Baumstruktur, bei der die Blattknoten Werteknoten sind, die einen Animationsclip (QAbstractAnimationClip) kapseln; und die internen Knoten stellen Überblendungsoperationen dar, die auf die Knoten wirken, auf die ihre Operandeneigenschaften verweisen.
Um einen Überblendungsbaum mit einem QBlendedClipAnimator zu verknüpfen, setzen Sie die Eigenschaft blendTree des Animators so, dass sie auf den Wurzelknoten Ihres Überblendungsbaums zeigt:
auto blendTreeRoot = new QAdditiveClipBlend(); ... auto animator = new QBlendedClipAnimator(); animator->setBlendTree(blendTreeRoot);
Ein Blend Tree kann aus den folgenden Knotentypen aufgebaut werden:
Hinweis: Der Blend-Knotenbaum sollte nur bearbeitet werden, wenn der Animator nicht läuft.
Weitere Knotentypen werden mit der Zeit hinzugefügt.
Betrachten Sie als Beispiel den folgenden Überblendungsbaum:
Clip0---- | Lerp Node---- | | Clip1---- Additive Node | Clip2----
Dieser kann wie folgt erstellt und verwendet werden:
// Create leaf nodes of blend tree auto clip0 = new QClipBlendValue( new QAnimationClipLoader(QUrl::fromLocalFile("walk.json"))); auto clip1 = new QClipBlendValue( new QAnimationClipLoader(QUrl::fromLocalFile("run.json"))); auto clip2 = new QClipBlendValue( new QAnimationClipLoader(QUrl::fromLocalFile("wave-arm.json"))); // Create blend tree inner nodes auto lerpNode = new QLerpClipBlend(); lerpNode->setStartClip(clip0); lerpNode->setEndClip(clip1); lerpNode->setBlendFactor(0.5f); // Half-walk, half-run auto additiveNode = new QAdditiveClipBlend(); additiveNode->setBaseClip(lerpNode); // Comes from lerp sub-tree additiveNode->setAdditiveClip(clip2); additiveNode->setAdditiveFactor(1.0f); // Wave arm fully // Run the animator auto animator = new QBlendedClipAnimator(); animator->setBlendTree(additiveNode); animator->setChannelMapper(...); animator->setRunning(true);
Durch das Erstellen einer Reihe von Animationsclips und das dynamische Überblenden zwischen ihnen zur Laufzeit mit einem Überblendungsbaum eröffnen wir eine riesige Menge möglicher resultierender Animationen. Einige einfache Beispiele für den obigen Überblendungsbaum, bei dem Alpha der additive Faktor und Beta der Überblendungsfaktor ist, ergeben ein 2D-Kontinuum an möglichen Animationen:
(alpha = 0, beta = 1) Running, No arm waving --- (alpha = 1, beta = 1) Running, Arm waving | | | | | | (alpha = 0, beta = 0) Walking, No arm waving --- (alpha = 0, beta = 1) Running, No arm waving
Komplexere Überblendungsbäume bieten noch mehr Flexibilität bei der Kombination Ihrer Animationsclips. Beachten Sie, dass die Werte, die zur Steuerung des Überblendungsbaums verwendet werden (Alpha und Beta oben), einfache Eigenschaften der Überblendungsknoten sind. Das bedeutet, dass diese Eigenschaften selbst auch durch das Animations-Framework gesteuert werden können.
Dokumentation der Eigenschaften
blendTree : Qt3DAnimation::QAbstractClipBlendNode*
Diese Eigenschaft enthält die Wurzel des Animationsüberblendungsbaums, der ausgewertet wird, bevor er vom Animator interpoliert wird.
Zugriffsfunktionen:
Qt3DAnimation::QAbstractClipBlendNode * | blendTree() const |
void | setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
Benachrichtigungssignal:
void | blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
© 2025 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.