Qt Quick 3D - Beispiel für kaskadierte Schattenkarten
Demonstriert kaskadierte Shadow Maps.
Dieses Beispiel demonstriert die Verwendung einer DirectionalLight mit kaskadierten Shadowmaps.
Werfen wir einen Blick auf den QML-Code der Szene:
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 } } } }
Die Szene besteht aus einer DirectionalLight, einer PerspectiveCamera, einem Boden Model und einem langen Array von Kegeln und Zylindern Models. Dieses lange Array ist so angeordnet, um zu zeigen, wie Kaskaden dazu beitragen können, die grafische Treue der Szene zu verbessern. Mit nur einer Schattenkarte werden Artefakte verursacht, aber mit Kaskaden können diese behoben werden. DirectionalLight enthält eine Vielzahl von Eigenschaften, die über ein Einstellungsfenster in der Benutzeroberfläche angepasst werden können.
Weitere Informationen zu den verschiedenen Eigenschaften finden Sie im Artikel Shadow Mapping, und Sie können das Beispiel ausprobieren, um zu sehen, wie sie zusammenwirken.
© 2025 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.