Qt3DRender::QAbstractRayCaster Class
class Qt3DRender::QAbstractRayCaster抽象基类,用于在 3D 场景中进行光线投射。更多
头文件: | #include <QAbstractRayCaster> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake: | QT += 3drender |
在 QML 中: | AbstractRayCaster |
继承: | Qt3DCore::QComponent |
继承于 | |
状态: | 已废弃 |
公共类型
enum | FilterMode { AcceptAnyMatchingLayers, AcceptAllMatchingLayers, DiscardAnyMatchingLayers, DiscardAllMatchingLayers } |
enum | RunMode { Continuous, SingleShot } |
属性
- filterMode : Qt3DRender::QAbstractRayCaster::FilterMode
- hits : const 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 场景的抽象基类。 不能直接实例化,而是通过其子类。QAbstractRayCaster 为所有光线投射器指定了运行模式和图层处理等通用属性,而实际的光线投射细节则留给子类处理。Qt3DRender::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::AcceptAnyMatchingLayers | 0 | 接受引用一个或多个QLayer 对象的实体添加到此QAbstractRayCaster 。这是默认值 |
Qt3DRender::QAbstractRayCaster::AcceptAllMatchingLayers | 1 | 接受引用添加到此站点的所有QLayer 对象的实体QAbstractRayCaster |
Qt3DRender::QAbstractRayCaster::DiscardAnyMatchingLayers | 2 | 丢弃引用添加到此对象的一个或多个QLayer 对象的实体QAbstractRayCaster |
Qt3DRender::QAbstractRayCaster::DiscardAllMatchingLayers | 3 | 丢弃引用添加到此对象的所有QLayer 对象的实体QAbstractRayCaster |
enum QAbstractRayCaster::RunMode
该枚举用于指定射线投射的频率
常数 | 值 | 说明 |
---|---|---|
Qt3DRender::QAbstractRayCaster::Continuous | 0 | 只要组件处于启用状态,每帧都会执行光线投射。 |
Qt3DRender::QAbstractRayCaster::SingleShot | 1 | 如果只进行一次射线投射,则组件会自动禁用。这是默认的 |
属性文档
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 : const Qt3DRender::QAbstractRayCaster::Hits
保存上次光线投射测试的结果,作为Qt3DRender::QRayCasterHit 实例的向量。
请注意,即使连续测试的结果完全相同(或为空),每次测试都会发出更改通知。
访问函数:
Qt3DRender::QAbstractRayCaster::Hits | hits() const |
Notifier 信号:
void | hitsChanged(const Qt3DRender::QAbstractRayCaster::Hits &hits) |
runMode : Qt3DRender::QAbstractRayCaster::RunMode
运行模式,用于控制射线投射测试的频率。
如果设置为SingleShot (默认值),当启用该组件时,将执行一次射线投射测试,然后该组件将自动禁用。
如果设置为 "持续"(Continuous),则只要组件处于启用状态,就会在每一帧执行光线投射测试。
访问功能:
Qt3DRender::QAbstractRayCaster::RunMode | runMode() const |
void | setRunMode(Qt3DRender::QAbstractRayCaster::RunMode runMode) |
Notifier 信号:
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
© 2025 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.