抽象射线投射 QML 类型
3D 场景中射线投射的抽象基类。 更多...
导入语句 | import Qt3D.Render 2.7 |
实例化 | QAbstractRayCaster |
属性
- filterMode : 枚举
- hits : 数组
- runMode : 枚举
详细描述
AbstractRayCaster 是将射线投射到 3D 场景的抽象基类。AbstractRayCaster 不能直接实例化,而是通过其子类进行。QAbstractRayCaster 规定了所有射线投射器的常用属性,如运行模式和处理层,同时将实际的射线投射细节留给子类。
射线投射与拾取(使用 ObjectPicker)不同,因为它不需要鼠标事件来触发。
默认情况下,AbstractRayCaster 的实例被禁用。启用时,将测试每帧中指定的射线是否与对象相交。即使没有找到对象,AbstractRayCaster.hits 属性也将更新射线投射的结果。
可以使用 Qt3D.Render::PickingSettings 来控制射线投射,例如检测哪些基本形状以及如何返回结果。
此外,可以使用 Qt3D.Render::Layer 组件来控制实体或实体子图的射线投射响应。
注意:从 AbstractRayCaster 派生的组件不应在多个实体间共享。
另请参阅Qt3D.Render::RayCaster、Qt3D.Render::ScreenRayCaster、Qt3D.Render::ObjectPicker、Qt3D.Render::PickingSettings 和 Qt3D.Render::NoPicking。
属性文档
filterMode : 枚举 |
包含指定要选择哪个实体进行射线投射测试的过滤模式。
默认值为 AbstractRayCaster.AcceptMatchingLayers
。
常量 | 描述 |
---|---|
AcceptAnyMatchingLayers | 接受引用一个或多个添加到本 AbstractRayCaster 的 Layer 对象的实体。这是默认值 |
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公司的商标。所有其他商标均为其各自所有者的财产。