Revision control
++ // Copyright (C) 2024 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++
++ import QtQuick
++ import QtQuick3D
++ import QtQuick3D.Helpers
++
++ Item {
++ id: window
++ visible: true
++ width: 1200
++ height: 720
++
++ SceneEnvironment {
++ id: sceneEnvironment
++ clearColor: "lightblue"
++ backgroundMode: SceneEnvironment.Color
++ antialiasingMode: SceneEnvironment.MSAA
++ antialiasingQuality: SceneEnvironment.High
++ }
++
++ OrthographicCamera {
++ id: camera1
++ verticalMagnification: 0.35
++ horizontalMagnification: 0.35
++ eulerRotation: Qt.vector3d(-10.4172, 7.45044, 0)
++ position: Qt.vector3d(381.119, 842.535, 955.253)
++ }
++
++ Node {
++ id: sceneA
++ DirectionalLight {
++ castsShadow: true
++ eulerRotation: Qt.vector3d(-40, -120, 0)
++ csmNumSplits: 2
++ shadowMapQuality: Light.ShadowMapQualityLow
++ csmBlendRatio: 0.05
++ shadowBias: 20
++ pcfFactor: 0
++ softShadowQuality: Light.Hard
++ shadowMapFar: camera1.clipFar
++ }
++
++ Model {
++ id: ground
++ source: "#Cube"
++ scale: Qt.vector3d(25, 0.01, 135)
++ z: -5500
++ materials: DefaultMaterial {
++ diffuseColor: "gray"
++ }
++ castsShadows: false
++ }
++
++ Node {
++ Component.onCompleted: {
++
++ var z_pos = 0
++ for (var i = 0; i < 25; i++) {
++ var conesAndCylinderTrio = Qt.createQmlObject(`
++ import QtQuick
++ import QtQuick3D
++
++ Node {
++ property var z_positions: [` + z_pos + `,` + (z_pos -125) + `,` + (z_pos - 250) + `]
++
++ PrincipledMaterial {
++ id: material
++ baseColor: "gray"
++ }
++
++ Model {
++ source: "#Cone"
++ position: Qt.vector3d(0, 450, z_positions[0])
++ eulerRotation.z: 180
++ scale.y: 5
++ materials: material
++ }
++
++ Model {
++ source: "#Cone"
++ position.z: z_positions[1]
++ scale.y: 2.5
++ materials: material
++ }
++
++ Model {
++ source: "#Cylinder"
++ position: Qt.vector3d(0, 175, z_positions[2])
++ materials: material
++ scale.y: 3.5
++ }
++ }`,
++ this,
++ "snippet" + i
++ );
++ z_pos -= 450
++ }
++ }
++ }
++ }
++
++ View3D {
++ id: view
++ width: parent.width
++ height: parent.height
++ camera: camera1
++ environment: sceneEnvironment
++ importScene: sceneA
++ }
++ }