Sur cette page

Qt Quick 3D - Exemple simple de RuntimeLoader

Illustre le chargement d'un élément 3D à l'exécution et l'interrogation de ses objets de scène.

Panneau latéral répertoriant les matériaux, les caméras et les lumières à côté d'une scène en 3D

Cet exemple montre comment utiliser ` RuntimeLoader ` pour charger un ressource 3D à l'exécution et comment utiliser les fonctions de ` query ` pour identifier les matériaux, les caméras et les lumières contenus dans la scène chargée.

Chargement de la ressource

L’élément RuntimeLoader charge un ressource glTF 2.0 et crée les objets 3D Qt Quick correspondants en tant qu’enfants. La propriété source pointe vers le fichier de la ressource :

RuntimeLoader {
    id: loader
    source: "torus_and_cone.glb"

    onStatusChanged: {
        if (status !== RuntimeLoader.Success)
            return
        root.sceneMaterials = loader.queryAll(RuntimeLoader.Materials)
        root.sceneCameras = loader.queryAll(RuntimeLoader.Cameras)
        root.sceneLights = loader.queryAll(RuntimeLoader.Lights)
        if (root.sceneCameras.length > 0)
            view3d.camera = root.sceneCameras[0]
        if (root.sceneMaterials.length > 0)
            root.selectedMaterial = root.sceneMaterials[0]
    }
}

Une fois que l’ status passe à l’état « RuntimeLoader.Success », la scène est prête et les fonctions de requête peuvent être appelées.

Interrogation des objets de scène

Une fois le chargement réussi, la méthode queryAll() renvoie une liste de tous les objets de scène correspondant à un QueryFilter donné. L’exemple récupère les matériaux, les caméras et les lumières en une seule fois :

root.sceneMaterials = loader.queryAll(RuntimeLoader.Materials)
root.sceneCameras = loader.queryAll(RuntimeLoader.Cameras)
root.sceneLights = loader.queryAll(RuntimeLoader.Lights)

Les listes renvoyées sont des tableaux JavaScript simples contenant des références à des objets ` QQuick3DObject `. Elles peuvent être attribuées directement à une instance de ` ListView model ` ou utilisées pour définir des propriétés de la scène active, telles que ` View3D.camera`.

Interaction avec les objets de scène

Matériaux

Chaque entrée de la liste des matériaux peut être sélectionnée pour lui appliquer l’un des échantillons de couleur. La fonction d’aide convertit l’objet renvoyé au type de matériau approprié avant d’écrire dans la propriété « color » :

function applyColorToSelected(color) {
    if (!root.selectedMaterial)
        return
    if (root.selectedMaterial instanceof PrincipledMaterial)
        (root.selectedMaterial as PrincipledMaterial).baseColor = color
    else if (root.selectedMaterial instanceof SpecularGlossyMaterial)
        (root.selectedMaterial as SpecularGlossyMaterial).albedoColor = color
}
Caméras

Cliquer sur une entrée de caméra dans le panneau latéral l’attribue à View3D.camera, ce qui change immédiatement le point de vue actif.

Lumières

Chaque lumière du panneau latéral dispose d'un bouton permettant de définir sa propriété « visible » (allumer/éteindre), ce qui permet de l'activer ou de la désactiver sans la supprimer de la scène :

Switch {
    checked: modelData.visible
    onToggled: modelData.visible = checked
}

Exemple de projet @ code.qt.io

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