【发布时间】:2013-04-26 23:07:47
【问题描述】:
我是堆栈溢出的新手,也是 3D 图形编程的新手。我的任务是创建一个将读取数据的应用程序(目前我正在从分隔的文本文件中读取,但最终将从数据数组中读取)并以图形方式显示 3D 数据。数据是从正在扫描日志的 3D 扫描仪读取的 x、y、z 坐标。我需要从 4 个不同的角度在屏幕上显示这些日志的 3D 表示。我正在将数据读入二维 Point3D 数组,然后使用它在 HelixViewport3D 中创建 3D 模型。我使用嵌套的 for 循环来检查数组中的数据点是否在特定的 x、Z 范围内——如果是,我需要从该数据中创建一个三角形。传递整个数组后,我将 Model3DGroup 添加到我的视口的子项中:
topModel.Content = topGroup;
this.mainViewport.Children.Add(topModel);
这需要大约 8 秒的时间,缩放、平移、旋转都非常缓慢,所有这些数据都显示在屏幕上(大约 500,000 个三角形)。有什么方法可以提高 WPF 3D 图形的性能?我实际上不需要能够在完成的应用程序中进行缩放/平移/旋转,但它有助于调试。最终的应用程序将只是从不同侧面以 4 种不同方式静态显示的相同模型。但是,我需要能够读取数据并在 1-5 秒内显示图形。非常感谢任何帮助,我希望我的问题很清楚!
编辑:在深入研究顶点缓冲之后,这就是我需要做的。我使用的积分太多了。如果有人能指出一些关于在 c# 中进行顶点/索引缓冲的文献,将不胜感激!
【问题讨论】:
-
如果您从预定角度显示静态模型,您不能预渲染模型并显示图像或视频吗?
-
是的,我可以预渲染数据,然后从中创建位图或其他东西,只要质量不会绝对糟糕。我不知道该怎么做,但谢谢你的好主意——我会考虑的。
标签: wpf optimization graphics 3d helix-3d-toolkit