From f7cc7656e2bd01851c5fb04747b0c8439ffa9dbe Mon Sep 17 00:00:00 2001 From: Andy Nichols Date: Thu, 8 Jun 2023 16:25:47 +0200 Subject: Fix qmllint errors in particles3d example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pick-to: 6.6 Change-Id: I10126755f2a42fb365219f09b9c54e45ed8e4316 Reviewed-by: Christian Strømme --- examples/quick3d/particles3d/Lights.qml | 285 ++++++++++++++++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 examples/quick3d/particles3d/Lights.qml (limited to 'examples/quick3d/particles3d/Lights.qml') diff --git a/examples/quick3d/particles3d/Lights.qml b/examples/quick3d/particles3d/Lights.qml new file mode 100644 index 00000000..34252e5b --- /dev/null +++ b/examples/quick3d/particles3d/Lights.qml @@ -0,0 +1,285 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick3D +import QtQuick3D.Particles3D + +Item { + id: root + anchors.fill: parent + + Timer { + id: lightsUpdateTimer + interval: 0 + triggeredOnStart: true + onTriggered: root.updateLightsArray(); + } + + // Update the lights array of the particles + function updateLightsArray() { + var newLights = []; + if (checkBoxDirectionalLightUse.checked) + newLights.push(lightDirectional); + if (checkBoxPointLightUse.checked) + newLights.push(lightPoint); + if (checkBoxSpotLightUse.checked) + newLights.push(lightSpot); + // Particles to use the enabled lights + spriteParticle.lights = newLights; // qmllint disable read-only-property + } + + View3D { + anchors.fill: parent + + environment: SceneEnvironment { + clearColor: "#000000" + backgroundMode: SceneEnvironment.Color + antialiasingMode: SceneEnvironment.MSAA + antialiasingQuality: SceneEnvironment.High + } + + PerspectiveCamera { + position: Qt.vector3d(0, 100, 700) + eulerRotation.x: -10 + } + + DirectionalLight { + id: lightDirectional + color: Qt.rgba(1.0, 0.1, 0.1, 1.0) + position: Qt.vector3d(0, 200, 0) + rotation: Quaternion.fromEulerAngles(-70, 0, 0) + visible: checkBoxDirectionalLight.checked + brightness: sliderDirectionalLight.sliderValue + } + + PointLight { + id: lightPoint + color: Qt.rgba(0.1, 1.0, 0.1, 1.0) + position: Qt.vector3d(0, 300, 0) + visible: checkBoxPointLight.checked + brightness: sliderPointLight.sliderValue + constantFade: sliderPointLightConstantFade.sliderValue + linearFade: sliderPointLightLinearFade.sliderValue + quadraticFade: sliderPointLightQuadraticFade.sliderValue + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { + to: 400 + duration: 2000 + easing.type: Easing.InOutQuad + } + NumberAnimation { + to: -400 + duration: 2000 + easing.type: Easing.InOutQuad + } + } + } + + SpotLight { + id: lightSpot + color: Qt.rgba(0.0, 0.0, 1.0, 1.0) + position: Qt.vector3d(0, 250, 0) + eulerRotation.x: -45 + visible: checkBoxSpotLight.checked + brightness: sliderSpotLight.sliderValue + coneAngle: 50 + innerConeAngle: 20 + constantFade: sliderSpotLightConstantFade.sliderValue + linearFade: sliderSpotLightLinearFade.sliderValue + quadraticFade: sliderSpotLightQuadraticFade.sliderValue + PropertyAnimation on eulerRotation.y { + loops: Animation.Infinite + from: 0 + to: 360 + duration: 10000 + } + } + + Model { + source: "#Rectangle" + y: -200 + scale: Qt.vector3d(15, 15, 15) + eulerRotation.x: -90 + materials: [ + DefaultMaterial { + diffuseColor: Qt.rgba(0.4, 0.4, 0.4, 1.0) + } + ] + } + Model { + source: "#Rectangle" + z: -400 + scale: Qt.vector3d(15, 15, 15) + materials: [ + DefaultMaterial { + diffuseColor: Qt.rgba(0.4, 0.4, 0.4, 1.0) + } + ] + } + + ParticleSystem3D { + id: psystem + + startTime: 5000 + + SpriteParticle3D { + id: spriteParticle + sprite: Texture { + source: "images/sphere.png" + } + maxAmount: 10000 + color: "#ffffff" + colorVariation: Qt.vector4d(0.0, 0.0, 0.0, 0.5); + fadeInDuration: 1000 + fadeOutDuration: 1000 + billboard: true + // Disable this to see the unlit particles + blendMode: SpriteParticle3D.Screen + } + + ParticleEmitter3D { + id: emitter + particle: spriteParticle + position: Qt.vector3d(0, 350, 0) + depthBias: -100 + scale: Qt.vector3d(8.0, 0.0, 8.0) + shape: ParticleShape3D { + type: ParticleShape3D.Sphere + } + particleScale: 2.0 + particleScaleVariation: 1.0; + velocity: VectorDirection3D { + direction: Qt.vector3d(0, -100, 0) + directionVariation: Qt.vector3d(20, 50, 20) + } + emitRate: 2000 + lifeSpan: 5000 + } + + PointRotator3D { + pivotPoint: Qt.vector3d(0, 0, 0) + direction: Qt.vector3d(0, 1, 0) + magnitude: 20 + } + } + } + + SettingsView { + CustomCheckBox { + id: checkBoxDirectionalLight + text: qsTr("Directional Light") + checked: true + } + CustomSlider { + id: sliderDirectionalLight + sliderValue: 0.4 + fromValue: 0.0 + toValue: 1 + } + CustomCheckBox { + id: checkBoxDirectionalLightUse + text: qsTr("Use also for particles") + checked: true + onCheckedChanged: lightsUpdateTimer.restart(); + } + Item { width: 1; height: 40 } + CustomCheckBox { + id: checkBoxPointLight + text: qsTr("Point Light") + checked: true + } + CustomSlider { + id: sliderPointLight + sliderValue: 6 + fromValue: 0.0 + toValue: 10 + } + CustomCheckBox { + id: checkBoxPointLightUse + text: qsTr("Use also for particles") + checked: true + onCheckedChanged: lightsUpdateTimer.restart(); + } + CustomLabel { + text: qsTr("constantFade") + } + CustomSlider { + id: sliderPointLightConstantFade + sliderValue: 1.0 + fromValue: 0.1 + toValue: 20.0 + } + CustomLabel { + text: qsTr("linearFade") + } + CustomSlider { + id: sliderPointLightLinearFade + sliderValue: 0.0 + fromValue: 0.0 + toValue: 20.0 + } + CustomLabel { + text: qsTr("quadraticFade") + } + CustomSlider { + id: sliderPointLightQuadraticFade + sliderValue: 1.0 + fromValue: 0.1 + toValue: 20.0 + } + + Item { width: 1; height: 40 } + CustomCheckBox { + id: checkBoxSpotLight + text: qsTr("Spot Light") + checked: true + } + CustomSlider { + id: sliderSpotLight + sliderValue: 40 + fromValue: 0.0 + toValue: 100 + } + CustomCheckBox { + id: checkBoxSpotLightUse + text: qsTr("Use also for particles") + checked: true + onCheckedChanged: lightsUpdateTimer.restart(); + } + CustomLabel { + text: qsTr("constantFade") + } + CustomSlider { + id: sliderSpotLightConstantFade + sliderValue: 1.0 + fromValue: 0.1 + toValue: 20.0 + } + CustomLabel { + text: qsTr("linearFade") + } + CustomSlider { + id: sliderSpotLightLinearFade + sliderValue: 0.0 + fromValue: 0.0 + toValue: 20.0 + } + CustomLabel { + text: qsTr("quadraticFade") + } + CustomSlider { + id: sliderSpotLightQuadraticFade + sliderValue: 1.0 + fromValue: 0.1 + toValue: 20.0 + } + } + + LoggingView { + anchors.bottom: parent.bottom + particleSystems: [psystem] + } + +} -- cgit v1.2.3