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 プロパティが変更され、range 配列内の対応する値が反映されます。
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
カメラまたは画面サイズからの現在の距離に対応する、range配列内のインデックス。
アクセス関数:
| 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.