抽象射线投射 QML 类型

3D 场景中射线投射的抽象基类。 更多...

导入语句import Qt3D.Render 2.7
实例化 QAbstractRayCaster

属性

详细描述

AbstractRayCaster 是将射线投射到 3D 场景的抽象基类。AbstractRayCaster 不能直接实例化,而是通过其子类进行。QAbstractRayCaster 规定了所有射线投射器的常用属性,如运行模式和处理层,同时将实际的射线投射细节留给子类。

射线投射与拾取(使用 ObjectPicker)不同,因为它不需要鼠标事件来触发。

默认情况下,AbstractRayCaster 的实例被禁用。启用时,将测试每帧中指定的射线是否与对象相交。即使没有找到对象,AbstractRayCaster.hits 属性也将更新射线投射的结果。

可以使用 Qt3D.Render::PickingSettings 来控制射线投射,例如检测哪些基本形状以及如何返回结果。

此外,可以使用 Qt3D.Render::Layer 组件来控制实体或实体子图的射线投射响应。

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

另请参阅Qt3D.Render::RayCasterQt3D.Render::ScreenRayCasterQt3D.Render::ObjectPickerQt3D.Render::PickingSettingsQt3D.Render::NoPicking

属性文档

filterMode : 枚举

包含指定要选择哪个实体进行射线投射测试的过滤模式。

默认值为 AbstractRayCaster.AcceptMatchingLayers

常量描述
AcceptAnyMatchingLayers接受引用一个或多个添加到本 AbstractRayCasterLayer 对象的实体。这是默认值
AcceptAllMatchingLayers接受引用添加到本 AbstractRayCaster 的所有 Layer 对象的实体
DiscardAnyMatchingLayers丢弃引用添加到本 AbstractRayCaster 的一个或多个 Layer 对象的实体
DiscardAllMatchingLayers丢弃引用添加到本 AbstractRayCaster 的所有 Layer 对象的实体

hits : 数组 [只读]

存储上一次射线投射测试的结果,以JavaScript对象数组形式存在。对象上的字段定义如下。

{
    type // enum value of RayCasterHit.HitType
    entity // entity that was intersected
    distance // distance from ray origin to intersection
    localIntersection.x: // coordinate of intersection in the entity's coordinate system
    localIntersection.y
    localIntersection.z
    worldIntersection.x // coordinate of intersection in the model's coordinate system
    worldIntersection.y
    worldIntersection.z
    primitiveIndex // index of the primitive (triangle, line, point) that was intersected;
                   // (undefined if the picking mode is set to bounding volume)
    vertex1Index // index of the first point of the triangle or line that was intersected
                 // (undefined if the picking mode is set to bounding volume or points)
    vertex2Index // index of the second point of the triangle or line that was intersected
                 // (undefined if the picking mode is set to bounding volume or points)
    vertex3Index // index of the second point of the triangle that was intersected
                 // (undefined if the picking mode is set to bounding volume, points or lines)
}

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


runMode : 枚举

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

常量描述
连续只要组件被启用,就会在每一帧执行射线投射。
一次性射线投射完成后,组件会禁用自己。这是默认设置。

© 2024 Qt公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可协议版本1.3的条款授予的。Qt以及相应的标志是芬兰以及/或其他国家Qt公司的商标。所有其他商标均为其各自所有者的财产。