Overview of Qt 3D 2.0 – Part 1
by Sean Harmer of KDAB
Back in the days when Qt was owned by Nokia, a development team in Brisbane had the idea of making it easy to incorporate 3D content into Qt applications. This happened around the time of the introduction of the QML language and technology stack, and so it was only natural that Qt 3D should also have a QML based API in addition to the more traditional C++ interface like other frameworks within Qt.
Qt 3D was released alongside Qt 4 and saw only relatively little use before Nokia decided to divest Qt to Digia. During this transition, the Qt development office in Brisbane was closed and unfortunately Qt 3D never saw a release alongside Qt 5. This chain of events left the Qt 3D code base without a maintainer and left to slowly bit rot.
With OpenGL taking a much more prominent position in Qt 5’s graphical stack — OpenGL is the underpinning of Qt Quick 2’s rendering power — and with OpenGL becoming a much more common part of customer projects, KDAB decided that it would be good for us and for the Qt community at large if we took over maintainership and development of the Qt 3D module. To this end, several KDAB engineers have been working hard to bring Qt 3D back to life and moreover to make it competitive to other modern 3D frameworks.
This article is the first in a series that will cover the capabilities, APIs, and implementation of Qt 3D in detail. Future articles will cover how to use the API in various ways from basic to advanced with a series of walked examples. For now, we will begin in this article with a high-level overview of the design goals of Qt 3D; some of the challenges we faced; how we have solved them; what remains to be done before we can release Qt 3D 2.0; and what the future may bring beyond Qt 3D 2.0.