
Entwicklung von Prototypen medizinischer Geräte: Von der Softwaregestaltung bis zur regulatorischen Prüfung
Ich werde nicht lügen: Viele der Projekte, die wir bei Scythe Studio durchführen, sind mit der Medizingerätebranche verbunden. Wir haben […]
Join us at Qt C++ Warsaw Meetup - 21.08.2025
Sign up for free!Willkommen zu diesem umfassenden Leitfaden über 3D-Grafiken in Qt. In diesem Artikel werden wir drei Hauptmöglichkeiten untersuchen, wie Sie 3D-Inhalte in Ihren Qt-Anwendungen zum Leben erwecken können:
Wir werden die Stärken und Einschränkungen jeder Herangehensweise durchgehen und Ihnen helfen, die beste Lösung für Ihr nächstes Projekt auszuwählen. Obwohl wir alle Optionen vergleichen, glauben wir, dass Qt Quick 3D die überzeugendste Wahl ist – deshalb konzentrieren wir uns in dem folgenden Beispiel und Mini-Tutorial darauf. Sie werden Qt Quick 3D in Aktion sehen und einen Vorsprung beim Erstellen eigener 3D-Anwendungen erhalten.
Wenn Sie sich in die Qt-Entwicklung stürzen und Unterstützung oder Beratung benötigen, zögern Sie nicht, uns zu kontaktieren. Egal ob Sie Hilfe bei der Integration von 3D in Ihre Qt-Anwendungen brauchen oder sich im Qt-Ökosystem zurechtfinden wollen – wir sind für Sie da!
Qt 3D bietet ein Entity-Component-System (ECS), mit dem Sie eine Szene aus generischen QEntity-Objekten zusammenstellen können, denen Komponenten wie Rendering, Eingabe, Physik oder Animation hinzugefügt werden. Ein flexibler Framegraph beschreibt, wie jedes Frame gerendert wird, sodass Sie Deferred Renderer, Schatten-Passes, Multi-Viewport-Setups und mehr erstellen können, ohne GPU-APIs direkt anfassen zu müssen.
Wenn Sie an einem Qt 3D-basierten Projekt arbeiten und eine Migration in Erwägung ziehen – was wir generell empfehlen – kontaktieren Sie uns gerne. Wir helfen Ihnen dabei, den Umstieg effizient zu planen und umzusetzen.
Qt Quick 3D erweitert den Qt Quick-Szenengraphen um räumliche Knoten, sodass 2D- und 3D-Elemente denselben Renderer und das gleiche Timing-Modell verwenden. Sie beschreiben Szenen in QML (Model, Camera, Light, Material usw.) und erhalten designertaugliche Tools im Qt Design Studio.
Um zu sehen, wie leistungsfähig und intuitiv Qt Quick 3D sein kann, werfen Sie einen Blick auf unsere Demo von Brain Viewer – ein 3D-Modell des menschlichen Gehirns, erstellt mit Qt Quick 3D. Dieses Beispiel zeigt das Potenzial von Qt Quick 3D für medizinische und edukative Anwendungen sowie die Möglichkeit, komplexe 3D-Daten auf interaktive und benutzerfreundliche Weise zu visualisieren.
Qt stellt den Zugriff auf die GPU über QOpenGLWidget (Legacy) und die moderne QRhi-Abstraktion (QRhiWidget, QRhi::create()) bereit. Dieser Ansatz überlässt alle Rendering-Entscheidungen Ihrer eigenen Engine.
Kriterium | Qt Quick 3D | Qt 3D | Low-Level OpenGL/Vulkan |
---|---|---|---|
API-Stil | Deklaratives QML, kleine C++-Hilfen | ECS C++ & QML | Reines C++, Shader & Command Buffers |
Renderer | Integriert in Quick-Szenengraph | Getrennte Aspekte/Threadpool | Eigenständig oder Drittanbieter |
Performance | UI-optimiert, gut auf Desktop; begrenzt auf GLES 2 | Akzeptabel, aber schwergewichtig; Threading-Kosten bei manchen GPUs | Maximal – liegt ganz bei Ihnen |
Custom Passes | Begrenzt (eigene Materialien & Post-FX via Shader-Code — oder Import aus externen Tools wie Blender) | Volle Kontrolle über Framegraph | Unbegrenzt |
Tooling | Qt Design Studio, Balsam-Importer | Minimal; manuelle Asset-Vorbereitung | Extern (RenderDoc, Nsight usw.) |
Lizenzierung (Open Source) | GPL-3 | LGPL-3 | Hängt von der verwendeten Qt-Edition ab |
Status / Roadmap | Aktive Entwicklung; neue Funktionen in jedem Minor-Release | Veraltet, ab Qt 6.8 entfernt | Qt-Core-APIs stabil; Weiterentwicklung liegt bei Ihnen |
Ideale Einsatzbereiche | Dashboards, HMIs, gemischte 2D/3D-UIs | Simulation, CAD, benutzerdefinierte Renderer basierend auf ECS | Spiel-Engines, wissenschaftliche Visualisierung, Integration von Legacy-Engines |
Das Qt-Framework positioniert Qt Quick 3D nun eindeutig als die zukunftsweisende 3D-Schicht, während Qt 3D in den Wartungsmodus übergeht und Low-Level-OpenGL/Vulkan-Lösungen für spezielle Szenarien mit maximaler Kontrolle vorbehalten bleiben. Bewerten Sie Ihre funktionalen Anforderungen, das Lizenzmodell und die Expertise Ihres Teams anhand der obigen Tabelle, um den nachhaltigsten Weg für Ihre nächste 3D-fähige Anwendung zu finden.
Wenn Sie derzeit Qt 3D verwenden und eine Migration zu Qt Quick 3D in Erwägung ziehen, kann der Übergang relativ reibungslos verlaufen – insbesondere wenn Ihre Anwendung auf Standard-3D-Elementen wie Modellen, Kameras und Lichtern basiert. Obwohl Qt Quick 3D eine modernere und höherstufige API bietet, hat es nicht denselben Low-Level-Zugriff wie Qt 3D. Das bedeutet, dass einige benutzerdefinierte Rendering-Techniken oder komplexe Framegraph-Setups überarbeitet werden müssen. Dennoch machen die Flexibilität und die Integration mit dem Qt Quick-Szenengraph Qt Quick 3D zu einer attraktiven Wahl für neue Projekte. Wenn Sie bereits mit QML vertraut sind, wird Ihnen der Umstieg auf Qt Quick 3D wahrscheinlich leichtfallen – insbesondere dank der zahlreichen verfügbaren Designer-Tools.
Während der Arbeit an vielen verschiedenen Anwendungen habe ich immer nur in zwei Dimensionen „gedacht“ – und das entpuppte sich als eine Art Falle. Wenn man genauer darüber nachdenkt, gibt es zahlreiche Anwendungsfälle, in denen eine zusätzliche Dimension notwendig ist. Nehmen wir z. B. Software für einen 3D-Drucker. Wie sollte man eine Vorschau des zu druckenden Modells rein zweidimensional umsetzen? Genau deshalb machte ich mich auf die Suche nach einer Lösung, mit der ich 3D-Elemente in meinen Anwendungen erstellen konnte – mit bereits bekannten Technologien wie QML. Bei ScytheStudio können wir unser Wissen in dem Bereich, der uns interessiert, leicht vertiefen. Darüber hinaus gewinnen wir nicht nur Zeit für die Entwicklung, sondern auch wertvolle Ressourcen.
Glücklicherweise gibt es Qt Quick 3D – es stellt uns eine einfache High-Level-API zur Verfügung, mit der man 3D-Elemente mithilfe der vertrauten QML-Sprache erstellen kann. Es deckt auch Bereiche wie Animationen, Kameras, Licht und Materialien ab. Ziel von Qt Quick 3D ist es, Werkzeuge für Entwickler bereitzustellen, die kein tiefgreifendes Wissen über komplexe Computergrafik besitzen.
Eine Lösung, die einen nicht direkt mit komplizierten mathematischen Formeln überflutet und dabei perfekt in meinen Technologiestack passt, hat sofort mein Interesse geweckt.
Ich begann voller Vorfreude, indem ich die Dokumentation durchging und Videotutorials anschaute. Nach einer kurzen Einführung in die Welt von Qt Quick 3D beschloss ich, ein einfaches Projekt zu starten. Als erstes musste ich das Qt3D-Modul über das Wartungstool herunterladen, da es nicht im Kernmodul enthalten ist. Danach musste man lediglich eine Import-Anweisung in der QML-Datei hinzufügen – und voilà, Qt Quick 3D ist einsatzbereit!
Unten sehen Sie mein erstes Programm, das mit Qt Quick 3D erstellt wurde. Die fehlende Flüssigkeit ist auf die notwendige Komprimierung der GIF-Datei zurückzuführen.
import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15 import QtQuick3D 1.15 import QtQuick3D.Materials 1.15 import QtQuick3D.Helpers 1.15 Window { id: root width: 640 height: 960 visible: true title: qsTr("QML 3D") View3D { id: view anchors.fill: parent environment: SceneEnvironment { clearColor: "#112220" backgroundMode: SceneEnvironment.Color } Node { id: scene PerspectiveCamera { id: camera z: 300 } DirectionalLight { z: 400 brightness: 100 } Model { source: "#Cube" materials: DefaultMaterial { diffuseColor: "green" } PropertyAnimation on eulerRotation.x { loops: Animation.Infinite duration: 5000 to: 360 from: 0 } PropertyAnimation on eulerRotation.y { loops: Animation.Infinite duration: 5000 to: 360 from: 0 } } } } }
Sieht vielleicht nicht spektakulär aus, aber für 30 Minuten Arbeit bin ich stolz auf das Ergebnis 😉
Am Anfang des Projekts sehen Sie die Initialisierung eines Standard-Window-Elements. Als Nächstes folgt in der Hierarchie das View3D-Objekt. Es ist gewissermaßen das Wurzelobjekt für alle 3D-Elemente. Ich habe das Standard-Environment durch ein benutzerdefiniertes SceneEnvironment mit eigener Hintergrundfarbe ersetzt.
Anschließend sehen Sie ein Objekt vom Typ Node, also eine Klasse, von der alle Qt Quick 3D-Elemente abgeleitet sind. Innerhalb davon habe ich drei Elemente platziert: PerspectiveCamera, DirectionalLight und Model. Schauen wir sie uns einzeln an:
PerspectiveCamera bietet uns einen „Blick“ auf die gesamte Szene. Es ist das Auge, durch das wir die Szene beobachten.
DirectionalLight beleuchtet die ganze Szene. Es ist wichtig, dieses Element nicht zu vergessen, denn ohne Licht erscheinen die meisten Objekte schwarz (Menschen nehmen Farben nur wahr, weil Licht von Materialien reflektiert wird).
Model ist ein physisches Objekt, das wir erstellen. In diesem Beispiel habe ich das eingebaute Würfelobjekt mit dem Standardmaterial verwendet, das ich grün eingefärbt habe. Um den Würfel zu bewegen, habe ich zwei Animationen hinzugefügt, die die Rotation entlang der X- und Y-Achse verändern.
Nachdem wir die Grundlagen abgedeckt haben, ist es Zeit für etwas Anspruchsvolleres. Beim Lesen der Dokumentation fand ich heraus, dass Qt Quick 3D das Verwenden von Modellen unterstützt, die in Programmen wie Blender, Maya oder 3ds Max erstellt wurden. Um ein solches Modell zu importieren, muss es zuerst in QML-Code konvertiert werden. Einen Artikel darüber, wie man sauberen QML-Code schreibt, finden Sie in unserem Blog. Für die Konvertierung verwenden wir das integrierte Balsam Asset Import Tool (es befindet sich im Pfad: Qt/Tools/QtDesignStudio-XXX/qt5_design_studio_reduced_version, wobei XXX Ihre tatsächliche QtDesignStudio-Versionsnummer ist). Um zu zeigen, wie das funktioniert, habe ich in Blender ein einfaches „Haus“-Modell erstellt.
Blender ist eine kostenlose Lösung, mit der jeder zum Architekten werden kann
Jetzt, da wir ein Modell haben, können wir das bereits erwähnte Balsam-Tool verwenden. Nach dem Start erhalten wir eine .qml-Datei, die wir in unserem Programm verwenden können. Der Befehl zum Starten sieht wie folgt aus:
balsam [options] source_file_name
Unser „Haus“ nach der Konvertierung in QML
Ich entschied, dass es an der Zeit war, mein gesamtes Wissen zu bündeln und etwas Interessanteres zu erschaffen.
Als erstes fügte ich ein Kugelobjekt hinzu, das die Sonne imitieren sollte. Dazu verwendete ich ein Model-Objekt mit der Quelle #Sphere und gelber Farbe. Darin platzierte ich das PointLight-Element, das für die Sonnenstrahlen verantwortlich war.
Anschließend fügte ich ein Seitenmenü hinzu, mit dem ich das „Haus“ in alle Richtungen drehen, das Sonnenmodell bewegen, die Lichtstärke ändern und zwei Schalter bedienen konnte – einer zum Ausschalten des Szenenlichts und einer für die Sonne.
Um der Anwendung noch mehr Interaktivität zu verleihen, verwendete ich den WasdController, mit dem ich mich per Tastatur durch die Szene bewegen konnte.
Zuhause ist’s am schönsten
Ich muss zugeben, dass ich von Qt Quick 3D sehr positiv überrascht war. Als jemand ohne jegliche Erfahrung im Bereich der 3D-Grafik war ich dennoch in der Lage, die Mechanismen zu verstehen und sie für meine Zwecke zu nutzen. Besonders hilfreich war hier die ausführliche Dokumentation mit Beispielen und Beispielcode.
Außerdem war die Einrichtung sehr unkompliziert. Man musste lediglich die passende Bibliothek über das Qt-Wartungstool herunterladen und sie in das Projekt einbinden. Alles Notwendige an einem Ort – es war nicht nötig, das gesamte Projekt umzustrukturieren oder kompliziert Dateien einzubinden.
Am meisten beeindruckt hat mich die Einfachheit. Das hohe Abstraktionsniveau macht es einfach, 2D-Oberflächenelemente mit 3D-Objekten zu kombinieren, ohne dass ich meine Denkweise vollständig ändern musste.
Natürlich sind die in diesem Artikel vorgestellten Beispiele vielleicht nicht besonders ambitioniert, aber sie sind einfache Szenarien, die dennoch ein Erfolgserlebnis vermitteln. Ich möchte Sie auch ermutigen, Qt Quick 3D selbst auszuprobieren. Sie werden überrascht sein, wie einfach und unterhaltsam es ist.
Wenn Sie gerne einen ähnlichen Artikel lesen würden – schreiben Sie uns gerne eine E-Mail mit Ihren Ideen. Wer weiß – vielleicht inspiriert uns Ihre Idee zu einem neuen Beitrag? Bleiben Sie dran und passen Sie auf sich auf 😉
Kommen wir zur Sache: Es ist eine Herausforderung, Top-Qt-QML-Entwickler zu finden. Helfen Sie sich selbst und starten Sie die Zusammenarbeit mit Scythe Studio – echten Experten im Qt C++ Framework.
Entdecken Sie unsere Fähigkeiten!Ich werde nicht lügen: Viele der Projekte, die wir bei Scythe Studio durchführen, sind mit der Medizingerätebranche verbunden. Wir haben […]
Handelssoftware bezeichnet digitale Plattformen und Systeme, die es Investoren und Finanzinstitutionen ermöglichen, Finanzanlagen online zu kaufen, zu verkaufen und zu […]
Verifikation und Validierung (V&V) sind zwei Grundpfeiler, die sicherstellen, dass ein Medizinprodukt sicher, wirksam und konform ist, bevor es überhaupt […]