Spec-Zone.ru › Qt

Класс 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
Наследует:

Qt3DRender::QLevelOfDetailSwitch

  • Список всех членов, включая унаследованные

Типы

перечисление ThresholdType { DistanceToCameraThreshold, ProjectedScreenPixelSizeThreshold }

Свойства

  • camera : Qt3DRender::QCamera*
  • currentIndex : int
  • thresholdType : ThresholdType
  • thresholds : QList<qreal>
  • volumeOverride : Qt3DRender::QLevelOfDetailBoundingSphere

Открытые функции

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API