Qt Quick 3D - Exemple de RuntimeLoader
Illustre comment charger des ressources lors de l'exécution.

Cet exemple montre comment implémenter une visionneuse de ressources simple à l'aide de l'RuntimeLoader.
Consultez la documentation de l’exemple d’introduction pour savoir comment configurer une scène de base. Une fois la scène configurée, nous pouvons ajouter l’élément « RuntimeLoader » :
RuntimeLoader {
id: importNode
source: windowRoot.importUrl
instancing: instancingButton.checked ? instancing : null
onBoundsChanged: helper.updateBounds(bounds)
}Le chargement d’un élément s’effectue en définissant la propriété « source » de l’ RuntimeLoader. Dans cet exemple, la propriété « source » est liée à la variable « importUrl », qui sera modifiée lorsque l’utilisateur sélectionnera un fichier dans la boîte de dialogue de sélection de fichiers.
En supposant que la ressource puisse être chargée, le contenu sera créé en tant qu’enfants de l’élément RuntimeLoader importNode . Notez que l’ RuntimeLoader est de type Node et que, puisqu’il s’agit également du nœud racine de la ressource chargée, toute transformation appliquée à l’ importNode affectera également ses enfants.
Gestion des erreurs
Si le chargement d’un élément échoue, la propriété ` status ` de l’ RuntimeLoader sera définie sur ` Error`. Il est alors possible d’interroger le ` errorString ` de l’ RuntimeLoader pour obtenir une description plus détaillée de l’erreur.
Dans cet exemple, nous afficherons le message d’erreur dans une boîte de message rouge au centre de l’écran, comme ceci :
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
}
}Déplacement de la caméra
Pour permettre de modifier la position de la caméra, nous utilisons l’ WasdController du module Helpers et l’associons à notre caméra, comme ceci :
OrbitCameraController {
id: orbitController
origin: orbitCameraNode
camera: orbitCamera
enabled: helper.orbitControllerEnabled
}
WasdController {
id: wasdController
controlledObject: wasdCamera
enabled: !helper.orbitControllerEnabled
}En plus de l’ WasdController, l’exemple utilise un WheelHandler et un PointerHandler pour mettre à l’échelle et faire pivoter le modèle.
Instanciation
L’élément RuntimeLoader peut également être utilisé en combinaison avec l’instanciation, comme illustré ici :
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 n’hérite pas de Model, mais dispose de sa propre propriété instancing qui nous permet d’instancier un asset importé complexe comme s’il s’agissait d’un modèle simple. Dans ce cas, nous utilisons le composant RandomInstancing du module Helpers pour positionner aléatoirement des éléments dans une zone définie et leur attribuer une couleur aléatoire.
Remplacement des matériaux
Il arrive parfois que, lors du chargement d’un élément, celui-ci ne s’affiche pas comme prévu. La propriété ` materialOverride ` modifie la manière dont chaque matériau de la scène est rendu afin de mettre en évidence sa contribution spécifique au rendu global. Cela peut s’avérer utile pour déterminer précisément ce qui ne va pas avec l’élément, afin de pouvoir ajuster l’élément d’origine si nécessaire.

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