내가 원하는 것은 사용자가 내 조이스틱의 빨간색 버튼을 클릭했는지 확인하는 것입니다. (목적을 위해 우리의 그림을 비공개로 유지하기 위해 실제 조이스틱 그래픽을 그립니다.) WPF에서 XAML 3D 객체를 테스트하는 방법
이 조이스틱은 XAML 3D입니다.
빨간색 단추는 x : 이름이 "Geo_Btn_CSS_TAKE"인 GeometryModel3D 개체입니다. 조이스틱을 클릭하면 HitTest를 할 수 있습니다. 그는 GeometryModel3D 객체를 모두 제공하지만 x : Name에 액세스 할 수 없으므로 마녀 하나가 좋은 객체라는 것을 알 수 없습니다.
그리고 이것은 내가 그러나 hitTest을하는 방법입니다
private void OnTouchMouseDown(EventArgs e)
{
Viewport3D viewport3D = WtoHitTest((Grid)Parent, e) as Viewport3D; // My own HitTest works well, I get my viewport3D
Point mouseposition = WtoHelper.GetPositionFromEvent(e, viewport3D); // Get the point if it's a mouse event or touch event
Point3D testpoint3D = new Point3D(mouseposition.X, mouseposition.Y, 0);
Vector3D testdirection = new Vector3D(mouseposition.X, mouseposition.Y, 10);
PointHitTestParameters pointparams = new PointHitTestParameters(mouseposition);
RayHitTestParameters rayparams = new RayHitTestParameters(testpoint3D, testdirection);
VisualTreeHelper.HitTest(viewport3D, null, HTResult, pointparams);
}
public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
{
RayHitTestResult rayResult = rawresult as RayHitTestResult;
if (rayResult != null)
{
RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult;
if (rayMeshResult != null)
{
GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D;
**// HERE I NEED TO KNOW WHAT IS MY GEOMETRYMODEL3D'S X:NAME**
// ANY IDEA???
}
}
return HitTestResultBehavior.Continue;
}
내가 알고있는 그 밖의 무엇 :
- 내 3D 오브젝트 내가 에 결합 할 수있는 위치 (x, y)가없는
- 나는 Viewport3D
- 나는 X에 액세스 할 수 없습니다 비 - 3D 요소를 삽입 할 수 없습니다 이름을 3D 개체
- 3D 개체 또는하지 FrameworkElement 또는 Visual의. 그들은 Media3D이다
나는 그것을했다, 나는 구현을 완료하기 위해 x : 이름을 알아야한다. 누군가가 팁이나 다른 방법을 가지고 있다면 알려줘.
당신에게편집 감사 :이 내 3D 객체의 속성입니다 : 이
'라이파람'은 어디에 사용됩니까? – AgentFire