Auf dieser Seite

Qt Quick 3D - Beispiel für die 3D-Partikel-Testumgebung

Veranschaulicht die Verwendung des „ Qt Quick 3D “-Moduls „Particles3D“.

Vier Fenster mit verschiedenen Beispielen für Partikelsysteme

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.

Statistiken und Leistungskennzahlen für Partikelsysteme

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.

Bedienfeld für Feuer-, Rauch- und Funken-Partikeleffekte

Beispiel „Snowing“

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

Zwei farbige Würfel mit fallenden Schneepartikeln und einem Einstellungsfeld für die Partikel

Importieren Sie zunächst das Modul „ QtQuick3D.Particles3D “ mit der folgenden Anweisung:

import QtQuick3D.Particles3D

ParticleSystem3D 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: 15000

Anschließ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
}

Beispielprojekt @ 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.