Sur cette page

Qt Quick 3D - Exemple de banc d'essai 3D pour les particules

Démontre comment utiliser le module Qt Quick 3D Particles3D.

Quatre fenêtres montrant différents exemples de systèmes de particules

Cet exemple montre différentes façons d'utiliser les fonctionnalités du module QtQuick3D.Particles3D. Le banc d'essai des particules contient une collection d'exemples, certains mettant l'accent sur une caractéristique particulière et d'autres combinant plusieurs caractéristiques pour obtenir l'apparence souhaitée.

Caractéristiques communes

Les exemples contenus dans le Banc d'essai partagent certaines caractéristiques communes. Pour quitter l'exemple et revenir à l'écran de lancement, appuyez sur la flèche "retour" dans le coin supérieur gauche.

Le coin inférieur droit de chaque exemple contient une icône qui ouvre la vue d'enregistrement. Dans cette vue, vous pouvez voir différentes données de débogage concernant les particules. Chaque site ParticleSystem3D possède sa propre ligne affichant les données de ParticleSystem3DLogging.

Statistiques et mesures de performance du système de particules

Le coin supérieur droit de la plupart des exemples contient une vue des paramètres qui peut être affichée ou masquée en cliquant sur son icône. Ces paramètres permettent de démontrer les caractéristiques individuelles de l'API ainsi que le comportement dynamique des systèmes de particules.

Panneau de contrôle pour les effets de particules de feu, de fumée et d'étincelles

Exemple de neige

Passons en revue les bases de Particles3D en examinant l'exemple Snowing.

Deux cubes colorés avec des particules de neige qui tombent et un panneau de réglage des particules

Tout d'abord, importez le module QtQuick3D.Particles3D à l'aide de l'instruction suivante :

import QtQuick3D.Particles3D

ParticleSystem3D est la racine du système de particules qui gère la synchronisation du système et regroupe tous les autres éléments connexes tels que les particules, les émetteurs et les affecteurs.

ParticleSystem3D {
    id: psystem

    // Start so that the snowing is in full steam
    startTime: 15000

Nous créons ensuite une particule SpriteParticle3D qui est une particule de texture visuelle en 2D. Si nous avons besoin de particules de modèle 3D, nous pouvons utiliser ModelParticle3D. Il est important de définir la quantité de particules à l'aide de maxAmount afin d'allouer des tampons de taille optimale. Ici, nos flocons de neige sont blancs, avec une opacité variable et ils s'estompent en 1000ms.

SpriteParticle3D {
    id: snowParticle
    sprite: Texture {
        source: "images/snowflake.png"
    }
    maxAmount: 1500 * sliderIntensity.sliderValue
    color: "#ffffff"
    colorVariation: Qt.vector4d(0.0, 0.0, 0.0, 0.5);
    fadeInDuration: 1000
    fadeOutDuration: 1000
}

Ensuite, nous aurons besoin de ParticleEmitter3D pour émettre les particules de snowParticle. La propriété shape définit la zone d'émission. Ici, nous définissons des flocons de neige dont la rotation et la taille varient. La propriété velocity permet de définir la direction initiale de la vitesse des particules émises. Chaque particule de flocon de neige existe pendant 15 secondes et l'adresse emiting rate est contrôlée par les curseurs de réglage.

ParticleEmitter3D {
    id: emitter
    particle: snowParticle
    position: Qt.vector3d(0, 1000, -350)
    depthBias: -100
    scale: Qt.vector3d(15.0, 0.0, 15.0)
    shape: ParticleShape3D {
        type: ParticleShape3D.Sphere
    }
    particleRotationVariation: Qt.vector3d(180, 180, 180)
    particleRotationVelocityVariation: Qt.vector3d(50, 50, 50);
    particleScale: 2.0
    particleScaleVariation: 0.5;
    velocity: VectorDirection3D {
        direction: Qt.vector3d(0, sliderVelocityY.sliderValue, 0)
        directionVariation: Qt.vector3d(0, sliderVelocityY.sliderValue * 0.4, 0)
    }
    emitRate: sliderEmitRate.sliderValue * sliderIntensity.sliderValue
    lifeSpan: 15000
}

En général, des affectateurs sont également utilisés pour rendre le mouvement des particules plus intéressant. Dans cet exemple de neige, nous utilisons Wander3D pour faire voler les flocons de neige avec des courbes ondulées ainsi que PointRotator3D pour simuler un temps venteux.

Wander3D {
    enabled: checkBoxWanderEnabled.checked
    globalAmount: Qt.vector3d(sliderWanderGlobalAmount.sliderValue, 0, sliderWanderGlobalAmount.sliderValue)
    globalPace: Qt.vector3d(sliderWanderGlobalPace.sliderValue, 0, sliderWanderGlobalPace.sliderValue)
    uniqueAmount: Qt.vector3d(sliderWanderUniqueAmount.sliderValue, 0, sliderWanderUniqueAmount.sliderValue)
    uniquePace: Qt.vector3d(sliderWanderUniquePace.sliderValue, 0, sliderWanderUniquePace.sliderValue)
    uniqueAmountVariation: sliderWanderUniqueAmountVariation.sliderValue
    uniquePaceVariation: sliderWanderUniquePaceVariation.sliderValue
}
PointRotator3D {
    enabled: checkBoxRotatorEnabled.checked
    pivotPoint: Qt.vector3d(0, 0, -350)
    direction: Qt.vector3d(0, 1, 0)
    magnitude: sliderRotatorMagnitude.sliderValue
}

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.