QLevelOfDetail Class
class Qt3DRender::QLevelOfDetailQLevelOfDetailクラスは、画面上のサイズに基づいてレンダリングされたエンティティの複雑さを制御する方法を提供します。詳細...
Header: | #include <QLevelOfDetail> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake: | QT += 3drender |
In QML: | LevelOfDetail |
Inherits: | Qt3DCore::QComponent |
Inherited By: | |
Status: | Deprecated |
パブリックタイプ
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 | 選択されたカメラから見てスクリーンに投影されたときのエンティティのサイズ。スクリーン空間における正方形の辺のピクセル数で表される。 |
プロパティ Documentation
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) |
メンバ関数ドキュメント
[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も参照 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。