在 Helix Tool Kit 中显示多个 Point 3D

Displaying multiple Point 3D s in Helix Tool Kit

我需要在 Helix View Port 中显示多个 3d 点。

private void DisplayPointCloud(double[] datapoints)
    {

                newTime = stopwatch.Elapsed;
                foreach (double Datapoint in datapoints)
                {

                    Point3D temp = new Point3D(Random(), Random(), Datapoint);

            Dispatcher.Invoke(() =>
                    {
                        DataList.Add(temp);
                    });
                        
                }
       
        oldTime = newTime;
    }

我在单独的线程中显示 Helix Viewport 中的数据。我需要在 UI 中显示多个数据点,而不是一一显示我现在正在做的事情。我需要这样做的主要原因是最大限度地减少 UI 线程中的延迟。

HelixToolkitgithub.

上有很好的示例

Regarind 点..您可以在您的视图中使用 PointsVisual3D 并将您的 Point3D 源集合绑定到 属性 点。

<h:HelixViewport3D x:Name="ViewPort3D" InfiniteSpin="True" ShowFrameRate="True">
            <h:DefaultLights />
            <h:PointsVisual3D Points="{Binding Points3DCollection}" Color="Red" Size="6" />
        </h:HelixViewport3D>

即使您决定从不同的非 UI 线程填充 Points3DCollection - 它也不会解决 UI 线程的问题。根本原因 - Helix 总是会在更改相机位置后重新绘制此集合。重绘在 UI 个线程中执行。

为了提高对表单上其余控件的响应 - 您可以尝试为 HelixViewPort3D 创建新线程(请参阅 Dwayne Need article),但这不会显着提高重绘 3D 场景的速度。