QLevelOfDetail Class

class Qt3DRender::QLevelOfDetail

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

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:

Qt3DRender::QLevelOfDetailSwitch

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

プロパティ 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::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も参照

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。