Skip to content
Professional 3D asset creation and integration workflow for Qt
C++ GLSL QML Python QMake CMake Other
Branch: master
Clone or download
mkrus and lemirep Add more detailed instructions related to building from source
In particular requirements due to Kuesa being a Qt module.

Change-Id: Ic179cd4e0e26a8122f308fa105d12039c71d34db
Reviewed-by: Paul Lemire <>
Latest commit a381b03 Jan 31, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
config.tests/draco various - update Copyright year Mar 11, 2019
docs Fix typo in FX docs Oct 15, 2019
tests ToneMappingAndGammaCorrectionEffect: make unit test work on Windows Dec 4, 2019
tools Only deploy QTC templates when building for the market place Jan 31, 2020
.clang-tidy .clang-tidy - Further simplify clang-tidy configuration Dec 26, 2018
.clazy We are going public! Dec 3, 2018
.gitattributes Untrack the docs folder from lfs Jul 26, 2019
.qmake.conf Don't use the Qt versioning Sep 27, 2019
LICENSE.AGPL.txt We are going public! Dec 3, 2018
LICENSING.txt We are going public! Dec 3, 2018
package.pri Remove built executables from examples package Nov 19, 2019
sync.profile We are going public! Dec 3, 2018

Kuesa module for Qt 3D

alt text

Kuesa is a module for Qt 3D which provides:

  • Support for glTF 2 importing
  • Helpers for accessing and manipulating loaded content
  • Custom PBR material
  • Custom forward renderer for adding effects
  • A Qt Creator template for quickly creating new Kuesa based projects


Note: this repository requires git-lfs support.

Kuesa requires Qt 3D from Qt 5.12.5, Qt 5.13.1 or later.



Anything with OpenGL 3.2 support (or more recent) is adequate.

Currently supported operating systems are:

  • Linux
  • Windows
  • Mac OS


Here's a list of Chipsets/Devices Kuesa has successfully been tested on:

  • Apple iPad 5 (PowerVR GT7600)
  • Apple iPhone 7
  • OnePlus 3T (Android, Qualcolmm Snapdragon 821/Adreno 430)
  • NVidia Tegra K1 (embedded Linux)
  • iMX8 (embedded Linux)

Kuesa supports anything with OpenGL ES 3.2 or above.

OpenGL ES 3.1 or lower is supported but with a limited feature set depending on available OpenGL extensions.

  • For HDR support, GL_OES_texture_half_float is required
  • For anti aliasing, ARB_texture_multisample and GL_EXT_color_buffer_half_float are required

Optional Dependencies

Kuesa can optionnally use the Draco mesh compression library, either through an embedded version, or a version present on the system. Draco can be used to dramatically decrease the size of glTF files.

Kuesa supports the KHR_draco_mesh_compression glTF extension as defined here.

By default, Kuesa will build with its own embedded version of the Draco library. This can be enforced with:

qmake -- --draco=qt

To build Kuesa without any support for Draco, run qmake like this:

qmake -- --draco=no

To build Kuesa with an external version of Draco, run qmake like this:

qmake -- --draco=system

If Draco is not installed in the default location on your system, you can set the DRACOSDK environment variable to point to where Draco is installed. Use the DRACOSDK_LIBS environment variable to point to the folder containing the Draco libraries.

Note that Kuesa has last been tested with Draco at commit 8833cf878e6fd43c5a3fd6e4231212e25e25e632.

The glTF editor, provided with Kuesa, is able to compress existing glTF 2.0 assets with Draco.


Kuesa is composed of:

  • A Qt module with core classes
  • A QML plugin
  • The gltfEditor tool to preview and process glTF 2.0 files
  • The assetprocessor, a command line tool to compress meshes, embed or extract binary assets, etc
  • A simple glTFViewer application to view files, including selecting cameras and animations
  • The cubemaptooctahedralmap tool to convert cube maps to octahedral maps to enable PBR rendering on ES 2 platforms

glTF Editor

glTF Editor

The glTF Editor can be used both by the designer and developer in order to preview and pre-process the content of glTF files.

The designers will use the editor to check the rendering of the scene, verify that materials are correct, preview animations, etc.

The developers will also use the editor check model properties such as sizes, asset names, etc.

The editor can also be used to compress meshes, embed (or extract) binary assets, etc.

In the 3d view, use the mouse to click on meshes to select them in the collection browser. Use:

  • Simple click to select meshes
  • Shift-click to select materials
  • Alt-click to select entities


Kuesa builds as a Qt module and will be installed alongside Qt. The main advantage is that once installed, using Kuesa in your projects is as easy as adding QT += kuesa to your project file. The down side is that building Kuesa from source can be a little more complicated if you're not used to building Qt itself already.

Note: you DO NOT have to build Qt from source, building Kuesa against a pre-installed version of Qt should work fine.

But building a module means that Kuesa has dependencies that are similar to those that apply when building Qt from source (Instructions on how to build Qt from source can be found here). In particular:

  • perl must be installed and included in the PATH
  • if you have downloaded Kuesa as an archive from github, you must create an empty .git folder at the root of the kuesa source directory.

Once these are installed, syncqt will be able to generate the module headers at build time. Simply run:

make install

Should examples not be built, try:

make sub-examples
cd examples
make install

To install the Qt Creator template, copy the entire kuesa folder from tools/qtc_templates to the templates/wizards folder inside the Qt Creator install location.


The reference documentation is available at:


Kuesa uses the following 3rd-party software:

Python Binding

A python binding it available, based on PySide 2. Please check the build instructions in the src/python and the sample application in examples/kuesa/python.


Please file issues here

About KDAB

Kuesa is maintained by Klarälvdalens Datakonsult AB (KDAB).

KDAB, the Qt experts, provide consulting and mentoring for developing Qt applications from scratch and in porting from all popular and legacy frameworks to Qt. We continue to help develop parts of Qt and are one of the major contributors to the Qt Project. KDAB is also behind the development effort of the Qt 3D module. We can give advanced or standard trainings anywhere around the globe.

You can’t perform that action at this time.