InkCanvas
私のアプリケーションでは、オブジェクトの上に透明がありViewport3D
ます。はViewport3D
、大きな 3D メッシュを示しています。ユーザーは でスケッチして、がレンダリングInkCanvas
している 3D モデルの一部を選択します。Viewport3D
ユーザーは に円を描くことができますInkCanvas
。
ユーザーがスケッチすると、描画された円の内側にあるすべての点を繰り返し処理し、VisualTreeHelper.HitTest
関数を使用してレイキャスティングを実行し、メッシュのどの頂点がViewport3D
スケッチと一致するかを判断します。
問題は、VisualTreeHelper.HitTest
非常に遅いことです。を使用した場合Parallel.For
でも、Viewport3D で複数のレイキャスティングを並行して実行することはできません (オブジェクトの所有スレッドがViewport3D
UI スレッドであり、オブジェクトを無効にするViewport3D
のDispatcher.Invoke
関数を使用する必要があるため)。Parallel.For
そもそもの目的です。)
複数のスレッドを使用してこれを高速化する方法はありますか? さらに良いことに、代替ソリューションはありますか?