Аниматор смешанных клипов QML
BlendedClipAnimator — это компонент, обеспечивающий воспроизведение анимации дерева узлов смешивания. Подробнее...
| Заявление об импорте: | import Qt3D.Animation 2.1 |
| С момента: | Qt 5.9 |
| Создаёт: | QBlendedClipAnimator |
| Наследует: |
Свойства
- blendTree : AbstractClipBlendNode
Подробное описание
Экземпляр BlendedClipAnimator может быть агрегирован сущностью для добавления возможности воспроизведения анимационных клипов и применения рассчитанных анимационных значений к свойствам QObjects.
В то время как ClipAnimator получает данные анимации из одного анимационного клипа, BlendedClipAnimator может смешивать несколько клипов. Данные анимации получаются путём оценки так называемого дерева смешивания. Дерево смешивания — это иерархическая структура дерева, где листовые узлы — это узлы значений, которые содержат анимационный клип (AbstractAnimationClip); а внутренние узлы представляют операции смешивания, которые выполняются над узлами, на которые указывают их свойства-операнды.
Для ассоциации дерева смешивания с BlendedClipAnimator установите свойство animator's blendTree на корневой узел вашего дерева смешивания:
BlendedClipAnimator {
blendTree: AdditiveClipBlend {
....
}
} Дерево смешивания можно построить из следующих типов узлов:
Примечание: Дерево узлов смешивания должно редактироваться только тогда, когда аниматор не работает.
- Qt3D.Animation.ClipBlendValue
- Qt3D.Animation.LerpClipBlend
- Qt3D.Animation.AdditiveClipBlend
Дополнительные типы узлов будут добавлены со временем.
В качестве примера рассмотрим следующее дерево смешивания:
Clip0----
|
Lerp Node----
| |
Clip1---- Additive Node
|
Clip2---- Это можно создать и использовать следующим образом:
BlendedClipAnimator {
blendTree: AdditiveClipBlend {
baseClip: LerpClipBlend {
startClip: ClipBlendValue {
clip: AnimationClipLoader { source: "walk.json" }
}
endClip: ClipBlendValue {
clip: AnimationClipLoader { source: "run.json" }
}
}
additiveClip: ClipBlendValue {
clip: AnimationClipLoader { source: "wave-arm.json" }
}
}
channelMapper: ChannelMapper {...}
running: true
} Авторизуя набор анимационных клипов и динамически смешивая их во время выполнения с помощью дерева смешивания, мы открываем огромный набор возможных анимаций. В качестве некоторых простых примеров вышеуказанного дерева смешивания, где alpha — это аддитивный множитель, а beta — множитель линейного смешивания, мы можем получить 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 Более сложные деревья смешивания предлагают ещё большую гибкость для комбинирования ваших анимационных клипов. Обратите внимание, что значения, используемые для управления деревом смешивания (alpha и beta выше), являются простыми свойствами узлов смешивания. Это означает, что сами эти свойства также могут управляться анимационным фреймворком.
Документация по свойствам
blendTree : AbstractClipBlendNode
Это свойство содержит корень дерева анимационного смешивания, который будет оцениваться перед интерполяцией аниматором.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qml-qt3d-animation-blendedclipanimator.html