QAbstractRayCaster 类

class Qt3DRender::QAbstractRayCaster

用于 3D 场景中光线投射的抽象基类。 更多信息...

头文件 #include <QAbstractRayCaster>
CMakefind_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmakeQT += 3drender
实例化自 AbstractRayCaster
继承自 Qt3DCore::QComponent
继承自

Qt3DRender::QRayCasterQt3DRender::QScreenRayCaster

公共类型

枚举FilterMode { AcceptAnyMatchingLayers, AcceptAllMatchingLayers, DiscardAnyMatchingLayers, DiscardAllMatchingLayers }
枚举RunMode { Continuous, SingleShot }

属性

公共函数

voidaddLayer(Qt3DRender::QLayer *layer)
Qt3DRender::QAbstractRayCaster::FilterModefilterMode() const
Qt3DRender::QAbstractRayCaster::Hitshits() const
QList<Qt3DRender::QLayer *>layers() const
voidremoveLayer(Qt3DRender::QLayer *layer)
Qt3DRender::QAbstractRayCaster::RunModerunMode() const

公共槽

voidsetFilterMode(Qt3DRender::QAbstractRayCaster::FilterMode filterMode)
voidsetRunMode(Qt3DRender::QAbstractRayCaster::RunMode runMode)

信号

voidfilterModeChanged(Qt3DRender::QAbstractRayCaster::FilterMode filterMode)
voidhitsChanged(const Qt3DRender::QAbstractRayCaster::Hits &hits)
voidrunModeChanged(Qt3DRender::QAbstractRayCaster::RunMode runMode)

详细信息

Qt3DRender::QAbstractRayCaster 是用于向3D场景投射光束的抽象基类。 Qt3DRender::QAbstractRayCaster 不能直接实例化,而是通过其子类来实例化。QAbstractRayCaster指定了所有光束投射器的公共属性,例如运行模式和层处理,同时将实际的光束投射细节留给子类。

光束投射与拾取(使用 Qt3DRender::QObjectPicker)不同之处在于它不需要鼠标事件来触发。

默认情况下,Qt3DRender::QAbstractRayCaster 的实例是被禁用的。当启用时,将在每一帧测试指定的光束与相交对象。即使没有找到对象,QAbstractRayCaster::hits 属性也会更新为光束投射的结果。

可以使用 Qt3DRender::QPickingSettings 来控制光束投射,例如哪些原语需要测试以及如何返回结果。

此外,可以使用 Qt3DRender::QLayer 组件来控制实体或实体子图对光束投射的反应。

注意:从 QAbstractRayCaster 派生的组件不应该在多个实体之间共享。

另请参阅:Qt3DRender::QRayCasterQt3DRender::QScreenRayCasterQt3DRender::QObjectPickerQt3DRender::QPickingSettingsQt3DRender::QNoPicking

成员类型文档

enum QAbstractRayCaster::FilterMode

指定用于测试光束投射的实体选择规则。

常量描述
Qt3DRender::QAbstractRayCaster::AcceptAnyMatchingLayers0接受引用了添加到本 QAbstractRayCaster 的一个或多个 QLayer 对象的实体。这是默认设置
Qt3DRender::QAbstractRayCaster::AcceptAllMatchingLayers1接受引用了添加到本 QAbstractRayCaster 的所有 QLayer 对象的实体
Qt3DRender::QAbstractRayCaster::DiscardAnyMatchingLayers2丢弃引用了添加到本 QAbstractRayCaster 的一个或多个 QLayer 对象的实体
Qt3DRender::QAbstractRayCaster::DiscardAllMatchingLayers3丢弃引用了添加到本 QAbstractRayCaster 的所有 QLayer 对象的实体

enum QAbstractRayCaster::RunMode

此枚举指定光束投射执行的频率

常量描述
Qt3DRender::QAbstractRayCaster::Continuous0只要组件启用,就会在每一帧执行光束投射。
Qt3DRender::QAbstractRayCaster::SingleShot1执行一次光束投射然后组件自动禁用。这是默认设置

属性文档

filterMode : FilterMode

保存指定用于光束投射测试的实体的过滤模式。

默认值是 AcceptMatchingLayers。

访问函数

Qt3DRender::QAbstractRayCaster::FilterModefilterMode() const
voidsetFilterMode(Qt3DRender::QAbstractRayCaster::FilterMode filterMode)

通知信号

voidfilterModeChanged(Qt3DRender::QAbstractRayCaster::FilterMode filterMode)

[只读] hits : const Hits

保存最后一次光束投射测试的结果,以 Qt3DRender::QRayCasterHit 实例的向量表示。

注意,即使相邻的测试返回相同的结果(或空结果),每次测试都会发出更改通知。

访问函数

Qt3DRender::QAbstractRayCaster::Hitshits() const

通知信号

voidhitsChanged(const Qt3DRender::QAbstractRayCaster::Hits &hits)

runMode : RunMode

存储控制光线投射测试执行频率的运行模式。

如果设置为SingleShot(默认),当组件启用时,将执行单个光线投射测试并自动禁用组件。

如果设置为Continuous,只要组件启用,就会在每帧执行光线投射测试。

访问函数

Qt3DRender::QAbstractRayCaster::RunModerunMode() const
voidsetRunMode(Qt3DRender::QAbstractRayCaster::RunMode runMode)

通知信号

voidrunModeChanged(Qt3DRender::QAbstractRayCaster::RunMode runMode)

成员函数文档

void QAbstractRayCaster::addLayer(Qt3DRender::QLayer *layer)

添加到当前层列表中

QList<Qt3DRender::QLayer *> QAbstractRayCaster::layers() const

返回当前层列表

void QAbstractRayCaster::removeLayer(Qt3DRender::QLayer *layer)

从当前层列表中删除

© 2024 Qt公司。本文件中的文档贡献是各自所有者的版权。所提供的文档是根据自由软件基金会发布的GNU自由文档许可证第1.3版许可的。Qt及其相关标志是芬兰及/或世界范围的Qt公司的商标。所有其他商标均归其各自所有者所有。