QAbstractRayCaster 类
class Qt3DRender::QAbstractRayCaster用于 3D 场景中光线投射的抽象基类。 更多信息...
头文件 | #include <QAbstractRayCaster> |
CMake | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake | QT += 3drender |
实例化自 | AbstractRayCaster |
继承自 | Qt3DCore::QComponent |
继承自 |
公共类型
枚举 | FilterMode { AcceptAnyMatchingLayers, AcceptAllMatchingLayers, DiscardAnyMatchingLayers, DiscardAllMatchingLayers } |
枚举 | RunMode { Continuous, SingleShot } |
属性
- filterMode : FilterMode
- hits : const Hits
- runMode : 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::AcceptAnyMatchingLayers | 0 | 接受引用了添加到本 QAbstractRayCaster 的一个或多个 QLayer 对象的实体。这是默认设置 |
Qt3DRender::QAbstractRayCaster::AcceptAllMatchingLayers | 1 | 接受引用了添加到本 QAbstractRayCaster 的所有 QLayer 对象的实体 |
Qt3DRender::QAbstractRayCaster::DiscardAnyMatchingLayers | 2 | 丢弃引用了添加到本 QAbstractRayCaster 的一个或多个 QLayer 对象的实体 |
Qt3DRender::QAbstractRayCaster::DiscardAllMatchingLayers | 3 | 丢弃引用了添加到本 QAbstractRayCaster 的所有 QLayer 对象的实体 |
enum QAbstractRayCaster::RunMode
此枚举指定光束投射执行的频率
常量 | 值 | 描述 |
---|---|---|
Qt3DRender::QAbstractRayCaster::Continuous | 0 | 只要组件启用,就会在每一帧执行光束投射。 |
Qt3DRender::QAbstractRayCaster::SingleShot | 1 | 执行一次光束投射然后组件自动禁用。这是默认设置 |
属性文档
filterMode : FilterMode
保存指定用于光束投射测试的实体的过滤模式。
默认值是 AcceptMatchingLayers。
访问函数
Qt3DRender::QAbstractRayCaster::FilterMode | filterMode() const |
void | setFilterMode(Qt3DRender::QAbstractRayCaster::FilterMode filterMode) |
通知信号
void | filterModeChanged(Qt3DRender::QAbstractRayCaster::FilterMode filterMode) |
[只读]
hits : const Hits
保存最后一次光束投射测试的结果,以 Qt3DRender::QRayCasterHit 实例的向量表示。
注意,即使相邻的测试返回相同的结果(或空结果),每次测试都会发出更改通知。
访问函数
Qt3DRender::QAbstractRayCaster::Hits | hits() const |
通知信号
void | hitsChanged(const Qt3DRender::QAbstractRayCaster::Hits &hits) |
runMode : 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)
将层添加到当前层列表中
QList<Qt3DRender::QLayer *> QAbstractRayCaster::layers() const
返回当前层列表
void QAbstractRayCaster::removeLayer(Qt3DRender::QLayer *layer)
从当前层列表中删除层
© 2024 Qt公司。本文件中的文档贡献是各自所有者的版权。所提供的文档是根据自由软件基金会发布的GNU自由文档许可证第1.3版许可的。Qt及其相关标志是芬兰及/或世界范围的Qt公司的商标。所有其他商标均归其各自所有者所有。