Qt Quick 3D - Beispiel für die 3D-Partikel-Testumgebung
Veranschaulicht die Verwendung des „ Qt Quick 3D “-Moduls „Particles3D“.

Dieses Beispiel veranschaulicht verschiedene Möglichkeiten, die Funktionen des Moduls „ QtQuick3D.Particles3D “ zu nutzen. „Particles Testbed“ enthält eine Sammlung von Beispielen, von denen einige eine bestimmte Funktion hervorheben und andere mehrere Funktionen kombinieren, um das gewünschte Erscheinungsbild zu erzielen.
Gemeinsame Merkmale
Die Beispiele im Testbed weisen einige gemeinsame Merkmale auf. Um das Beispiel zu verlassen und zum Startbildschirm zurückzukehren, klicken Sie auf den Zurück-Pfeil in der oberen linken Ecke.
In der unteren rechten Ecke jedes Beispiels befindet sich ein Symbol, über das Sie die Protokollansicht öffnen können. In dieser Ansicht sehen Sie verschiedene Debug-Daten zu den Partikeln. Jedes „ ParticleSystem3D “ verfügt über eine eigene Zeile, in der die „ ParticleSystem3DLogging “-Daten angezeigt werden.

In der oberen rechten Ecke der meisten Beispiele befindet sich eine Einstellungsansicht, die durch Klicken auf das entsprechende Symbol ein- oder ausgeblendet werden kann. Diese Einstellungen dienen dazu, einzelne API-Funktionen sowie das dynamische Verhalten der Partikelsysteme zu veranschaulichen.

Beispiel „Snowing“
Lassen Sie uns die Grundlagen von „ Particles3D “ anhand des Beispiels „Schneefall“ durchgehen.

Importieren Sie zunächst das Modul „ QtQuick3D.Particles3D “ mit der folgenden Anweisung:
import QtQuick3D.Particles3DParticleSystem3D ist die Wurzel des Partikelsystems, die das System-Timing verwaltet und alle anderen zugehörigen Elemente wie Partikel, Emitter und Affektoren zusammenfasst.
ParticleSystem3D {
id: psystem
// Start so that the snowing is in full steam
startTime: 15000Anschließend erstellen wir ein „ SpriteParticle3D “, bei dem es sich um ein visuelles 2D-Texturpartikel handelt. Wenn wir 3D-Modellpartikel benötigen würden, könnten wir alternativ „ ModelParticle3D “ verwenden. Die Festlegung der Partikelanzahl mit „ maxAmount “ ist wichtig, damit optimale Puffergrößen zugewiesen werden. Hier sind unsere Schneeflocken weiß, weisen unterschiedliche Deckkraft auf und werden innerhalb von 1000 ms ein- und ausgeblendet.
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
}Als Nächstes benötigen wir ParticleEmitter3D, um die oben genannten Partikel von snowParticle zu emittieren. Die Eigenschaft shape definiert den Bereich, in dem die Emission stattfindet. Hier legen wir fest, dass die Schneeflocken unterschiedliche Rotationen und Größen aufweisen. Mit der Eigenschaft velocity können Sie die Anfangsrichtung und -geschwindigkeit der emittierten Partikel festlegen. Jedes Schneeflockenpartikel existiert 15 Sekunden lang, und die emiting rate wird über die Einstellungsschieberegler gesteuert.
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
}In der Regel werden auch einige Affektoren verwendet, um die Bewegung der Partikel interessanter zu gestalten. In diesem Beispiel „Snowing“ verwenden wir „ Wander3D “, damit die Schneeflocken in wellenförmigen Kurven fliegen, sowie „ PointRotator3D “, um windiges Wetter zu simulieren.
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.