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

问题描述 投票:-1回答:1

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

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

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

任何帮助表示赞赏。谢谢。

unity3d graphics 3d point-clouds
1个回答
-1
投票

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

然后你可以将这个二进制文件导入Unity并在Unity中创建网格,而不像完成here那样对它们进行三角测量,或者你可以像你说的那样使用粒子系统。

我做了类似的任务,但我修改了Free Point Cloud查看器工具,因为它允许你创建65535限制的网格,我有一个大约100万点的点云。我将它转换为二进制文件,需要3 4秒才能将其导入Unity,创建网格和所有内容。成千上万的积分根本不成问题。

导入点云后,您可以将点转换为新的导入位置和网格的RecalculateBounds。然后你有你的动画。

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

© www.soinside.com 2019 - 2024. All rights reserved.