Auf dieser Seite

Qt3DAnimation::QBlendedClipAnimator Class

class Qt3DAnimation::QBlendedClipAnimator

QBlendedClipAnimator ist eine Komponente, die Funktionen zur Wiedergabe von Animationen in einer Baumstruktur aus Blend-Knoten bereitstellt. Mehr...

Überschrift: #include <qblendedclipanimator.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3danimation)
target_link_libraries(mytarget PRIVATE Qt6::3danimation)
qmake: QT += 3danimation
In QML: BlendedClipAnimator
Erbt von: Qt3DAnimation::QAbstractClipAnimator
Status: Technologievorschau

Diese Klasse befindet sich in der Technologievorschau und kann sich noch ändern.

Eigenschaften

  • blendTree : Qt3DAnimation::QAbstractClipBlendNode*

Öffentliche Funktionen

Qt3DAnimation::QAbstractClipBlendNode *blendTree() const

Öffentliche Slots

void setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree)

Signale

void blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree)

Ausführliche Beschreibung

Eine Instanz von QBlendedClipAnimator kann von einer QEntity aggregiert werden, um die Wiedergabe von Animationsclips zu ermöglichen und die berechneten Animationswerte auf Eigenschaften von QObjects anzuwenden.

Während ein „ QClipAnimator “ seine Animationsdaten aus einem einzelnen Animationsclip bezieht, kann ein „QBlendedClipAnimator“ mehrere Clips miteinander überblenden. Die Animationsdaten werden durch die Auswertung eines sogenannten Blend-Baums ermittelt. Ein Blend-Tree ist eine hierarchische Baumstruktur, bei der die Blattknoten Wertknoten sind, die einen Animationsclip (QAbstractAnimationClip) kapseln, und die internen Knoten Mischoperationen darstellen, die auf die Knoten angewendet werden, auf die ihre Operandeneigenschaften verweisen.

Um einen Blend-Tree mit einem `QBlendedClipAnimator` zu verknüpfen, setzen Sie die Eigenschaft ` blendTree ` des Animators so, dass sie auf den Wurzelknoten Ihres Blend-Tree verweist:

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 im Laufe der Zeit hinzugefügt.

Betrachten Sie als Beispiel den folgenden Blend-Tree:

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);

Indem wir eine Reihe von Animationsclips erstellen und diese zur Laufzeit mithilfe eines Blend-Baums dynamisch miteinander überblenden, eröffnen wir eine riesige Bandbreite an möglichen Animationsergebnissen. Anhand einiger einfacher Beispiele für den oben gezeigten Blend-Baum, bei dem „alpha“ der additive Faktor und „beta“ der Lerp-Überblendungsfaktor ist, erhalten wir ein zweidimensionales Kontinuum möglicher 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 Blend-Trees bieten noch mehr Flexibilität bei der Kombination Ihrer Animationsclips. Beachten Sie, dass die zur Steuerung des Blend-Trees verwendeten Werte (oben „alpha“ und „beta“) einfache Eigenschaften der Blend-Knoten sind. Das bedeutet, dass diese Eigenschaften selbst ebenfalls vom Animations-Framework gesteuert werden können.

Dokumentation zu den Eigenschaften

blendTree : Qt3DAnimation::QAbstractClipBlendNode*

Diese Eigenschaft enthält die Wurzel des Animations-Blend-Trees, die vor der Interpolation durch den Animator ausgewertet wird.

Zugriffsfunktionen:

Qt3DAnimation::QAbstractClipBlendNode *blendTree() const
void setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree)

Notifier-Signal:

void blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree)

© 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.