Qt Quick 3D - Exemple de banc d'essai « Particles 3D »
Cet exemple montre comment utiliser le module Particles3D d'Qt Quick.

Cet exemple présente différentes façons d’utiliser les fonctionnalités du module Particles 3D d’ QtQuick3D.Particles3D. Le banc d’essai Particles contient une série d’exemples, certains mettant l’accent sur une fonctionnalité particulière et d’autres combinant plusieurs fonctionnalités pour obtenir l’aspect souhaité.
Fonctionnalités communes
Les exemples du banc d’essai partagent certaines fonctionnalités communes. Pour quitter l’exemple et revenir à l’écran de lancement, appuyez sur la flèche de retour située dans le coin supérieur gauche.
Dans le coin inférieur droit de chaque exemple se trouve une icône qui ouvre la vue de journalisation. Depuis cette vue, vous pouvez consulter différentes données de débogage concernant les particules. Chaque « ParticleSystem3D » dispose de sa propre ligne affichant ses données d’ ParticleSystem3DLogging.

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

Exemple « Snowing »
Découvrons les bases d’ Particles3D à l’aide de l’exemple « Snowing ».

Commencez par importer le module QtQuick3D.Particles3D à l’aide de l’instruction suivante :
import QtQuick3D.Particles3DParticleSystem3D est la racine du système de particules qui gère la synchronisation du système et regroupe tous les autres éléments associés, tels que les particules, les émetteurs et les affecteurs.
ParticleSystem3D {
id: psystem
// Start so that the snowing is in full steam
startTime: 15000Ensuite, nous créons une particule « SpriteParticle3D », qui est une particule visuelle de texture 2D. Si nous avions besoin de particules sous forme de modèles 3D, nous pourrions utiliser à la place ModelParticle3D. Il est important de définir le nombre de particules à l’aide de maxAmount afin que des tailles de tampon optimales soient allouées. Ici, nos flocons de neige sont blancs, avec une opacité variable, et ils apparaissent et disparaissent progressivement en 1 000 ms.
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 mentionnées ci-dessus. La propriété shape définit la zone d’émission. Ici, nous définissons des flocons de neige présentant une rotation et une taille variables. La propriété velocity permet de définir la direction et la vitesse initiales des particules émises. Chaque particule de flocon de neige existe pendant 15 secondes et la emiting rate est contrôlée à l’aide des 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
}On utilise généralement aussi des affectors pour rendre le mouvement des particules plus intéressant. Dans cet exemple « Snowing », nous utilisons « Wander3D » pour faire voler les flocons de neige en suivant 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
}© 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.