Qt3DAnimation::QBlendedClipAnimator Class
class Qt3DAnimation::QBlendedClipAnimatorQBlendedClipAnimator는 블렌드 노드 트리의 애니메이션 재생 기능을 제공하는 컴포넌트입니다. 더 보기...
| 헤더: | #include <qblendedclipanimator.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS 3danimation) target_link_libraries(mytarget PRIVATE Qt6::3danimation) |
| qmake: | QT += 3danimation |
| QML에서: | BlendedClipAnimator |
| 상속: | Qt3DAnimation::QAbstractClipAnimator |
| 상태: | 기술 미리보기 |
이 클래스는 기술 미리보기 단계에 있으며 변경될 수 있습니다.
속성
- blendTree : Qt3DAnimation::QAbstractClipBlendNode*
공개 함수
| Qt3DAnimation::QAbstractClipBlendNode * | blendTree() const |
공개 슬롯
| void | setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
신호
| void | blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
상세 설명
QBlendedClipAnimator 인스턴스는 QEntity에 의해 집계되어 애니메이션 클립을 재생하고 계산된 애니메이션 값을 QObject의 속성에 적용하는 기능을 추가할 수 있습니다.
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);일련의 애니메이션 클립을 제작하고, 실행 시 블렌드 트리를 통해 이들 간에 동적으로 블렌딩함으로써, 우리는 결과적으로 생성될 수 있는 방대한 애니메이션 조합을 확보할 수 있습니다. 위의 블렌드 트리에서 알파(alpha)는 가산 계수이고 베타(beta)는 레르프(lerp) 블렌드 계수인 경우를 간단한 예로 들면, 다음과 같이 2차원 연속체의 가능한 애니메이션을 얻을 수 있습니다:
(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) |
© 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.