本页内容

Qt3DRender::QAbstractRayCaster Class

class Qt3DRender::QAbstractRayCaster

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

头文件: #include <qabstractraycaster.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
在 QML 中: AbstractRayCaster
继承自: Qt3DCore::QComponent
被继承自:

Qt3DRender::QRayCaster 以及Qt3DRender::QScreenRayCaster

状态: 已弃用

该类已弃用。我们强烈建议不要在新代码中使用它。

公共类型

enum FilterMode { AcceptAnyMatchingLayers, AcceptAllMatchingLayers, DiscardAnyMatchingLayers, DiscardAllMatchingLayers }
enum RunMode { Continuous, SingleShot }

属性

  • filterMode : Qt3DRender::QAbstractRayCaster::FilterMode
  • hits : Qt3DRender::QAbstractRayCaster::Hits
  • runMode : Qt3DRender::QAbstractRayCaster::RunMode

公共函数

void addLayer(Qt3DRender::QLayer *layer)
Qt3DRender::QAbstractRayCaster::FilterMode filterMode() const
Qt3DRender::QAbstractRayCaster::Hits hits() const
QList<Qt3DRender::QLayer *> layers() const
void removeLayer(Qt3DRender::QLayer *layer)
Qt3DRender::QAbstractRayCaster::RunMode runMode() const

公共槽位

void setFilterMode(Qt3DRender::QAbstractRayCaster::FilterMode filterMode)
void setRunMode(Qt3DRender::QAbstractRayCaster::RunMode runMode)

信号

void filterModeChanged(Qt3DRender::QAbstractRayCaster::FilterMode filterMode)
void hitsChanged(const Qt3DRender::QAbstractRayCaster::Hits &hits)
void runModeChanged(Qt3DRender::QAbstractRayCaster::RunMode runMode)

详细说明

Qt3DRender::QAbstractRayCaster 是一个用于在 3D 场景中投射光线的抽象基类。Qt3DRender::QAbstractRayCaster 无法直接实例化,而必须通过其子类进行实例化。QAbstractRayCaster 规定了所有光线投射器的通用属性,例如运行模式和图层处理,同时将实际的光线投射细节留给子类处理。

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

默认情况下,Qt3DRender::QAbstractRayCaster 的实例处于禁用状态。启用后,系统将在每一帧对指定的光线进行检测,以判断其是否与对象相交。即使未找到任何对象,QAbstractRayCaster::hits 属性也会根据光线投射的结果进行更新。

Qt3DRender::QPickingSettings 可用于控制光线投射,例如指定要检测的基元以及结果的返回方式。

此外,Qt3DRender::QLayer 组件可用于控制实体或实体子图对光线投射的响应方式。

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

另请参阅 Qt3DRender::QRayCaster 、Qt3DRender::QScreenRayCaster 、Qt3DRender::QObjectPicker 、Qt3DRender::QPickingSettings 以及Qt3DRender::QNoPicking 。

成员类型文档

enum QAbstractRayCaster::FilterMode

指定用于选择要进行射线投射测试的实体的规则。

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

enum QAbstractRayCaster::RunMode

此枚举指定了进行光线投射的频率

常量值描述
Qt3DRender::QAbstractRayCaster::Continuous0只要该组件处于启用状态,就会在每一帧执行光线投射。
Qt3DRender::QAbstractRayCaster::SingleShot1仅执行一次射线投射,然后该组件会自动禁用。这是默认行为

属性文档

filterMode : Qt3DRender::QAbstractRayCaster::FilterMode

保存用于指定射线投射测试中要选择的实体的过滤模式。

默认值为 AcceptMatchingLayers。

访问函数:

Qt3DRender::QAbstractRayCaster::FilterMode filterMode() const
void setFilterMode(Qt3DRender::QAbstractRayCaster::FilterMode filterMode)

通知信号:

void filterModeChanged(Qt3DRender::QAbstractRayCaster::FilterMode filterMode)

[read-only] hits : Qt3DRender::QAbstractRayCaster::Hits

保存上次光线投射测试的结果,该结果以 Qt3DRender::QRayCasterHit 实例向量的形式存储。

请注意,即使连续的测试返回完全相同的结果(或空结果),每次测试都会触发一次变更通知。

访问函数:

Qt3DRender::QAbstractRayCaster::Hits hits() const

通知器信号:

void hitsChanged(const Qt3DRender::QAbstractRayCaster::Hits &hits)

runMode : Qt3DRender::QAbstractRayCaster::RunMode

用于设置运行模式,控制光线投射测试的执行频率。

如果设置为“SingleShot ”(默认值),当组件启用时,将执行一次光线投射测试,然后组件会自动禁用自身。

如果设置为“连续”(Continuous),只要该组件处于启用状态,就会在每个帧执行一次光线投射测试。

访问函数:

Qt3DRender::QAbstractRayCaster::RunMode runMode() const
void setRunMode(Qt3DRender::QAbstractRayCaster::RunMode runMode)

通知信号:

void runModeChanged(Qt3DRender::QAbstractRayCaster::RunMode runMode)

成员函数文档

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

将layer 添加到当前图层列表中

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

返回当前图层列表

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

从当前图层列表中移除“layer ”

© 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.