Qt Quick 3D - Baked Lightmap Beispiel
Demonstriert die Verwendung von gebackenen Lightmaps in einer 3D-Szene.
Dieses Beispiel demonstriert die Verwendung einer vollständig gebackenen Beleuchtung in einer Szene. Das Ergebnis ist, dass die gerenderte Szene viel realistischer aussieht, vor allem wegen der zusätzlichen indirekten Beleuchtung. Mit Hilfe eines Kontrollkästchens lässt sich die Lichtabbildung auch deaktivieren, so dass die Rendering-Ergebnisse der Echtzeit- und der vollständig gebackenen Beleuchtung verglichen werden können.
Einrichten des Lichts
Die Szene hat ein einzelnes Punktlicht. Wenn das Kontrollkästchen aktiviert ist, wird die bakeMode des Lichts auf Light.BakeModeAll gesetzt.
PointLight { bakeMode: root.lightBakeMode y: 190 brightness: brightnessSlider.value castsShadow: true shadowFactor: 75 shadowBias: 20 }
Die Einstellung der Eigenschaft auf einen anderen Wert als Light.BakeModeDisabled dient einem doppelten Zweck: Zum Zeitpunkt des Backens der Lichtkarte zeigt es an, dass das Licht Teil der mit Lichtkarten versehenen Szene ist und zu ihr beiträgt. Zur Laufzeit, wenn die Szene normal gerendert wird, zeigt es an, dass das Licht ein vollständig oder teilweise gebackenes Licht ist, was dazu führt, dass bestimmte Echtzeitberechnungen in Materialien für Lightmapped-Modelle deaktiviert werden. Aus diesem Grund schaltet das Kontrollkästchen both
die Eigenschaft bakeMode des Lichts und auch die aktivierte Eigenschaft der BakedLightmap, die mit den Modellobjekten verbunden ist, um.
Einrichten des Modells
Die Cornell-Box ist ein Model mit 8 Submeshes. Es ist als Typ Box gekapselt, von dem eine Instanz in der Hauptszene instanziiert wird.
Box { usedInBakedLighting: true bakedLightmap: BakedLightmap { enabled: root.lmEnabled key: "box" } scale: Qt.vector3d(100, 100, 100) }
Dieses Modell nimmt sowohl an der Lightmap-Szene teil, als auch an der für es gebackenen Lightmap. Ersteres wird durch die Eigenschaft usedInBakedLighting angezeigt. Dies allein stellt nicht sicher, dass unsere Box-Miniszene eine Lightmap erhält, sondern nur, dass sie am Lightmapping teilnimmt (d. h. die Lichtstrahlen können bei der Berechnung der indirekten Beleuchtung vom Modell abprallen).
Um die Lightmap vollständig zu generieren und dann während des Baking-Prozesses zu speichern, wird auch ein BakedLightmap Objekt mit enabled auf true
gesetzt. Die key gibt einen eindeutigen Bezeichner an.
Für ein einfaches Deployment kann die Anwendung die generierten Lightmaps (lightmaps.bin
Datei) über das Qt-Ressourcensystem in das Executable packen. Wenn die Lightmaps neu erstellt werden, muss die Anwendung neu gebaut werden, damit die geänderte Datei übernommen wird. Die Quelle für die Lightmaps-Datei wird in Lightmapper über die Eigenschaft source festgelegt.
© 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.