Qt Quick 3D - Exemple de cartes d'ombres en cascade
Illustre l'utilisation des cartes d'ombres en cascade.

Cet exemple montre comment utiliser un « DirectionalLight » avec des cartes d'ombres en cascade.
Examinons le code QML de la scène :
View3D {
id: view
x: settings.viewX
y: 0
width: parent.width - settings.viewX
height: parent.height
camera: camera
environment: SceneEnvironment {
clearColor: "lightblue"
backgroundMode: SceneEnvironment.Color
antialiasingMode: SceneEnvironment.MSAA
antialiasingQuality: SceneEnvironment.High
}
PerspectiveCamera {
id: camera
position: Qt.vector3d(458, 300, 515)
eulerRotation: Qt.vector3d(-14, 19, 0)
clipFar: settings.clipFar
}
DirectionalLight {
visible: true
castsShadow: true
shadowFactor: settings.shadowFactor
eulerRotation: settings.eulerRotation
csmSplit1: settings.csmSplit1
csmSplit2: settings.csmSplit2
csmSplit3: settings.csmSplit3
csmNumSplits: settings.csmNumSplits
shadowMapQuality: settings.shadowMapQuality
csmBlendRatio: settings.csmBlendRatio
shadowBias: settings.shadowBias
pcfFactor: settings.pcfFactor
softShadowQuality: settings.softShadowQuality
shadowMapFar: settings.shadowMapFar
lockShadowmapTexels: settings.lockShadowmapTexels
}
Model {
id: ground
source: "#Cube"
scale: Qt.vector3d(25, 0.01, 135)
z: -5500
materials: PrincipledMaterial {
baseColor: "gray"
}
castsShadows: false
}
Node {
id: shapeSpawner
Component.onCompleted: {
var conesAndCylinderTrio = Qt.createComponent("ConesAndCylinderTrio.qml")
var z_pos = 0
for (var i = 0; i < 25; i++) {
conesAndCylinderTrio.incubateObject(shapeSpawner, {
"z_positions": [
z_pos,
z_pos - 125,
z_pos - 250
]})
z_pos -= 450
}
}
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton
propagateComposedEvents: true
onClicked: {
settings.drawerVisible = false
wasd.forceActiveFocus() // focus WASD controller for keyboard input
}
}
}La scène se compose d’un « DirectionalLight », d’un « PerspectiveCamera », d’un «floor Model » et d’un long tableau de cônes et de cylindres « Model». Ce long tableau est agencé de cette manière afin de montrer comment les cascades peuvent contribuer à améliorer la fidélité graphique de la scène. L’utilisation d’une seule carte d’ombres entraînerait des artefacts, mais les cascades permettent d’y remédier. L’ DirectionalLight contient de nombreuses propriétés qui peuvent être ajustées via un volet de paramètres dans l’interface utilisateur.
Nous invitons le lecteur à consulter l’article consacré au shadow mapping pour en savoir plus sur les différentes propriétés et à tester l’exemple afin de voir comment elles interagissent.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.