Qt3DRender::QLevelOfDetail Class
class Qt3DRender::QLevelOfDetailDie Klasse „QLevelOfDetail“ bietet eine Möglichkeit, die Komplexität der gerenderten Elemente anhand ihrer Größe auf dem Bildschirm zu steuern. Mehr...
| Header: | #include <qlevelofdetail.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
| qmake: | QT += 3drender |
| In QML: | LevelOfDetail |
| Erbt von: | Qt3DCore::QComponent |
| Vererbt an: | |
| Status: | Veraltet |
Diese Klasse ist veraltet. Wir raten dringend davon ab, sie in neuem Code zu verwenden.
Öffentliche Typen
| enum | ThresholdType { DistanceToCameraThreshold, ProjectedScreenPixelSizeThreshold } |
Eigenschaften
|
|
Öffentliche Funktionen
| QLevelOfDetail(Qt3DCore::QNode *parent = nullptr) | |
| Qt3DRender::QCamera * | camera() const |
| int | currentIndex() const |
| Qt3DRender::QLevelOfDetail::ThresholdType | thresholdType() const |
| QList<qreal> | thresholds() const |
| Qt3DRender::QLevelOfDetailBoundingSphere | volumeOverride() const |
Öffentliche Slots
| void | setCamera(Qt3DRender::QCamera *camera) |
| void | setCurrentIndex(int currentIndex) |
| void | setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
| void | setThresholds(const QList<qreal> &thresholds) |
| void | setVolumeOverride(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
Signale
| void | cameraChanged(Qt3DRender::QCamera *camera) |
| void | currentIndexChanged(int currentIndex) |
| void | thresholdTypeChanged(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
| void | thresholdsChanged(const QList<qreal> &thresholds) |
| void | volumeOverrideChanged(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
Ausführliche Beschreibung
Mit „QLevelOfDetail“ lässt sich die Darstellung einer Entität in Abhängigkeit von der Entfernung zum Betrachter oder der Größe auf dem Bildschirm steuern.
Um die Rendering-Leistung zu verbessern, können sehr kleine Objekte mit deutlich weniger Details in Geometrie oder Textur gerendert werden.
Die Komponente wird durch die Festlegung von Schwellenwerten gesteuert, die entweder als Entfernungen zur Kamera oder als Bildschirmgröße interpretiert werden.
Wenn sich der Blickwinkel ändert, ändert sich die Eigenschaft „ currentIndex “, um den entsprechenden Wert im Bereichsarray widerzuspiegeln.
Die Eigenschaft „ currentIndex “ kann dann beispielsweise verwendet werden, um Objekte zu aktivieren oder zu deaktivieren, das Material zu ändern usw.
Die „ LevelOfDetail “-Komponente kann nicht von mehreren „ entities “-Objekten gemeinsam genutzt werden.
#include <Qt3DCore/QEntity>
#include <Qt3DRender/QGeometryRenderer>
#include <Qt3DRender/QLevelOfDetail>
// Scene
Qt3DCore::QEntity *rootEntity = new Qt3DCore::Qt3DCore::QEntity;
Qt3DCore::QEntity *renderableEntity = new Qt3DCore::QEntity(rootEntity);
Qt3DRender::QGeometryRenderer *geometryRenderer = new Qt3DCore::QGeometryRenderer(renderableEntity);
renderableEntity->addComponent(geometryRenderer);
Qt3DRender::QLevelOfDetail* lod = new Qt3Render::QLevelOfDetail(renderableEntity);
QList<qreal> thresholds = {20, 35, 50, 65};
lod->setThresholds(thresholds);
lod->setCamera(mainCamera);
renderableEntity->addComponent(lod);
// connect to QLevelOfDetail::currentIndexChanged to toggle rendering
...Dokumentation zum Mitgliedstyp
enum QLevelOfDetail::ThresholdType
Legt fest, wie die Werte in den Schwellenwerten interpretiert werden
| Konstante | Wert | Beschreibung |
|---|---|---|
Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold | 0 | Abstand vom Objekt zur ausgewählten Kamera |
Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold | 1 | Größe des Objekts bei Projektion auf den Bildschirm aus der Perspektive der ausgewählten Kamera, ausgedrückt in der Anzahl der Pixel an der Seite des Begrenzungsquadrats im Bildschirmraum. |
Eigenschaftsdokumentation
camera : Qt3DRender::QCamera*
Enthält die ID der Kamera, die zur Berechnung der tatsächlichen Entfernung oder der Bildschirmgröße verwendet wird.
Zugriffsfunktionen:
| Qt3DRender::QCamera * | camera() const |
| void | setCamera(Qt3DRender::QCamera *camera) |
Notifier-Signal:
| void | cameraChanged(Qt3DRender::QCamera *camera) |
currentIndex : int
Der Index im Bereichsarray, der der aktuellen Entfernung zur Kamera bzw. der Bildschirmgröße entspricht.
Zugriffsfunktionen:
| int | currentIndex() const |
| void | setCurrentIndex(int currentIndex) |
Benachrichtigungssignal:
| void | currentIndexChanged(int currentIndex) |
thresholdType : ThresholdType
Legt fest, wie Bereichswerte interpretiert werden.
Zugriffsfunktionen:
| Qt3DRender::QLevelOfDetail::ThresholdType | thresholdType() const |
| void | setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
Benachrichtigungssignal:
| void | thresholdTypeChanged(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
Siehe auch „ Qt3DRender::QLevelOfDetail::ThresholdType “.
thresholds : QList<qreal>
Array mit Bereichswerten als Gleitkommazahlen. Der Wert für die detaillierteste Darstellung sollte an erster Stelle angegeben werden.
Wenn „ Qt3DRender::QLevelOfDetail::thresholdType “ auf „ Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold “ gesetzt ist, sollten die Werte in aufsteigender Reihenfolge in Kamerakoordinaten angegeben werden
Wenn „ Qt3DRender::QLevelOfDetail::thresholdType “ auf „ Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold “ gesetzt ist, sollten die Werte in absteigender Reihenfolge in Bildschirmpixeln angegeben werden.
Zugriffsfunktionen:
| QList<qreal> | thresholds() const |
| void | setThresholds(const QList<qreal> &thresholds) |
Benachrichtigungssignal:
| void | thresholdsChanged(const QList<qreal> &thresholds) |
Siehe auch „ Qt3DRender::QLevelOfDetail::ThresholdType “.
volumeOverride : Qt3DRender::QLevelOfDetailBoundingSphere
Standardmäßig handelt es sich um eine Kugel mit dem Radius 1, deren Mittelpunkt am lokalen Ursprung des Objekts liegt. Dieses Proxy-Volumen wird zur Berechnung des Abstands zur Kamera oder der Größe der Bildschirmprojektion verwendet.
Ist dieser Wert nullptr, wird das Begrenzungsvolumen des Objekts verwendet. Es ist darauf zu achten, dass dieses Begrenzungsvolumen niemals ungültig wird.
Zugriffsfunktionen:
| Qt3DRender::QLevelOfDetailBoundingSphere | volumeOverride() const |
| void | setVolumeOverride(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
Benachrichtigungssignal:
| void | volumeOverrideChanged(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
Siehe auch Qt3DRender::QLevelOfDetailBoundingSphere.
Dokumentation der Mitgliedsfunktionen
[explicit] QLevelOfDetail::QLevelOfDetail(Qt3DCore::QNode *parent = nullptr)
Erstellt ein neues `QLevelOfDetail` mit dem angegebenen ` parent`.
[slot] void QLevelOfDetail::setCamera(Qt3DRender::QCamera *camera)
Legt die Eigenschaft „ camera “ fest, relativ zu der Entfernung und Größe berechnet werden.
Hinweis: Setter -Funktion für die Eigenschaft „ camera “.
Siehe auch ` camera()`.
[slot] void QLevelOfDetail::setCurrentIndex(int currentIndex)
Legt den Wert „ currentIndex “ fest.
Hinweis: Diese Einstellung sollte normalerweise nicht vom Benutzer vorgenommen werden.
Ist die Komponente jedoch deaktiviert, stellt das Ändern des aktuellen Indexes eine einfache Möglichkeit dar, zwischen mehreren Darstellungen zu wechseln.
Hinweis: Setter -Funktion für die Eigenschaft ` currentIndex`.
Siehe auch currentIndex().
[slot] void QLevelOfDetail::setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType)
Legt fest, wie Schwellenwerte mit dem Parameter interpretiert werden thresholdType
Hinweis: Setter -Funktion für die Eigenschaft „ thresholdType “.
Siehe auch „ thresholdType()“ und „ Qt3DRender::QLevelOfDetail::ThresholdType “.
[slot] void QLevelOfDetail::setThresholds(const QList<qreal> &thresholds)
Legt die Bereichswerte in „ thresholds “ fest.
Hinweis: Setter -Funktion für die Eigenschaft ` thresholds`.
Siehe auch „ thresholds()“ und „ Qt3DRender::QLevelOfDetail::thresholdType “.
© 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.