aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick3d/particles3d/EmitterCustomShapes.qml
diff options
context:
space:
mode:
authorAndy Nichols <andy.nichols@qt.io>2023-06-08 16:25:47 +0200
committerAndy Nichols <nezticle@gmail.com>2023-06-12 16:05:36 +0200
commitf7cc7656e2bd01851c5fb04747b0c8439ffa9dbe (patch)
tree3999f4a6efc61e1841e21941fd6bf8a51025d121 /examples/quick3d/particles3d/EmitterCustomShapes.qml
parent16c734c0a26b5fed0542f3ef2fee07be74a45da8 (diff)
Fix qmllint errors in particles3d example
Pick-to: 6.6 Change-Id: I10126755f2a42fb365219f09b9c54e45ed8e4316 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
Diffstat (limited to 'examples/quick3d/particles3d/EmitterCustomShapes.qml')
-rw-r--r--examples/quick3d/particles3d/EmitterCustomShapes.qml217
1 files changed, 217 insertions, 0 deletions
diff --git a/examples/quick3d/particles3d/EmitterCustomShapes.qml b/examples/quick3d/particles3d/EmitterCustomShapes.qml
new file mode 100644
index 00000000..349f95ab
--- /dev/null
+++ b/examples/quick3d/particles3d/EmitterCustomShapes.qml
@@ -0,0 +1,217 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick3D
+import QtQuick3D.Particles3D
+
+Item {
+ id: mainWindow
+ anchors.fill: parent
+
+ View3D {
+ anchors.fill: parent
+
+ environment: SceneEnvironment {
+ clearColor: "#000000"
+ backgroundMode: SceneEnvironment.Color
+ antialiasingMode: AppSettings.antialiasingMode
+ antialiasingQuality: AppSettings.antialiasingQuality
+ }
+
+ PerspectiveCamera {
+ id: camera
+ property real cameraAnim: 0
+ NumberAnimation {
+ target: camera
+ property: "cameraAnim"
+ running: true
+ loops: Animation.Infinite
+ from: 0
+ to: 2 * Math.PI
+ duration: 40000
+ }
+ position: Qt.vector3d(Math.sin(cameraAnim * 3.0) * 400, 200, 600 + Math.cos(cameraAnim) * 200)
+ eulerRotation: Qt.vector3d(-20, Math.sin(cameraAnim * 3.0) * 30, 0)
+ }
+
+ PointLight {
+ position: Qt.vector3d(0, 400, 0)
+ brightness: 10
+ ambientColor: Qt.rgba(0.3, 0.3, 0.3, 1.0)
+ }
+
+ // Background stars
+ ParticleSystem3D {
+ id: psystem2
+ startTime: 10000
+ SpriteParticle3D {
+ id: particle3
+ sprite: Texture {
+ source: "images/star3.png"
+ }
+ maxAmount: 1000
+ color: "#40ffffff"
+ colorVariation: Qt.vector4d(0.1, 0.1, 0.1, 0.2)
+ fadeInEffect: SpriteParticle3D.FadeScale
+ fadeInDuration: 2000
+ fadeOutEffect: SpriteParticle3D.FadeScale
+ fadeOutDuration: 2000
+ alignMode: SpriteParticle3D.AlignTowardsTarget
+ alignTargetPosition: camera.position
+ }
+ ParticleEmitter3D {
+ particle: particle3
+ shape: ParticleShape3D {
+ fill: true
+ type: ParticleShape3D.Sphere
+ }
+ position: Qt.vector3d(0, -500, -400)
+ scale: Qt.vector3d(30, 30, 15)
+ emitRate: 100
+ lifeSpan: 10000
+ particleRotationVariation: Qt.vector3d(0, 0, 180)
+ particleRotationVelocityVariation: Qt.vector3d(0, 0, 50)
+ particleScale: 5.0
+ particleScaleVariation: 3.0
+ velocity: VectorDirection3D {
+ direction: Qt.vector3d(0, 0, 0)
+ directionVariation: Qt.vector3d(10, 10, 10)
+ }
+ }
+ }
+
+ ParticleSystem3D {
+ id: psystem
+ running: false
+ SequentialAnimation on time {
+ loops: Animation.Infinite
+ PauseAnimation {
+ duration: 1500
+ }
+ NumberAnimation {
+ to: 5000
+ duration: 5000
+ easing.type: Easing.InOutQuad
+ }
+ PauseAnimation {
+ duration: 1500
+ }
+ NumberAnimation {
+ to: 0
+ duration: 5000
+ easing.type: Easing.InOutQuad
+ }
+ }
+
+ SpriteParticle3D {
+ id: particle1
+ sprite: Texture {
+ source: "images/star3.png"
+ }
+ maxAmount: 4096
+ colorTable: Texture {
+ source: "images/color_table5.png"
+ }
+ color: "#d0ffffff"
+ colorVariation: Qt.vector4d(0.0, 0.0, 0.0, 0.4)
+ particleScale: 15.0
+ billboard: true
+ fadeInEffect: SpriteParticle3D.FadeNone
+ fadeOutEffect: SpriteParticle3D.FadeNone
+ }
+
+ SpriteParticle3D {
+ id: particle2
+ sprite: Texture {
+ source: "images/dot.png"
+ }
+ maxAmount: 4096
+ colorTable: Texture {
+ source: "images/color_table4.png"
+ }
+ color: "#60ffffff"
+ colorVariation: Qt.vector4d(0.0, 0.0, 0.0, 0.4)
+ particleScale: 6.0
+ billboard: true
+ fadeInEffect: SpriteParticle3D.FadeNone
+ fadeOutEffect: SpriteParticle3D.FadeNone
+ }
+
+ ParticleEmitter3D {
+ particle: particle1
+ scale: Qt.vector3d(5.0, 5.0, 5.0)
+ shape: ParticleCustomShape3D {
+ source: "data/qt_logo_in_4096.cbor"
+ }
+ lifeSpan: 5001
+ emitBursts: [
+ EmitBurst3D {
+ time: 0
+ amount: 4096
+ }
+ ]
+ depthBias: -200
+ particleRotationVariation: Qt.vector3d(0, 0, 180)
+ particleRotationVelocityVariation: Qt.vector3d(80, 80, 80)
+ particleScaleVariation: 0.5
+ particleEndScale: 4.0
+ particleEndScaleVariation: 2.0
+ velocity: VectorDirection3D {
+ direction: Qt.vector3d(-150, 100, 0)
+ directionVariation: Qt.vector3d(150, 100, 100)
+ }
+ }
+
+ ParticleEmitter3D {
+ particle: particle2
+ scale: Qt.vector3d(5.0, 5.0, 5.0)
+ shape: ParticleCustomShape3D {
+ source: "data/qt_logo_out_4096.cbor"
+ }
+ lifeSpan: 5001
+ emitBursts: [
+ EmitBurst3D {
+ time: 0
+ amount: 4096
+ }
+ ]
+ particleScale: 2.0
+ particleEndScale: 1.0
+ particleScaleVariation: 1.5
+ particleEndScaleVariation: 0.8
+ velocity: VectorDirection3D {
+ direction: Qt.vector3d(0, 200, 0)
+ directionVariation: Qt.vector3d(50, 50, 50)
+ }
+ }
+
+ Attractor3D {
+ particles: [particle1]
+ position: Qt.vector3d(-200, 0, 0)
+ scale: Qt.vector3d(4.0, 4.0, 4.0)
+ shape: ParticleCustomShape3D {
+ source: "data/heart_4096.cbor"
+ randomizeData: true
+ }
+ duration: 4000
+ durationVariation: 1000
+ }
+ Attractor3D {
+ particles: [particle2]
+ position: Qt.vector3d(200, 0, 0)
+ scale: Qt.vector3d(6.0, 6.0, 6.0)
+ shape: ParticleCustomShape3D {
+ source: "data/qt_logo_in_4096.cbor"
+ }
+ duration: 4000
+ durationVariation: 1000
+ }
+ }
+ }
+
+ LoggingView {
+ anchors.bottom: parent.bottom
+ particleSystems: [psystem, psystem2]
+ }
+}