Qt 3D

Qt 3D provides functionality for near-realtime simulation systems with support for 2D and 3D rendering in both Qt C++ and Qt Quick applications.

The functionality in Qt 3D is divided into the following C++ modules:

Qt3DCore

Qt 3D module contains functionality to support near-realtime simulation systems

Qt3DInput

Qt 3D Input module provides classes for handling user input in applications using Qt3D

Qt3DLogic

Qt 3D Logic module enables synchronizing frames with the Qt 3D backend

Qt3DRender

Qt 3D Render module contains functionality to support 2D and 3D rendering using Qt 3D

The following C++ modules are in still development but are available as technology previews:

Qt3DAnimation

Qt 3D Animation modules provides a set of prebuilt elements to help you get started with Qt 3D

Qt3DExtras

Qt 3D Extras module provides a set of prebuilt elements to help you get started with Qt 3D

Qt3DScene2D

Qt 3D Scene2D module provides a way to render Quick2 qml content to a Qt 3D texture

For Qt Quick applications, Qt 3D provides the following QML modules:

Qt3D.Core

Provides core Qt 3D QML types

Qt3D.Input

Provides QML types for Qt 3D user input

Qt3D.Logic

Provides QML types to synchronize frames with the 3D backend

Qt3D.Render

Provides Qt 3D QML types for rendering

The following QML modules are in still development but are available as technology previews:

Qt3D.Animation

Provides Qt 3D QML types for the animation module

Qt3D.Extras

Provides Qt 3D QML types for the extras module

QtQuick.Scene2D

Provides Qt 3D QML types for the scene2d module

QtQuick.Scene3D

Provides Qt 3D QML types for the Scene3D module

Getting Started

For a C++ application that performs 2D or 3D rendering, collision detection, and also handle user input, add the following line to its qmake .pro file:

QT += 3dcore 3drender 3dinput 3dlogic 3dextras 3danimation

To include the definitions of the modules' classes, use the following directives:

#include <Qt3DCore>
#include <Qt3DRender>
#include <Qt3DInput>
#include <Qt3DLogic>
#include <Qt3DExtras>
#include <Qt3DAnimation>

A Qt Quick application requires also additional dependencies:

QT += 3dcore 3drender 3dinput 3dlogic 3dextras qml quick 3dquick 3danimation

Overview

The high level design and motivation for Qt 3D is described in the Qt 3D Overview. The Qt 3D Render aspect offers support for data-driven configuration as described in Qt 3D Render Framegraph.

Reference

Qt 3D Platform Support

Qt 3D has the following support for platforms:

  • Microsoft Windows (win32) - Supported
  • Linux X11 - Supported
  • macOS - Supported although there may be some retina scaling issues
  • Android - Supported
  • Embedded Linux - Supported
  • iOS - Supported since (Qt 5.7)
  • WinRT - Not supported yet

Licenses and Attributions

Qt 3D is available under commercial licenses from The Qt Company. In addition, it is available under the GNU Lesser General Public License, version 3, or the GNU General Public License, version 2. See Qt Licensing for further details.

Furthermore Qt 3D contains third party modules under following permissive licenses:

Assimp - Clipper, version 4.8.8

Boost Software License 1.0

Assimp - Open Asset Import Library, version 4.1.0

BSD 3-Clause "New" or "Revised" License

Assimp - Open3DGC

MIT License and BSD 2-Clause "Simplified" License

Assimp - Poly2Tri Polygon Triangulation Library

BSD 3-clause "New" or "Revised" License

Assimp - RapidJSON

MIT License and BSD 3-Clause "New" or "Revised" License

Assimp - The OpenDDL-Parser

MIT License

Assimp - Unzip, version 1.01e

zlib License

Assimp - Utf8Cpp

Boost Software License 1.0

Assimp - Zip

Public Domain

Assimp - irrXML

zlib License

© 2021 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.