在 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 线程中的延迟。
HelixToolkit 在 github.
上有很好的示例
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 场景的速度。
我需要在 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 线程中的延迟。
HelixToolkit 在 github.
上有很好的示例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 场景的速度。