HelixToolkit如何从HitTest排除元素

本文关键字:排除 元素 HitTest HelixToolkit | 更新日期: 2023-09-27 18:16:46

我有一个场景与天空盒,我想得到点的用户点击投影到天空盒。

我使用HelixViewport3D.FindNearestPoint(Point pt)来获得点,它工作得很好,除非在点击和天空盒之间有任何东西。在这种情况下,它返回投影到天空书前面的物体上的点。

是否有任何方法标记一个元素,使其在HitTests中被忽略?

HelixToolkit如何从HitTest排除元素

您可以在任何Visual3D或Geometry3D上捕获点给你的Visual3D对象命名

ModelVisual3D modelVisual3D = new ModelVisual3D();
modelVisual3D.SetName("ModelName");

你可以在HelixViewPort3D中使用FindHits方法

Point3D point3D;
var hitList = yourHelixViewPort.ViewPort.FindHits(Point point);
foreach (var hit in hitList)
{
    if (hit.Visual != null) 
    {
        if (hit.Visual.GetName() == "ModelName")
        {
            point3D = hit.Position;
            // You can use also hit.Mesh
            // also hit.Model
            // also hit.Visual
            // also hit.Normal
        }
    }
}