• This repository has been archived on 02/Nov/2023
  • Stars
    star
    137
  • Rank 260,754 (Top 6 %)
  • Language
    C++
  • Created over 5 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Professional 3D asset creation and integration workflow for Qt

DEPRECATED

Kuesa Runtime 1.* is deprecated. It has been replaced by Kuesa Runtime 2 available here.

Kuesa Runtime module for Qt 3D

Note: The master branch contains the last stable release. The dev branch contain the upcoming release. dev might be in an unstable or even broken state during development. Please use [releases][github-release] or master to get a stable version.

alt text

Kuesa Runtime is a module for Qt 3D which provides:

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

It is the developer facing part of the Kuesa 3D design and integration workflow.

Kuesa Studio is the designer facing part of Kuesa.

It provides:

  • glTF2 exporters and Kuesa specific glTF extensions for major 3D design softwares:
    • Kuesa for Blender
    • Kuesa for 3ds Max
    • Kuesa for Maya (coming soon)
  • A library of real time materials that can be exported to glTF and previewed in Blender
  • Tooling around asset conditioning to decrease asset size and optimize for embedded use cases.

More information about Kuesa Studio can be found here.

Requirements

Note: this repository requires git-lfs support.

Kuesa Runtime 1.4 requires Qt 3D from Qt 5.15 or Qt 6.0.

Note: Latest Qt 3D sources for 5.15 can be freely obtained from here.

Hardware

Desktop

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

Currently supported operating systems are:

  • Linux
  • Windows
  • Mac OS

Embedded

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 Runtime 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 optionally 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 kuesa.pro -- --draco=qt

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

qmake kuesa.pro -- --draco=no

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

qmake kuesa.pro -- --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.

Components

Kuesa Runtime is composed of:

  • A Qt module with core classes
  • A QML plugin
  • The gltfViewer tool to preview glTF 2.0 files, including selecting cameras and animations

Installation

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:

qmake
make
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.

Clearing Stale Caches

If you've updated Kuesa or have used Kuesa previously, it is recommended to clear the Qt 3D cached shader files.

These cache is located at Qt::TempLocation which is usually ""C:/Users//AppData/Local/Temp" on Windows and "/tmp" on Linux.

Remove all the .qt3d files present at that location to ensure Kuesa rebuilds all the shaders with all the updates.

Documentation

The reference documentation is available at: https://kdab.github.io/kuesa/

3rd-party

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.

Support

Please file issues here

KDAB will happily accept external contributions; however, all contributions will require a signed Contributor License Agreement.

About KDAB

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

The KDAB Group is the global No.1 software consultancy for Qt, C++ and OpenGL applications across desktop, embedded and mobile platforms.

The KDAB Group provides 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. We can give advanced or standard trainings anywhere around the globe on Qt as well as C++, OpenGL, 3D and more.

Please visit https://www.kdab.com to meet the people who write code like this.

More Repositories

1

hotspot

The Linux perf GUI for performance analysis.
C++
3,925
star
2

GammaRay

GammaRay is a tool to poke around in a Qt-application and also to manipulate the application to some extent.
C++
1,410
star
3

codebrowser

Woboq CodeBrowser
C++
1,077
star
4

cxx-qt

Safe interop between Rust and Qt
Rust
941
star
5

KDDockWidgets

KDAB's Dock Widget Framework for Qt
C++
623
star
6

android_openssl

OpenSSL scripts and bins for Android (useful for Qt on Android apps)
C
291
star
7

KDToolBox

KDAB's collection of miscellaneous useful C++ classes and stuff
C++
259
star
8

KDBindings

Reactive programming & data binding in C++
C++
208
star
9

Charm

The Cross-Platform Time Tracker
C++
192
star
10

kdabtv

This repository contains the code of the examples showcased in the KDAB TV video series.
C++
186
star
11

DeclarativeWidgets

Library and tools for creating QtWidget UIs using QML
C++
168
star
12

KDStateMachineEditor

A framework for creating Qt State Machine metacode using a graphical user interface
C++
159
star
13

KDSoap

A Qt-based client-side and server-side SOAP component
C++
140
star
14

qt3d-examples

Qt3D Examples
C++
131
star
15

KDReports

Qt library for generating printable and exportable reports from code and from XML descriptions.
C++
115
star
16

KDChart

A Qt tool for creating business and scientific charts. This is the canonical repository for KDChart.
C++
99
star
17

KDAlgorithms

Algorithm wrappers
C++
77
star
18

sqlate

C++
58
star
19

android

KDAB's Android gems
C++
45
star
20

KDSingleApplication

KDAB's helper class for single-instance policy applications
CMake
45
star
21

integrating-qq2-with-opengl

C++
43
star
22

virtual-keyboard-demo

Example source code for the implementation of a virtual keyboard based on Qt input method framework
C++
42
star
23

Qt4to5

C++
40
star
24

KDMacTouchBar

KDAB's Qt Widget for the Mac Touch Bar
Objective-C++
37
star
25

KDTools

KDTools aims to ease the daily work of Qt programmers by providing a number of well-designed, easy-to-use widgets and non-gui classes.
C++
30
star
26

FatCRM

Desktop Application for SugarCRM
C++
28
star
27

qsslint

Linter for Qt stylesheet files
C++
21
star
28

ctf2ctf

Common Trace Format to Chrome Trace Format converter
C++
18
star
29

eglinfo

Provides information about available EGL configurations.
C++
16
star
30

GammaRay-plugin-examples

Example plug-ins for GammaRay
C++
14
star
31

perfparser

fork of qt-creator/perfparser.git with not-yet upstreamed changes required for hotspot
C++
14
star
32

homebrew-tap

Homebrew formulas for KDAB projects
Ruby
11
star
33

OpenEmbedded-Archos

An Angstrom distro for the Archos 101IT tablet based on OpenEmbedded, with Qt4 and Qt5 support including multitouch and OpenGL/ES2
C
11
star
34

QMemstat

Inspect Pagemaps of Programs
C++
8
star
35

KDBoatDemo

KDAB Nautical UI - concept of the next generation UI for sailing boats
QML
8
star
36

KDUtils

A set of C++ helpers and wrappers around the C++ standard library
C++
7
star
37

autogen

Common build system code for KDAB products
Python
5
star
38

clang-format-rs

clang-format wrapper for rust
Rust
4
star
39

patent_defense

Defensive Patent Publications
C
3
star
40

qnxtools

Python
3
star
41

KDGpu

KDGpu is a thin wrapper around Vulkan to make modern graphics easier to learn and use
C++
3
star
42

WebKit

QtWebkit clone
C++
2
star
43

event_loop_watchdog

A class to detect whenever your main event loop gets blocked for more than x milliseconds
Dart
2
star
44

cabin-demo

KDAB Flutter demo application.
Dart
1
star
45

GammaRayPlatformProbe

GammaRay Platform Probe
C++
1
star
46

kdab-overlay

Gentoo Portage overlay containing KDAB software
Shell
1
star
47

kuserfeedbackdocker

Docker container for the KUserFeedback server.
PHP
1
star
48

unicode_view

Playground repo for unicode view
C++
1
star
49

blog-vscode-template

vscode template for C++ projects (Cross referenced by the blog, do not delete)
CMake
1
star
50

vscode-qttest

VSCode extension for supporting Qt tests in the "Testing" sidebar
TypeScript
1
star