我在Unity中有一个应用程序,它目前从包含点云的x,y和z坐标的文本文件中读取数万个点。可以想象,这需要花费大量时间。
我不熟悉Unity中的粒子系统,我正在寻找有关如何加快这一过程的建议。我曾尝试使用ParticleSystem对象,但似乎我无法将其与读取xyz坐标的文本文件联系起来。我还尝试将文本文件转换为.obj并将其作为模型导入Unity。尽管.obj模型出现在Blender和Meshlab中,但它并没有出现在Unity中,因为我认为它没有“网格”。
此外,积分必须“动画”。这意味着我有一个xyz坐标的文本文件被渲染。然后用不同的xyz坐标替换该文本文件,然后再次渲染,从而“动画化”点云。这使得渲染速度成为必要条件。我的解决方案最初是使用更新的.obj模型,但如上所述,这不起作用。
任何帮助表示赞赏。谢谢。
我建议将xyz文件转换为二进制文件。它会更快地阅读它。出于某种原因,Unity在阅读文本文件方面确实很慢。因此,我建议为此任务创建一个C#或C ++控制台应用程序。
然后你可以将这个二进制文件导入Unity并在Unity中创建网格,而不像完成here那样对它们进行三角测量,或者你可以像你说的那样使用粒子系统。
我做了类似的任务,但我修改了Free Point Cloud查看器工具,因为它允许你创建65535限制的网格,我有一个大约100万点的点云。我将它转换为二进制文件,需要3 4秒才能将其导入Unity,创建网格和所有内容。成千上万的积分根本不成问题。
导入点云后,您可以将点转换为新的导入位置和网格的RecalculateBounds
。然后你有你的动画。
请注意:在Unity中读取文本时,请尽量避免使用string.split
。据我所知,这是瓶颈。我建议创建不需要任何拆分操作的文件。