En esta página

Qt3DRender::QLevelOfDetail Class

class Qt3DRender::QLevelOfDetail

La clase QLevelOfDetail proporciona una forma de controlar la complejidad de las entidades renderizadas en función de su tamaño en la pantalla. Más...

Cabecera: #include <QLevelOfDetail>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
En QML: LevelOfDetail
Hereda de: Qt3DCore::QComponent
Heredado por:

Qt3DRender::QLevelOfDetailSwitch

Status: Deprecated

Tipos públicos

enum ThresholdType { DistanceToCameraThreshold, ProjectedScreenPixelSizeThreshold }

Propiedades

Funciones públicas

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

Ranuras públicas

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)

Señales

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)

Descripción Detallada

QLevelOfDetail se puede utilizar para controlar la representación de una entidad en función de la distancia desde el observador o el tamaño en la pantalla.

Para mejorar el rendimiento del renderizado, los objetos que son muy pequeños pueden renderizarse utilizando muchos menos detalles, en geometría o textura.

El componente se controla especificando umbrales de valores que se interpretan como distancias desde la cámara o tamaño en pantalla.

A medida que cambia el punto de vista, la propiedad currentIndex cambiará para reflejar el valor correspondiente en la matriz de rangos.

La propiedad currentIndex puede utilizarse, por ejemplo, para activar o desactivar entidades, cambiar el material, etc.

El componente LevelOfDetail no es compartible entre múltiples entities.

 #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
...

Documentación del tipo de miembro

enum QLevelOfDetail::ThresholdType

Especifica cómo se interpretan los valores de los umbrales

ConstanteValorDescripción
Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold0Distancia de la entidad a la cámara seleccionada
Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold1Tamaño de la entidad cuando se proyecta en la pantalla vista desde la cámara seleccionada, expresado en número de píxeles del lado del cuadrado delimitador en el espacio de la pantalla.

Documentación de la propiedad

camera : Qt3DRender::QCamera*

Contiene el identificador de la cámara que se utiliza para calcular la distancia real o el tamaño de la pantalla.

Funciones de acceso:

Qt3DRender::QCamera *camera() const
void setCamera(Qt3DRender::QCamera *camera)

Señal del notificador:

void cameraChanged(Qt3DRender::QCamera *camera)

currentIndex : int

El índice de la matriz de rangos que coincide con la distancia actual a la cámara o el tamaño de la pantalla.

Funciones de acceso:

int currentIndex() const
void setCurrentIndex(int currentIndex)

Señal del notificador:

void currentIndexChanged(int currentIndex)

thresholdType : ThresholdType

Especifica cómo se interpretan los valores de rango.

Funciones de acceso:

Qt3DRender::QLevelOfDetail::ThresholdType thresholdType() const
void setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType)

Señal notificadora:

void thresholdTypeChanged(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType)

Véase también Qt3DRender::QLevelOfDetail::ThresholdType.

thresholds : QList<qreal>

Matriz de valores de rango como números en coma flotante. Debe especificarse primero el valor de la representación más detallada.

Si Qt3DRender::QLevelOfDetail::thresholdType está configurado como Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold, los valores deben especificarse en orden ascendente, en coordenadas del espacio de la cámara.

Si Qt3DRender::QLevelOfDetail::thresholdType está ajustado a Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold, los valores deben especificarse en orden descendente, en píxeles de espacio de pantalla.

Funciones de acceso:

QList<qreal> thresholds() const
void setThresholds(const QList<qreal> &thresholds)

Señal notificadora:

void thresholdsChanged(const QList<qreal> &thresholds)

Véase también Qt3DRender::QLevelOfDetail::ThresholdType.

volumeOverride : Qt3DRender::QLevelOfDetailBoundingSphere

Por defecto es una esfera de radio 1 y centrada en el origen local de la entidad. Este volumen proxy se utiliza para calcular la distancia a la cámara o el tamaño de la proyección en pantalla.

Si este valor es nullptr, se utiliza el volumen delimitador de la entidad. Hay que tener cuidado de que este volumen delimitador nunca deje de ser válido.

Funciones de acceso:

Qt3DRender::QLevelOfDetailBoundingSphere volumeOverride() const
void setVolumeOverride(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride)

Señal del notificador:

void volumeOverrideChanged(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride)

Véase también Qt3DRender::QLevelOfDetailBoundingSphere.

Documentación de las funciones miembro

[explicit] QLevelOfDetail::QLevelOfDetail(Qt3DCore::QNode *parent = nullptr)

Construye un nuevo QLevelOfDetail con el parent especificado.

[slot] void QLevelOfDetail::setCamera(Qt3DRender::QCamera *camera)

Establece el camera relativo al que se calculan la distancia y el tamaño.

Nota: Función Setter para la propiedad camera.

Véase también camera().

[slot] void QLevelOfDetail::setCurrentIndex(int currentIndex)

Establece la dirección currentIndex.

Nota: Normalmente, el usuario no debería establecerlo.

Sin embargo, si el componente está desactivado, cambiar el índice actual es una forma sencilla de cambiar entre varias representaciones.

Nota: Función Setter para la propiedad currentIndex.

Véase también currentIndex().

[slot] void QLevelOfDetail::setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType)

Establece la forma en que se interpretan los valores de los umbrales con el parámetro thresholdType

Nota: Función Setter para la propiedad thresholdType.

Véase también thresholdType() y Qt3DRender::QLevelOfDetail::ThresholdType.

[slot] void QLevelOfDetail::setThresholds(const QList<qreal> &thresholds)

Establece los valores de rango en thresholds.

Nota: Función Setter para la propiedad thresholds.

Véase también thresholds() y 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.