HelixToolkit 如何从 HitTest 中排除元素
HelixToolkit how to exclude elements from HitTest
我有一个带有天空盒的场景,我想将用户点击的点投影到天空盒上。
我正在使用 HelixViewport3D.FindNearestPoint(Point pt)
来获取点,效果很好,除非在点击和天空盒之间有任何东西。在这种情况下,它 returns 点投射到天空羚前面的物体上。
有没有什么方法可以标记一个元素以便在 HitTests 中忽略它?
您可以在任何 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
}
}
}
我有一个带有天空盒的场景,我想将用户点击的点投影到天空盒上。
我正在使用 HelixViewport3D.FindNearestPoint(Point pt)
来获取点,效果很好,除非在点击和天空盒之间有任何东西。在这种情况下,它 returns 点投射到天空羚前面的物体上。
有没有什么方法可以标记一个元素以便在 HitTests 中忽略它?
您可以在任何 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
}
}
}