QLevelOfDetail Class

class Qt3DRender::QLevelOfDetail

Die 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:

Qt3DRender::QLevelOfDetailSwitch

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

KonstanteWertBeschreibung
Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold0Abstand des Objekts zur ausgewählten Kamera
Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold1Größ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.