快速阅读XYZ点云并将动画点渲染到Unity中

时间:2019-03-10 20:17:27

标签: unity3d graphics 3d point-clouds

我在Unity中有一个应用程序,当前该应用程序从包含x,y和z坐标的文本文件中读取数以万计的点。可以想象,这需要大量时间。

我不熟悉Unity中的粒子系统,并且正在寻找有关如何加快该过程的建议。我试图使用ParticleSystem对象,但似乎无法将其与读取xyz坐标的文本文件联系在一起。我还尝试将文本文件转换为.obj并将其作为模型导入Unity。尽管.obj模型出现在Blender和Meshlab中,但由于我认为它缺少“网格”,因此它没有出现在Unity中。

此外,必须对这些点进行“动画处理”。这意味着我有一个渲染的xyz坐标的文本文件。然后将该文本文件替换为不同的xyz坐标,然后再次进行渲染,从而“动画化”点云。这使得渲染速度成为基本要求。我对此的解决方案最初是使用.obj模型进行更新,但是如上所述,这是行不通的。

感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

我建议将xyz文件转换为二进制文件。它将使读取速度更快。由于某种原因,Unity在读取文本文件方面确实很慢。因此,我建议为此任务创建一个C#或C ++控制台应用程序。

然后,您可以将此二进制文件导入Unity并在Unity中创建网格,而无需像完成here那样对它们进行三角剖分,也可以按照您所说的使用粒子系统。

我做了类似的任务,但是我修改了自由点云查看器工具,因为它允许您创建最大65535的网格,并且我拥有大约100万个点的点云。我将其转换为二进制文件,并花费3 4秒的时间将其导入到Unity中,并创建了网格物体和所有内容。数以万计的点根本不会成为问题。

导入点云后,您可以将点平移到新导入的位置和RecalculateBounds的网格中。然后就可以制作动画了。

请注意::在Unity中阅读文字时,请尽量避免使用string.split。据我观察,这是瓶颈。我建议创建不需要任何拆分操作的文件。