0

我有一个带有天空盒的场景,我想将用户单击的点投影到天空盒上。

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

有什么方法可以标记一个元素,使其在 HitTests 中被忽略?

4

1 回答 1

2

您可以在任何 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
        }
    }
}
于 2016-12-21T17:09:05.283 回答