Skip to main content

QtWS17 - Qt 3D as a Runtime Enabler, Laszlo Agocs, The Qt Company

Qt 3D is a framework for implementing data-driven 3D scenes with C++ or QML. However, building applications directly with this API can be a daunting task, especially for newcomers. Setting up frame graphs, render passes, materials and similar all require prior knowledge of 3D graphics pipelines. There is also a lack of tooling: those looking for designer-friendly scene and animation editors have been left out in the cold – until recently. With the advent of the 3D Studio contribution from NVIDIA, the tooling situation is going to be improved vastly. At the same time, when it comes to the runtimes, this is going to lead to a more convoluted graphics engine landscape inside Qt: OpenGL (or other graphics APIs) and scene graphs built on top are now in direct and independent use in Qt Quick, Qt 3D, Qt 3D Studio, and a number of other traditional components in the stack. This leads to the exciting question of the feasibility of unifying the low-level layers by implementing the runtime for 2D/3D user interface frameworks like Qt Quick, Qt 3D Studio, or anything else, on top of Qt 3D. While this may seem logical and straightforward at first, the road to fully retrofitting a foreign scene graph and material, lighting and animation system on top of Qt 3D is definitely bumpy, to say the least. In this talk we are going to take a look at the experiences and lessons learnt while attempting to implement some of the above as part of a research project. The results, and the issues encountered along the way, will provide valuable input to anyone working with Qt 3D, either in C++ or QML.