Qt3DRender::QLevelOfDetail Class
class Qt3DRender::QLevelOfDetailQLevelOfDetail 클래스는 화면상의 크기에 따라 렌더링되는 엔티티의 복잡도를 제어하는 방법을 제공합니다. 더 보기...
| 헤더: | #include <qlevelofdetail.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
| qmake: | QT += 3drender |
| QML에서: | LevelOfDetail |
| 상속: | Qt3DCore::QComponent |
| 상속받는 클래스: | |
| 상태: | 사용 중단됨 |
이 클래스는 더 이상 사용되지 않습니다. 새로운 코드에서는 이 클래스를 사용하지 않을 것을 강력히 권장합니다.
공개 유형
| enum | 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 컴포넌트는 여러 entities 간에 공유할 수 없습니다.
#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
...멤버 유형 설명서
enum QLevelOfDetail::ThresholdType
임계값의 수치가 어떻게 해석될지 지정합니다
| 상수 | 값 | 설명 |
|---|---|---|
Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold | 0 | 엔티티에서 선택된 카메라까지의 거리 |
Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold | 1 | 선택된 카메라에서 볼 때 화면에 투영된 엔티티의 크기로, 화면 공간에서 경계 사각형의 한 변 길이를 픽셀 수로 나타냅니다. |
속성 설명
camera : Qt3DRender::QCamera*
실제 거리 또는 화면 크기를 계산하는 데 사용되는 카메라의 ID를 저장합니다.
액세스 함수:
| 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도 참조하십시오 .
멤버 함수 문서
[explicit] QLevelOfDetail::QLevelOfDetail(Qt3DCore::QNode *parent = nullptr)
지정된 ` parent`을 사용하여 새로운 `QLevelOfDetail`을 생성합니다.
[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도 참조하십시오 .
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.