Qt Quick 3D - Beispiel für RuntimeLoader
Veranschaulicht, wie Assets zur Laufzeit geladen werden können.

Dieses Beispiel zeigt, wie man mit dem „ RuntimeLoader “ einen einfachen Asset-Viewer implementiert.
Eine Erläuterung zum Einrichten einer einfachen Szene finden Sie in der Dokumentation zum Einführungsbeispiel. Sobald die Szene eingerichtet ist, können wir das „ RuntimeLoader “-Element hinzufügen:
RuntimeLoader {
id: importNode
source: windowRoot.importUrl
instancing: instancingButton.checked ? instancing : null
onBoundsChanged: helper.updateBounds(bounds)
}Das Laden eines Assets erfolgt durch Setzen der Eigenschaft „ source “ des „ RuntimeLoader “. In diesem Beispiel ist die Eigenschaft „ source “ an die Eigenschaft „ importUrl “ gebunden, deren Wert sich ändert, sobald der Benutzer im Dateidialog eine Datei auswählt.
Sofern das Asset geladen werden kann, werden die Inhalte als untergeordnete Elemente des „ RuntimeLoader “ unter „ importNode “ erstellt. Beachten Sie, dass das „ RuntimeLoader “ vom Typ „ Node “ ist und da es gleichzeitig der Stammknoten für das geladene Asset ist, wirken sich alle auf das „ importNode “ angewendeten Transformationen auch auf dessen untergeordnete Elemente aus.
Fehlerbehandlung
Wenn ein Asset nicht geladen werden kann, wird die Eigenschaft „ status “ des „ RuntimeLoader “ auf „ Error “ gesetzt. Das „ errorString “ des „ RuntimeLoader “ kann dann abgefragt werden, um eine detailliertere Beschreibung des Fehlers zu erhalten.
In diesem Beispiel zeigen wir die Fehlermeldung in einem roten Meldungsfeld in der Mitte des Bildschirms an, etwa so:
Rectangle {
id: messageBox
visible: importNode.status !== RuntimeLoader.Success
color: "red"
width: parent.width * 0.8
height: parent.height * 0.8
anchors.centerIn: parent
radius: Math.min(width, height) / 10
opacity: 0.6
Text {
anchors.fill: parent
font.pixelSize: 36
text: "Status: " + importNode.errorString + "\nPress \"Import...\" to import a model"
color: "white"
wrapMode: Text.Wrap
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
}Die Kamera bewegen
Um die Position der Kamera ändern zu können, verwenden wir den „ WasdController “ aus dem Modul „ Helpers “ und binden ihn wie folgt an unsere Kamera:
OrbitCameraController {
id: orbitController
origin: orbitCameraNode
camera: orbitCamera
enabled: helper.orbitControllerEnabled
}
WasdController {
id: wasdController
controlledObject: wasdCamera
enabled: !helper.orbitControllerEnabled
}Zusätzlich zur „ WasdController “ verwendet das Beispiel eine „ WheelHandler “ und eine „ PointerHandler “, um das Modell zu skalieren und zu drehen.
Instanziierung
Das Element „ RuntimeLoader “ kann auch in Kombination mit der Instanzierung verwendet werden, wie hier gezeigt:
RandomInstancing {
id: instancing
instanceCount: 30
position: InstanceRange {
property alias boundsDiameter: helper.boundsDiameter
from: Qt.vector3d(-3*boundsDiameter, -3*boundsDiameter, -3*boundsDiameter);
to: Qt.vector3d(3*boundsDiameter, 3*boundsDiameter, 3*boundsDiameter)
}
color: InstanceRange { from: "black"; to: "white" }
}RuntimeLoader erbt nicht von „Model“, verfügt jedoch über eine eigene „ instancing “-Eigenschaft, die es uns ermöglicht, ein komplexes importiertes Asset so zu instanziieren, als wäre es ein einfaches Modell. In diesem Fall verwenden wir die „ RandomInstancing “-Komponente aus dem „ Helpers “-Modul, um Elemente innerhalb eines festgelegten Bereichs zufällig zu positionieren und ihnen eine zufällige Farbe zuzuweisen.
Material-Überschreibungen
Manchmal sieht ein Asset beim Laden möglicherweise nicht wie erwartet aus. Die Eigenschaft „ materialOverride “ verändert die Art und Weise, wie jedes Material in der Szene gerendert wird, um einen bestimmten Beitrag zum Gesamtrendering zu leisten. Dies kann hilfreich sein, um festzustellen, was genau an dem Asset nicht korrekt ist, sodass das Original-Asset bei Bedarf angepasst werden kann.

© 2026 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.