Qt Quick 3D - Exemple de banc d'essai 3D pour les particules
Démontre comment utiliser le module Qt Quick 3D Particles3D.

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.

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.

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

Tout d'abord, importez 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 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 }
© 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.