Spec-Zone.ru › Qt 6.0

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

Spec-Zone.ru

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