Qt Quick 3D - Baked Lightmap Example
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick3D
import QtQuick3D.Helpers
Window {
width: 1280
height: 720
title: "Qt Quick 3D Baked Lightmap Example"
visible: true
View3D {
id: root
anchors.fill: parent
environment: SceneEnvironment {
backgroundMode: SceneEnvironment.Color
clearColor: "black"
}
PerspectiveCamera {
id: camera
z: 300
y: 100
}
property bool lmEnabled: lmToggle.checked
property int lightBakeMode: lmToggle.checked ? Light.BakeModeAll : Light.BakeModeDisabled
PointLight {
bakeMode: root.lightBakeMode
y: 190
brightness: brightnessSlider.value
castsShadow: true
shadowFactor: 75
}
Box {
usedInBakedLighting: true
lightmapBaseResolution: 256
bakedLightmap: BakedLightmap {
enabled: root.lmEnabled
key: "box"
loadPrefix: "file:"
}
scale: Qt.vector3d(100, 100, 100)
}
Rectangle {
color: "lightGray"
width: 320
height: 160
ColumnLayout {
anchors.centerIn: parent
CheckBox {
id: lmToggle
text: "Use lightmaps (fully baked direct+indirect)\nif available"
checked: true
focusPolicy: Qt.NoFocus
}
Text {
text: "How to bake lightmaps: \nOpen DebugView -> Tools -> Bake lightmap"
}
Text {
text: "Slider controls light brightness"
}
Slider {
id: brightnessSlider
value: 5.0
from: 0
to: 10
}
}
}
}
Item {
width: debugViewToggleText.implicitWidth
height: debugViewToggleText.implicitHeight
anchors.right: parent.right
Label {
id: debugViewToggleText
text: "Click here " + (dbg.visible ? "to hide DebugView" : "for DebugView")
color: "white"
anchors.right: parent.right
anchors.top: parent.top
}
MouseArea {
anchors.fill: parent
onClicked: dbg.visible = !dbg.visible
DebugView {
y: debugViewToggleText.height * 2
anchors.right: parent.right
source: root
id: dbg
visible: false
}
}
}
}