Revision control
++ // Copyright (C) 2020 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++
++ import QtQuick
++ import QtQuick3D
++ import QtQuick.Window
++ import "qml"
++
++ Rectangle {
++ width: 600
++ height: 480
++ color: Qt.rgba(0, 0, 0, 1)
++
++ View3D {
++ id: layer
++ anchors.fill: parent
++ environment: SceneEnvironment {
++ clearColor: Qt.rgba(0, 0, 0, 1)
++ }
++
++ camera: PerspectiveCamera {
++ id: camera
++ position: Qt.vector3d(0, 0, 350)
++ clipFar: 5000
++ }
++
++ DirectionalLight {
++ }
++
++ Component {
++ id: sourceItemComponent
++ RedFill { }
++ }
++ Component {
++ id: sourceItemComponent2
++ AnimatedItem { }
++ }
++
++ // Model with dynamically created sourceItem
++ Model {
++ x: -100
++ y: 100
++ eulerRotation: Qt.vector3d(20, 40, 0)
++ source: "#Cube"
++ materials: DefaultMaterial {
++ diffuseMap: Texture {
++ id: myTexture
++ Component.onCompleted: {
++ const item = sourceItemComponent.createObject(sourceItemContainer);
++ myTexture.sourceItem = item;
++ }
++ }
++ }
++ }
++
++ // Model with dynamically removed sourceItem
++ Model {
++ x: 100
++ y: 100
++ eulerRotation: Qt.vector3d(20, 40, 0)
++ source: "#Cube"
++ materials: DefaultMaterial {
++ diffuseMap: Texture {
++ id: myTexture2
++ sourceItem: RedFill { }
++ Component.onCompleted: {
++ myTexture2.sourceItem.destroy();
++ }
++ }
++ }
++ }
++
++ // Model with dynamically switched sourceItem
++ Model {
++ x: -100
++ y: -100
++ eulerRotation: Qt.vector3d(20, 40, 0)
++ source: "#Cube"
++ materials: DefaultMaterial {
++ diffuseMap: Texture {
++ id: myTexture3
++ sourceItem: RedFill { }
++ Component.onCompleted: {
++ const item = sourceItemComponent2.createObject(sourceItemContainer);
++ myTexture3.sourceItem = item;
++ }
++ }
++ }
++ }
++
++ // Model with Loader sourceItem
++ Model {
++ x: 100
++ y: -100
++ eulerRotation: Qt.vector3d(20, 40, 0)
++ source: "#Cube"
++ materials: DefaultMaterial {
++ diffuseMap: Texture {
++ id: myTexture4
++ sourceItem: Loader {
++ width: 100
++ height: 100
++ source: "qml/AnimatedItem.qml"
++ }
++ }
++ }
++ }
++ }
++
++ Item {
++ id: sourceItemContainer
++ visible: false
++ }
++ }