PySide6.Qt3DRender.Qt3DRender.QLevelOfDetail

class QLevelOfDetail

QLevelOfDetail 类提供了一种根据实体在屏幕上的大小来控制渲染实体复杂性的方法。更多

PySide6.Qt3DRender.Qt3DRender.QLevelOfDetail 的继承图

继承者: QLevelOfDetailSwitch

概要

属性

方法

插槽

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QLevelOfDetail 可用于根据观察者的距离或屏幕上的大小来控制实体的表示。

为了提高渲染性能,可以使用更少的细节来渲染非常小的对象,无论是在几何形状还是纹理上。

该组件通过指定值的阈值来控制,这些值被解释为与摄像头的距离或屏幕大小。

随着视角的变化,currentIndex 属性将发生变化,以反映范围数组中的匹配值。

currentIndex 属性可以用于启用或禁用实体、更改材质等。

LevelOfDetail 组件不能在多个实体之间共享。

 #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
...
class ThresholdType

指定如何解释阈值中的值

常量

描述

Qt3DRender.QLevelOfDetail.DistanceToCameraThreshold

实体到选定摄像机的距离

Qt3DRender.QLevelOfDetail.ProjectedScreenPixelSizeThreshold

从选定的相机看,实体在屏幕上投影时的大小,以屏幕空间中边界正方形一侧的像素数表示。

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property cameraᅟ: QCamera

保存用于计算实际距离或屏幕大小的相机的ID。

Access functions:
property currentIndexᅟ: int

范围数组中与当前距离到相机或屏幕大小匹配的索引。

Access functions:
property thresholdTypeᅟ: Qt3DRender.QLevelOfDetail.ThresholdType

指定如何解释范围值。

另请参阅

ThresholdType

Access functions:
property thresholdsᅟ: list of qreal

范围值的数组,作为浮点数。最详细的表示值应首先指定。

如果 thresholdType 设置为 DistanceToCameraThreshold,则值应按升序指定,以相机空间坐标为单位

如果 thresholdType 设置为 ProjectedScreenPixelSizeThreshold,则值应按降序指定,单位为屏幕空间像素。

另请参阅

ThresholdType

Access functions:
property volumeOverrideᅟ: QLevelOfDetailBoundingSphere

默认情况下,它是一个半径为1的球体,位于实体的局部原点。此代理体积用于计算到摄像机的距离或屏幕投影的大小。

如果此值为nullptr,则使用实体的边界体积。必须注意确保此边界体积永远不会失效。

另请参阅

QLevelOfDetailBoundingSphere

Access functions:
__init__([parent=None])
Parameters:

parentQNode

使用指定的parent构造一个新的QLevelOfDetail

camera()
Return type:

QCamera

另请参阅

setCamera()

属性 cameraᅟ 的获取器。

cameraChanged(camera)
Parameters:

相机QCamera

属性 cameraᅟ 的通知信号。

createBoundingSphere(center, radius)
Parameters:
Return type:

QLevelOfDetailBoundingSphere

currentIndex()
Return type:

整数

另请参阅

setCurrentIndex()

属性 currentIndexᅟ 的获取器。

currentIndexChanged(currentIndex)
Parameters:

currentIndex – int

属性 currentIndexᅟ 的通知信号。

setCamera(camera)
Parameters:

相机QCamera

设置camera,相对于它计算距离和大小。

另请参阅

camera()

属性 cameraᅟ 的设置器。

setCurrentIndex(currentIndex)
Parameters:

currentIndex – int

设置currentIndex

注意

这通常不应由用户设置。

然而,如果组件被禁用,那么更改当前索引是在多个表示之间切换的简单方法。

另请参阅

currentIndex()

属性 currentIndexᅟ 的设置器。

setThresholdType(thresholdType)
Parameters:

thresholdTypeThresholdType

设置阈值值的解释方式,使用参数 thresholdType

另请参阅

thresholdType() ThresholdType

属性 thresholdTypeᅟ 的设置器。

setThresholds(thresholds)
Parameters:

thresholds – qreal 的列表

设置thresholds中的范围值。

另请参阅

thresholds() thresholdType

属性 thresholdsᅟ 的设置器。

setVolumeOverride(volumeOverride)
Parameters:

volumeOverrideQLevelOfDetailBoundingSphere

另请参阅

volumeOverride()

属性 volumeOverrideᅟ 的设置器。

thresholdType()
Return type:

ThresholdType

另请参阅

setThresholdType()

属性 thresholdTypeᅟ 的获取器。

thresholdTypeChanged(thresholdType)
Parameters:

thresholdTypeThresholdType

属性 thresholdTypeᅟ 的通知信号。

thresholds()
Return type:

.qreal列表

另请参阅

setThresholds()

属性 thresholdsᅟ 的获取器。

thresholdsChanged(thresholds)
Parameters:

thresholds – qreal 的列表

属性 thresholdsᅟ 的通知信号。

volumeOverride()
Return type:

QLevelOfDetailBoundingSphere

另请参阅

setVolumeOverride()

属性 volumeOverrideᅟ 的获取器。

volumeOverrideChanged(volumeOverride)
Parameters:

volumeOverrideQLevelOfDetailBoundingSphere

属性 volumeOverrideᅟ 的通知信号。