QLevelOfDetail Class
class Qt3DRender::QLevelOfDetailDie Klasse QLevelOfDetail bietet eine Möglichkeit, die Komplexität von gerenderten Objekten basierend auf ihrer Größe auf dem Bildschirm zu steuern. Mehr...
Kopfzeile: | #include <QLevelOfDetail> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake: | QT += 3drender |
In QML: | LevelOfDetail |
Vererbt: | Qt3DCore::QComponent |
Geerbt von: | |
Status: | Veraltet |
Ö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) |
Detaillierte Beschreibung
QLevelOfDetail kann verwendet werden, um die Darstellung eines Objekts in Abhängigkeit von der Entfernung zum Betrachter oder der Größe auf dem Bildschirm zu steuern.
Um die Rendering-Leistung zu verbessern, können Objekte, die sehr klein sind, mit viel weniger Details in Geometrie oder Textur gerendert werden.
Die Komponente wird durch die Angabe von Schwellenwerten gesteuert, die entweder als Entfernung zur Kamera oder als Bildschirmgröße interpretiert werden.
Wenn sich der Blickwinkel ändert, ändert sich die Eigenschaft currentIndex, um den entsprechenden Wert im Bereichsarray wiederzugeben.
Die Eigenschaft currentIndex kann dann z. B. zum Aktivieren oder Deaktivieren von Objekten, zum Ändern des Materials usw. verwendet werden.
Die Komponente LevelOfDetail kann nicht von mehreren entities 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 der Mitgliedstypen
enum QLevelOfDetail::ThresholdType
Legt fest, wie die Werte in den Schwellenwerten zu interpretieren sind
Konstante | Wert | Beschreibung |
---|---|---|
Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold | 0 | Abstand des Objekts zur ausgewählten Kamera |
Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold | 1 | Größe des Objekts, wenn es von der ausgewählten Kamera aus gesehen auf den Bildschirm projiziert wird, ausgedrückt in der Anzahl der Pixel auf der Seite des begrenzenden Quadrats im Bildschirmraum. |
Dokumentation der Eigenschaft
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) |
Benachrichtigungssignal:
void | cameraChanged(Qt3DRender::QCamera *camera) |
currentIndex : int
Der Index im Bereichsarray, der dem aktuellen Abstand zur Kamera oder der Bildschirmgröße entspricht.
Zugriffsfunktionen:
int | currentIndex() const |
void | setCurrentIndex(int currentIndex) |
Benachrichtigungssignal:
void | currentIndexChanged(int currentIndex) |
thresholdType : ThresholdType
Gibt an, 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 von Bereichswerten als Fließkommazahlen. Der Wert für die detaillierteste Darstellung sollte zuerst 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
Die Vorgabe ist eine Kugel mit dem Radius 1, deren Mittelpunkt der lokale Ursprung des Objekts ist. Dieses Proxy-Volumen wird verwendet, um den Abstand zur Kamera oder die Größe der Bildschirm-Projektion zu berechnen.
Wird dieser Wert auf nullptr gesetzt, wird das Bounding-Volumen der Entität verwendet. Es muss darauf geachtet werden, dass dieses Bounding Volume niemals ungültig wird.
Zugriffsfunktionen:
Qt3DRender::QLevelOfDetailBoundingSphere | volumeOverride() const |
void | setVolumeOverride(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
Notifier-Signal:
void | volumeOverrideChanged(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
Siehe auch Qt3DRender::QLevelOfDetailBoundingSphere.
Dokumentation der Mitgliedsfunktionen
[explicit]
QLevelOfDetail::QLevelOfDetail(Qt3DCore::QNode *parent = nullptr)
Konstruiert ein neues QLevelOfDetail mit dem angegebenen parent.
[slot]
void QLevelOfDetail::setCamera(Qt3DRender::QCamera *camera)
Legt die 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 die currentIndex fest.
Hinweis: Diese Einstellung sollte normalerweise nicht vom Benutzer vorgenommen werden.
Wenn die Komponente jedoch deaktiviert ist, ist das Ändern des aktuellen Index eine einfache Möglichkeit, 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 die Schwellenwerte mit dem Parameter thresholdType
Hinweis: Setter-Funktion für die Eigenschaft thresholdType.
Siehe auch thresholdType() und Qt3DRender::QLevelOfDetail::ThresholdType.
[slot]
void QLevelOfDetail::setThresholds(const QList<qreal> &thresholds)
Setzt den Wertebereich in thresholds.
Hinweis: Setter-Funktion für die Eigenschaft thresholds.
Siehe auch thresholds() und Qt3DRender::QLevelOfDetail::thresholdType.
© 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.