This blog post is written by a guest blogger, the maintainer of Qt3D module and the Managing Director KDAB UK Ltd, Dr Sean Harmer.
KDAB is pleased to announce that the Qt 5.5.0 release includes a Technology Preview of the Qt3D module. Qt3D provides a high-level framework to allow developers to easily add 3D content to Qt applications using either QML or C++ APIs. The Qt3D module is released with the Technology Preview status. This means that Qt3D will continue to see improvements across the API design, supported features and performance before release. It is provided to start collecting feedback from users and to give a taste of what is coming with Qt3D in the future. Please grab a copy of the Qt 5.5.0 release and give Qt3D a test drive and report bugs and feature requests.
Qt3D provides a lot of functionality needed for modern 3D rendering backed by the performance of OpenGL across the platforms supported by Qt with the exception of iOS. There is work under way to support Qt3D on iOS and we expect this to be available very shortly. Qt3D allows developers to not only show 3D content easily but also to totally customise the appearance of objects by using the built in materials or by providing custom GLSL shaders. Moreover, Qt3D allows control over how the scene is rendered in a data-driven manner. This allows rapid prototyping of new or custom rendering algorithms. Integration of Qt3D and Qt Quick 2 content is enabled by the Scene3D Qt Quick item. Features currently supported by the Qt3D Technology Preview are:
- A flexible and extensible Entity Component System with a highly threaded and scalable architecture
- Loading of custom geometry (using built in OBJ parser or assimp if available)
- Comprehensive material, effect, render pass system to customise appearance
- Data-driven renderer configuration – change how your scene is rendered without touching C++
- Support for many rendering techniques – forward, deferred, early z-fill, shadow mapping etc.
- Support for all GLSL shader stages (excluding compute at present)
- Good support for textures and render targets including high-dynamic range
- Support for uniform buffer objects where available
- Out of the box support for simple geometric primitives and materials
- Keyboard input and simple camera mouse control
- Integration with Qt Quick 2 user interfaces
Beyond rendering, Qt3D also provides a framework for adding additional functionality in the future for areas such as:
- Physics simulation
- Skeletal and morph target animation
- 3D positional audio
- Stereoscopic rendering
- Artificial intelligence
- Advanced input mechanisms
KDAB and The Qt Company will continue to improve Qt3D over the coming months to improve support for more platforms, input handling and picking, import of additional 3D formats, instanced rendering, more materials and better integration points to the rest of Qt. If you wish to contribute either with code, examples, documentation or time then please contact us on the #qt-3d channel on freenode IRC or via the mailing lists.