1

WPF 3D シーンに SphereMesh (Petzold.Media3D.dll の一部として MeshGeneratorBase から継承) があります。また、その球体には何千もの ScreenSpaceLines3D オブジェクトがあります。シーン内の SphereMesh 以外のすべてを無視して、マウス レイが球と交差する場所の XYZ 座標のみを見つけたいと考えています。球体とマウスの間に別のオブジェクト X があったとしても、オブジェクト X が存在しないかのように、マウスが球体のどこに当たるかを知りたいのです。

HitTest を使用して以下のコードを試してみましたが、シーン/ワールドに何千または何百万もの他のオブジェクトを追加すると、非常に遅くなります。オブジェクト障害の問題は、私が解決できない別の問題です。

おすすめは何ですか?

現在のコード:

Point mousePos = new Point(x, y);
PointHitTestParameters hitParams = new PointHitTestParameters(mousePos);
VisualTreeHelper.HitTest(
    viewPort,null,
    delegate(HitTestResult hr)
    {
        RayMeshGeometry3DHitTestResult rayHit = hr as RayMeshGeometry3DHitTestResult;
    if(rayHit != null)
    {
        // Mouse hits something
        Console.WriteLine("Point: " + rayHit.PointHit);
    }
    return HitTestResultBehavior.Continue;
}, hitParams);

何か助けはありますか?

ありがとう。

4

0 に答える 0