Qt Quick 3D - 动态纹理范例
// Copyright (C) 2019 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick3D
import QtQuick
Node {
id: doorRoot
property PerspectiveCamera activeCamera: camera
PointLight {
id: lamp
x: -10
y: 100
z: -100
color: "#ffffffff"
linearFade: 1
brightness: 3
}
PerspectiveCamera {
id: camera
x: 180.067
y: 225.598
z: -411.521
eulerRotation.x: -15.4614
eulerRotation.y: 171.605
fieldOfViewOrientation: PerspectiveCamera.Horizontal
}
DefaultMaterial {
id: doorMaterial
diffuseMap: Texture {
sourceItem: object2d
}
}
Model {
id: door1
objectName: "left door"
pivot.x: 20
x: 80
y: 70
scale.x: 1.98
scale.y: 3.5
scale.z: 0.5
source: "meshes/door1.mesh"
materials: doorMaterial
pickable: true
states: State {
name: "opened"
PropertyChanges {
target: door1
eulerRotation.y: 90
}
}
transitions: Transition {
to: "opened"
reversible: true
SequentialAnimation {
PropertyAnimation { property: "eulerRotation.y"; duration: 2000 }
}
}
}
Model {
id: wall
y: 100
scale.x: 400
scale.y: 100
scale.z: 10
source: "meshes/wall.mesh"
DefaultMaterial {
id: wallMaterial
diffuseColor: "lightgreen"
}
materials: [
wallMaterial
]
}
Model {
id: door2
objectName: "right door"
x: -80
y: 70
scale.x: 1.98
scale.y: 3.5
scale.z: 0.5
pivot.x: -20
source: "meshes/door2.mesh"
pickable: true
materials: doorMaterial
states: State {
name: "opened"
PropertyChanges {
target: door2
eulerRotation.y: -90
}
}
transitions: Transition {
to: "opened"
reversible: true
SequentialAnimation {
PropertyAnimation { property: "eulerRotation.y"; duration: 2000 }
}
}
}
}