Auf dieser Seite

Qt3DRender::QLevelOfDetail Class

class Qt3DRender::QLevelOfDetail

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

Qt3DRender::QLevelOfDetailSwitch

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

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