QLevelOfDetail Class

class Qt3DRender::QLevelOfDetail

QLevelOfDetailクラスは、画面上のサイズに基づいてレンダリングエンティティの複雑さを制御する方法を提供します。詳細...

ヘッダー #include <QLevelOfDetail>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake QT += 3drender
QML で LevelOfDetail
を継承: Qt3DCore::QComponent
継承される

Qt3DRender::QLevelOfDetailSwitch

ステータス非推奨

パブリックな型

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::DistanceToCameraThreshold0エンティティから選択されたカメラまでの距離
Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold1選択されたカメラから見た、スクリーン上に投影されたときの実体の大きさを、スクリーン空間における外接正方形の辺のピクセル数で表す。

プロパティの説明

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::thresholdTypeQt3DRender::QLevelOfDetail::DistanceToCameraThreshold に設定されている場合、値はカメラ空間座標で昇順に指定されなければならない。

Qt3DRender::QLevelOfDetail::thresholdTypeQt3DRender::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も参照してください

© 2025 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.