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);
何か助けはありますか?
ありがとう。