Класс 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.1/qt3drender-qlevelofdetail.html