2016-11-07 96 views
0

我有一個帶有天空盒的場景,我想獲得用戶點擊投影到天空盒上的點。HelixToolkit如何從HitTest中排除元素

我使用HelixViewport3D.FindNearestPoint(Point pt)來得到這個點,除非在點擊和天空盒之間有任何東西,否則它工作得很好。在這種情況下,它將返回投射到天空前面物體上的點。

有沒有什麼辦法來標記一個元素,所以它會在HitTests中被忽略?

回答

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 
     } 
    } 
}