QBlendedClipAnimator Class

class Qt3DAnimation::QBlendedClipAnimator

QBlendedClipAnimator는 블렌드 노드 트리의 애니메이션 재생 기능을 제공하는 컴포넌트입니다. 더 보기...

Header: #include <QBlendedClipAnimator>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3danimation)
target_link_libraries(mytarget PRIVATE Qt6::3danimation)
qmake: QT += 3danimation
QML에서: BlendedClipAnimator
상속합니다: Qt3DAnimation::QAbstractClipAnimator
상태: Deprecated

속성

  • blendTree : Qt3DAnimation::QAbstractClipBlendNode*

공용 기능

Qt3DAnimation::QAbstractClipBlendNode *blendTree() const

공용 슬롯

void setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree)

신호

void blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree)

상세 설명

Q블렌디드클립애니메이터의 인스턴스는 Q엔티티에 의해 집계되어 애니메이션 클립을 재생하고 계산된 애니메이션 값을 Q오브젝트의 프로퍼티에 적용하는 기능을 추가할 수 있습니다.

QClipAnimator 은 단일 애니메이션 클립에서 애니메이션 데이터를 가져오는 반면, QBlendedClipAnimator는 여러 클립을 블렌딩할 수 있습니다. 애니메이션 데이터는 소위 블렌드 트리를 평가하여 얻습니다. 블렌드 트리는 계층적 트리 구조로, 리프 노드는 애니메이션 클립을 캡슐화하는 값 노드(QAbstractAnimationClip)이고, 내부 노드는 피연산자 속성이 가리키는 노드에서 작동하는 블렌딩 연산을 나타냅니다.

블렌드 트리를 QBlendedClipAnimator와 연결하려면 애니메이터의 blendTree 속성을 블렌드 트리의 루트 노드를 가리키도록 설정합니다:

auto blendTreeRoot = new QAdditiveClipBlend();
...
auto animator = new QBlendedClipAnimator();
animator->setBlendTree(blendTreeRoot);

블렌드 트리는 다음 노드 유형으로 구성할 수 있습니다:

참고: 블렌드 노드 트리는 애니메이터가 실행되지 않을 때만 편집해야 합니다.

추가 노드 유형은 시간이 지남에 따라 추가될 예정입니다.

다음 블렌드 트리를 예로 들어 보겠습니다:

Clip0----
        |
        Lerp Node----
        |           |
Clip1----           Additive Node
                    |
            Clip2----

다음과 같이 생성하여 사용할 수 있습니다:

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

애니메이션 클립 세트를 제작하고 블렌드 트리를 사용하여 런타임에 동적으로 클립 간에 블렌딩하면 가능한 애니메이션 결과물의 방대한 세트가 열립니다. 위 블렌드 트리의 간단한 예로, 알파는 가산 계수이고 베타는 러프 블렌드 계수로 가능한 애니메이션의 2D 연속체를 얻을 수 있습니다:

(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

더 복잡한 블렌드 트리를 사용하면 애니메이션 클립을 훨씬 더 유연하게 조합할 수 있습니다. 블렌드 트리를 제어하는 데 사용되는 값(위의 알파 및 베타)은 블렌드 노드의 단순한 프로퍼티라는 점에 유의하세요. 즉, 이러한 프로퍼티 자체도 애니메이션 프레임워크에서 제어할 수 있습니다.

프로퍼티 문서

blendTree : Qt3DAnimation::QAbstractClipBlendNode*

이 프로퍼티에는 애니메이터에 의해 보간되기 전에 평가될 애니메이션 블렌드 트리의 루트가 저장됩니다.

함수에 액세스합니다:

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

알림 신호:

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.