我有一个带有天空盒的场景,我希望得到用户点击投射到天空盒上的点。
我正在使用HelixViewport3D.FindNearestPoint(Point pt)
获取该点,这非常有效,除非点击和天空盒之间有任何关系。在这种情况下,它返回投射到skybok前面的物体上的点。
有没有办法标记一个元素,以便在HitTests中忽略它?
答案 0 :(得分:1)
你可以在任何Visual3D或Geometry3D上找到点 为Visual3D对象命名。
ModelVisual3D modelVisual3D = new ModelVisual3D();
modelVisual3D.SetName("ModelName");
您可以将FindHits方法与HelixViewPort3D一起使用
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
}
}
}