Skip to main content

QtWS17 Breathing life into your applications: Animation with Qt 3D, Sean Harmer, KDAB

For a long time it has been possible to add some level of animation to your Qt applications by way of QPropertyAnimation, and then more recently with the Qt Quick Animation framework. You could even use these along with the object types within Qt 3D to animate your virtual worlds. However, we can go further both in terms of features and performance. Qt has traditionally targeted developers. However, we see increasing demand for it to adapt and to also support the needs of content creators and artists. Animation is a prime example of this. It is no longer feasible to provide only support for creating animations programmatically. Artists want to be able to use their own familiar tools such as Blender or Maya to author animations and then be able to export them for consumption by applications. This meant adding support for key frame animations – something developers have also been asking for over the years. Qt 3D now offers the ability to consume key frame animations exported from external tools or to create your own key frame animations in code. In addition Qt 3D offers a collection of types to make it convenient to work with such animation data. In this talk we will take a deep dive into the new animation subsystem of Qt 3D. We will cover: • How to create key frame animation data with tools or code. • How to play back the animation data and apply it to your own objects. • Skeletal animations. • Using Animation blend trees to combine animations. • Controlling time with animation clocks. • Orchestrating the transitions between animations. • Morph target animations. In addition to seeing the new features of the animation framework, we will also take a behind the scenes look at how Qt 3D evaluates the animations. Qt 3D has a scalable architecture allowing for good performance whilst leaving the main thread free for your application logic. We will see how properties are updated on both the frontend and backend of Qt 3D allowing the other parts of your application to see the updates.