| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The animation aspect can already animate any property of a QNode
subclass. However, the render aspect allows to render a skinned mesh
utilising a QSkeletonLoader that does not create the corresponding
frontend QJoint objects (subclasses of QNode). Some skeletons can be
large (10's or 100's of joints) so this is a good memory conserving
optimization.
The consequence of not creating the frontend joints however, is that
without the QNodes to address, we cannot animate their local poses. To
combat this without giving up on the above optimization we add a
backend node for QAbstractSkeleton to the animation aspect. This node
contains a vector of local poses for the joints in the same order as
the render aspect creates and flattens the joint hierarchy in (see the
vector of JointInfo in the SkeletonData in the render aspect). The
animation aspect can then use this special knowledge to efficiently
animate the joints of a skeleton and each frame, inform the render
aspect backend of the new set of local pose transformations, prior to
the render aspect calculating the skinning matrix palette and supplying
that to the armature component for rendering.
This will require the animation aspect to be able to map channels in
an animation onto the joint indices of the skeleton backend nodes. By
default, they will be applied to matching indices in the vector of local
poses. However, an optional name property will be allowed in the
animation clip channels to permit re-mapping of animation clips to
similar skeletons (i.e. allow animations to be reused between different
skeletons where they share some joint names). This will be done in
follow up commits.
Change-Id: I81ad258f59bb0ddd6a49456840c860783f6fb340
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
| |
Introduces "clock" property to QAbstractClipAnimator and updates
associated tests. Updated backend animator nodes and associated
evaluation jobs.
Change-Id: Id18cabdd710b9b7253772642f21f63043d316a42
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
| |
When passing around animator handles, care must be taken before
actually using them since the animator component may have been
destroyed in the meantime.
Change-Id: Ib963d1422e1626b5a06e5bb157a0b6aab76b961d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
It handles both loadign from file and from data constructed using the
public API.
Change-Id: Ic9e71dc60c36869548323312f7129df6c9edd763
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduced an abstract base class for types of animation clip. Also
renamed QAnimationClip to QAnimationClipLoader since it loads data
from files.
Also renamed corresponding backend type and fixed up unit tests
accordingly.
Task-number: QTBUG-58898
Change-Id: I01a96e108cbbcd12e01913693e96610598965018
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
|
|
|
|
|
|
|
|
| |
Too much to fix up for 5.9 so remove and defer for 5.10.
Task-number: QTBUG-58905
Change-Id: Ie5b4f172e57beac12933fa0db5f102b4dc9346fc
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
|
|
|
|
|
| |
Change-Id: Ic6a70ee57f56dff7406b5917d620ea15b74ecb44
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
Also added loops property to the blendedclipanimator as mandated by rebase.
Note: only handles LERP with single node for now
Change-Id: I91e071467c604279262ec04288bc7f8b2b19f4a1
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I7b8fade4aa8855030e882227df21882e55d8690f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Introduces more logic to QNode::sceneChangeEvent to set
properties being animated without every QNode subclass
needing to override it. We can like do a follow up commit
that removes some such overrides.
Change-Id: I2a96e0929b2fbd39ca3866908fee11c842bede42
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I198a5d0d198c56756e4ac045527e02969b4dcecb
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I98aecf101eb052979f7a2e98c8bfcf899f27fb02
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I5ef29ada7fd6584674d98162f7106177e199b720
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Defers the actual work to AnimationClip. Also made all backend nodes
have a common base class to make it easy to track the Handler.
Added a manual test to exercise this and which we can build up
over time as we add API.
Change-Id: I7cdd8da948498544059ba51efe38642dd54ea410
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Three levels of animation playback are available at present for
keyframe animation:
1) Direct playback of a clip via QClipAnimator
2) Playback of a blend tree of clips via QBlendedClipAnimator
3) Playback of a set of blend trees controlled with a state machine
via QConductedClipAnimator
This commit adds the frontend and backend nodes for all 3
components and registers them. The blended and conducted animator
components are just empty skeletons for now.
Change-Id: If2f0a912c003f3d20f830a8f6174946eea6b47e6
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
Change-Id: I7bbfb9e282f1a59cbb7f211dd5cebff8e30f3779
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|