Класс QLevelOfDetail
класс Qt3DRender::QLevelOfDetailКласс QLevelOfDetail предоставляет способ управления сложностью отображаемых объектов на основе их размера на экране. Подробнее...
| Заголовок: | #include <QLevelOfDetail> |
| CMake: | find_package(Qt6 COMPONENTS 3drender REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
| qmake: | QT += 3drender |
| С версии: | Qt 5.9 |
| Инициализируется из: | LevelOfDetail |
| Наследуется от: | Qt3DCore::QComponent |
| Наследует: |
Типы
| перечисление | ThresholdType { DistanceToCameraThreshold, ProjectedScreenPixelSizeThreshold } |
Свойства
|
|
Открытые функции
| 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 |
Открытые слоты
| 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) |
Сигналы
| 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) |
Подробное описание
QLevelOfDetail может использоваться для управления представлением объекта на основе расстояния от наблюдателя или размера на экране.
Для повышения производительности рендеринга объекты, которые очень маленькие, могут быть отображены с меньшими деталями, в геометрии или текстуре.
Компонент управляется путем задания пороговых значений, которые интерпретируются как расстояния от камеры или размера на экране.
При изменении точки зрения свойство currentIndex изменится, чтобы отразить соответствующее значение в массиве.
Свойство currentIndex может затем использоваться, например, для включения или выключения объектов, изменения материала и т. д.
Компонент LevelOfDetail не может быть использован несколькими сущностями одновременно.
#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
... Документация по типам членов
перечисление QLevelOfDetail::ThresholdType
Указывает, как интерпретируются значения в массиве порогов
| Постоянная | Значение | Описание |
|---|---|---|
Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold |
0 |
Расстояние от объекта до выбранной камеры |
Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold |
1 |
Размер объекта при проекции на экран, как видно с выбранной камеры, выраженный в количестве пикселей по стороне ограничивающего квадрата в пространстве экрана. |
Документация по свойствам
camera : Qt3DRender::QCamera*
Содержит идентификатор камеры, используемой для вычисления фактического расстояния или размера экрана.
Функции доступа:
| Qt3DRender::QCamera * | camera() const |
| void | setCamera(Qt3DRender::QCamera *camera) |
Сигнал уведомления:
| void | cameraChanged(Qt3DRender::QCamera *camera) |
currentIndex : int
Индекс в массиве диапазонов, соответствующий текущему расстоянию до камеры или размеру экрана.
Функции доступа:
| int | currentIndex() const |
| void | setCurrentIndex(int currentIndex) |
Сигнал уведомления:
| void | currentIndexChanged(int currentIndex) |
thresholdType : ThresholdType
Определяет, как интерпретируются значения диапазона.
Функции доступа:
| Qt3DRender::QLevelOfDetail::ThresholdType | thresholdType() const |
| void | setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
Сигнал уведомления:
| void | thresholdTypeChanged(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
См. также Qt3DRender::QLevelOfDetail::ThresholdType.
thresholds : QList<qreal>
Массив значений диапазона в виде чисел с плавающей точкой. Значение для наиболее подробного представления должно быть указано первым.
Если Qt3DRender::QLevelOfDetail::thresholdType установлено в Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold, значения должны быть указаны в возрастающем порядке, в координатах пространства камеры.
Если Qt3DRender::QLevelOfDetail::thresholdType установлено в Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold, значения должны быть указаны в убывающем порядке, в пикселях пространства экрана.
Функции доступа:
| QList<qreal> | thresholds() const |
| void | setThresholds(const QList<qreal> &thresholds) |
Сигнал уведомления:
| void | thresholdsChanged(const QList<qreal> &thresholds) |
См. также Qt3DRender::QLevelOfDetail::ThresholdType.
volumeOverride : Qt3DRender::QLevelOfDetailBoundingSphere
По умолчанию — сфера радиусом 1, центрированная в локальном начале объекта. Этот объем-заглушка используется для вычисления расстояния до камеры или размера проекции на экран.
Если это значение равно nullptr, используется граничная область объекта. Следует позаботиться, чтобы эта граничная область никогда не становилась недействительной.
Функции доступа:
| Qt3DRender::QLevelOfDetailBoundingSphere | volumeOverride() const |
| void | setVolumeOverride(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
Сигнал уведомления:
| void | volumeOverrideChanged(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
См. также Qt3DRender::QLevelOfDetailBoundingSphere.
Документация по функциям-членам
QLevelOfDetail::QLevelOfDetail(Qt3DCore::QNode *parent = nullptr)
Создает новый QLevelOfDetail со указанным parent.
[slot] void QLevelOfDetail::setCamera(Qt3DRender::QCamera *camera)
Устанавливает camera, относительно которого вычисляются расстояние и размер.
Примечание: Функция-сеттер для свойства camera.
См. также camera().
[slot] void QLevelOfDetail::setCurrentIndex(int currentIndex)
Устанавливает currentIndex.
Примечание: Пользователю обычно не следует устанавливать это значение.
Однако, если компонент отключен, изменение текущего индекса — простой способ переключения между несколькими представлениями.
Примечание: Функция-сеттер для свойства currentIndex.
См. также currentIndex().
[slot] void QLevelOfDetail::setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType)
Устанавливает способ интерпретации значений порогов с помощью параметра thresholdType.
Примечание: Функция-сеттер для свойства thresholdType.
См. также thresholdType() и Qt3DRender::QLevelOfDetail::ThresholdType.
[slot] void QLevelOfDetail::setThresholds(const QList<qreal> &thresholds)
Устанавливает значения диапазона в thresholds.
Примечание: Функция-сеттер для свойства thresholds.
См. также thresholds() и Qt3DRender::QLevelOfDetail::thresholdType.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qt3drender-qlevelofdetail.html