Класс QLevelOfDetail
(Qt3DRender::QLevelOfDetail)Класс QLevelOfDetail предоставляет способ управления сложностью отрисованных объектов на основе их размера на экране. Подробнее...
| Заголовок: | #include <QLevelOfDetail> |
| qmake: | QT += 3drender |
| С момента: | Qt 5.9 |
| Инициализируется: | LevelOfDetail |
| Наследует: | Qt3DCore::QComponent |
| Наследуется: |
Типы
| Перечисление | ThresholdType { DistanceToCameraThreshold, ProjectedScreenPixelSizeThreshold } |
Свойства
|
|
- 1 свойство унаследовано от Qt3DCore::QComponent
- 3 свойства унаследовано от Qt3DCore::QNode
- 1 свойство унаследовано от QObject
Открытые функции
| QLevelOfDetail(Qt3DCore::QNode *parent = nullptr) | |
| QCamera * | camera() const |
| QLevelOfDetailBoundingSphere | createBoundingSphere(const QVector3D ¢er, float radius) |
| int | currentIndex() const |
| ThresholdType | thresholdType() const |
| QVector<qreal> | thresholds() const |
| QLevelOfDetailBoundingSphere | volumeOverride() const |
- 2 открытые функции унаследованы от Qt3DCore::QComponent
- 11 открытых функций унаследовано от Qt3DCore::QNode
- 32 открытых функций унаследовано от QObject
Открытые слоты
| void | setCamera(QCamera *camera) |
| void | setCurrentIndex(int currentIndex) |
| void | setThresholdType(ThresholdType thresholdType) |
| void | setThresholds(const QVector<qreal> &thresholds) |
| void | setVolumeOverride(const QLevelOfDetailBoundingSphere &volumeOverride) |
- 1 открытый слот унаследован от Qt3DCore::QComponent
- 3 открытых слота унаследовано от Qt3DCore::QNode
- 1 открытый слот унаследован от QObject
Сигналы
| void | cameraChanged(QCamera *camera) |
| void | currentIndexChanged(int currentIndex) |
| void | thresholdTypeChanged(ThresholdType thresholdType) |
| void | thresholdsChanged(const QVector<qreal> &thresholds) |
| void | volumeOverrideChanged(const QLevelOfDetailBoundingSphere &volumeOverride) |
- 3 сигнала унаследованы от Qt3DCore::QComponent
- 4 сигнала унаследованы от Qt3DCore::QNode
- 2 сигнала унаследованы от QObject
Защищенные функции
| QLevelOfDetail(QLevelOfDetailPrivate &dd, Qt3DCore::QNode *parent = nullptr) |
- 2 защищенные функции унаследованы от Qt3DCore::QNode
- 9 защищенных функций унаследовано от QObject
Дополнительные унаследованные члены
- 11 статических публичных членов унаследованы от QObject
Подробное описание
Класс QLevelOfDetail предоставляет способ управления сложностью отрисованных объектов на основе их размера на экране.
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);
QVector<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 *
Содержит идентификатор камеры, используемой для вычисления фактического расстояния или размера экрана.
Функции доступа:
| QCamera * | camera() const |
| void | setCamera(QCamera *camera) |
Сигнал уведомления:
| void | cameraChanged(QCamera *camera) |
currentIndex : int
Индекс в массиве диапазонов, соответствующий текущему расстоянию до камеры или размеру экрана.
Функции доступа:
| int | currentIndex() const |
| void | setCurrentIndex(int currentIndex) |
Сигнал уведомления:
| void | currentIndexChanged(int currentIndex) |
thresholdType : ThresholdType
Определяет способ интерпретации значений диапазона.
Функции доступа:
| ThresholdType | thresholdType() const |
| void | setThresholdType(ThresholdType thresholdType) |
Сигнал уведомления:
| void | thresholdTypeChanged(ThresholdType thresholdType) |
См. также Qt3DRender::QLevelOfDetail::ThresholdType.
thresholds : QVector<qreal>
Массив значений диапазона в виде чисел с плавающей точкой. Значение для наиболее подробного представления должно быть указано первым.
Если Qt3DRender::QLevelOfDetail::thresholdType установлено в Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold, значения должны быть указаны в возрастающем порядке в координатах пространства камеры.
Если Qt3DRender::QLevelOfDetail::thresholdType установлено в Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold, значения должны быть указаны в убывающем порядке в пикселях пространства экрана.
Функции доступа:
| QVector<qreal> | thresholds() const |
| void | setThresholds(const QVector<qreal> &thresholds) |
Сигнал уведомления:
| void | thresholdsChanged(const QVector<qreal> &thresholds) |
См. также Qt3DRender::QLevelOfDetail::ThresholdType.
volumeOverride : Qt3DRender::QLevelOfDetailBoundingSphere
По умолчанию — сфера радиусом 1, центрированная в локальном начале координат сущности. Этот объем-прокси используется для вычисления расстояния до камеры или размера проекции на экран.
Если это значение равно nullptr, используется объем ограничивающей области сущности. Следует позаботиться о том, чтобы этот объем ограничивающей области никогда не становился недействительным.
Функции доступа:
| QLevelOfDetailBoundingSphere | volumeOverride() const |
| void | setVolumeOverride(const QLevelOfDetailBoundingSphere &volumeOverride) |
Сигнал уведомления:
| void | volumeOverrideChanged(const QLevelOfDetailBoundingSphere &volumeOverride) |
См. также Qt3DRender::QLevelOfDetailBoundingSphere.
Документация по членам-функциям
QLevelOfDetail::QLevelOfDetail(Qt3DCore::QNode *parent = nullptr)
Создаёт новый QLevelOfDetail со указанным parent.
[protected] QLevelOfDetail::QLevelOfDetail(QLevelOfDetailPrivate &dd, Qt3DCore::QNode *parent = nullptr)
Конструктор копирования.
QLevelOfDetailBoundingSphere QLevelOfDetail::createBoundingSphere(const QVector3D ¢er, float radius)
[slot] void QLevelOfDetail::setCamera(QCamera *camera)
Устанавливает camera, относительно которого вычисляются расстояние и размер.
Примечание: Функция установки для свойства camera.
См. также camera().
[slot] void QLevelOfDetail::setCurrentIndex(int currentIndex)
Устанавливает currentIndex.
Примечание: Обычно пользователь этого не должен устанавливать.
Однако, если компонент отключён, изменение текущего индекса является простым способом переключения между несколькими представлениями.
Примечание: Функция установки для свойства currentIndex.
См. также currentIndex().
[slot] void QLevelOfDetail::setThresholdType(ThresholdType thresholdType)
Устанавливает способ интерпретации значений порога с параметром thresholdType.
Примечание: Функция установки для свойства thresholdType.
См. также thresholdType() и Qt3DRender::QLevelOfDetail::ThresholdType.
[slot] void QLevelOfDetail::setThresholds(const QVector<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-5.9/qt3drender-qlevelofdetail.html