WEMRayIntersect¶
-
MLModule
¶ author MeVis Medical Solutions AG
package MeVisLab/Standard
dll MLWEMAcceleration
definition MLWEMAcceleration.def keywords BVH
,BoundingVolumeHierarchy
Purpose¶
The WEMRayIntersect
allows for the intersection of a ray with WEM triangle patches. It utilizes a bounding volume hierarchy (BVH) internally to ensure fast intersection. The information of the first hit point is provided as field values, while a list of all hit points is available as a marker list.
The precision of the ray intersection is limited to float precision, as the underlying Embree library does not support double precision.
Access to the BVH wrapper is also possible via the outBVH
field using:
bvh = ctx.field("outBVH").object()
result = bvh.rayIntersectClosest([30., 0., 0.], [-1., 0., 0.])
Another alternative is to avoid using the WEMRayIntersect
module entirely and instead create the BVH in Python:
wem = ctx.field("SomeWEMModule.outWEM").object()
bvh = MLAB.createMLBaseObject("WEMBoundingVolumeHierarchy", [wem])
result = bvh.rayIntersectClosest([30., 0., 0.], [-1., 0., 0.])
This allows for performing ray intersection directly from Python code.
For more details on scripting, have a look at the MLWEMBoundingVolumeHierarchyWrapper
.
Output Fields¶
outBVH¶
-
name:
outBVH
, type:
WEMBoundingVolumeHierarchy(MLBase)
¶ - For accessing this object via scripting see the Scripting Reference:
MLWEMBoundingVolumeHierarchyWrapper
.
Parameter Fields¶
Field Index¶
Cast Ray : Trigger |
Intersect Mode : Enum |
Direction : Vector3 |
Position : Vector3 |
Hit Bary Coord : Vector3 |
Ray Far : Float |
Hit Face Index : Integer |
Ray Near : Float |
Hit Face Normal : Vector3 |
Ready : Bool |
Hit Patch Index : Integer |
Update : Trigger |
Hit Position : Vector3 |
|
Hit Valid : Bool |
Visible Fields¶
Intersect Mode¶
-
name:
intersectMode
, type:
Enum
, default:
RemoveDuplicateHits
¶ Defines the intersection mode.
Values:
Title | Name | Description |
---|---|---|
All Hits | AllHits | This collects all hits; it can contain duplicate hits on neighboring triangle edges or nodes. |
Remove Duplicate Hits | RemoveDuplicateHits | This removes duplicate hits by checking whether the hits are close to each other within a certain epsilon and if they face the same direction relative to the ray direction. |
Ready¶
-
name:
ready
, type:
Bool
, persistent:
no
¶ Shows whether the module is ready for ray intersections.
Direction¶
-
name:
direction
, type:
Vector3
, default:
0 0 0
¶ Sets the start direction of the ray. This should be normalized.
Ray Near¶
-
name:
rayNear
, type:
Float
, default:
0
¶ Sets the near distance for the ray.
The intersection starts from
position + direction * rayNear
.
Ray Far¶
-
name:
rayFar
, type:
Float
, default:
3.4028235e+38
¶ Sets the far distance for the ray.
The intersection stops at
position + direction * rayFar
.
Hit Position¶
-
name:
hitPosition
, type:
Vector3
, persistent:
no
¶ Shows the hit position of the closest triangle.
Hit Face Normal¶
-
name:
hitFaceNormal
, type:
Vector3
, persistent:
no
¶ Shows the face normal of the hit triangle.
Hit Bary Coord¶
-
name:
hitBaryCoord
, type:
Vector3
, persistent:
no
¶ Shows the barycentric coordinate of the hit triangle.