Kinect v1 与处理到 .obj 统一

Kinect v1 with Processing to .obj to unity

我想创建一个通过 kinect 导出到 hololense 的全息图。但是速度很慢。

我使用 this tutorial to collect point cloud data, and this 库将我的数据导出为 .obj 格式的 3D 对象。导出 obj 的库不接受点,所以我不得不画小三角形。我将文件 .obj .png 和 .mtl 保存在本地 xampp.

接下来,我使用统一脚本和 WWW 对象下载文件。我还使用 unity 资产商店中的 Runtime OBJ Importer 在运行时创建 3D 对象。

最后一部分是在 hololense 上导出 unity 应用程序。 (接下来我会做)

但在那之前, 该过程正在运行,但速度非常慢。我希望全息图是流动的。浪费了很多时间:

我想到了流式传输,但 unity 是否需要完整的 obj 文件来呈现?如果我将 .png 压缩为 .jpg 会节省一些时间吗?

你有什么建议可以帮助我吗?

目前您的问题的表述方式令人困惑:不清楚您是想记录点云以便稍后在 Unity 中加载和渲染,还是想以某种方式近乎实时地流式传输具有对齐的 RGB 纹理的点云统一。

您的初始尝试正在使用处理。

在记录数据方面,我推荐使用SimpleOpenNI library which can record both depth and RGB data to an .oni file (see the RecorderPlay example)。

录制完成后,您可以遍历每一帧并将每一帧的顶点存储到一个文件中。

就保存为 .obj 而言,您需要将点云转换为网格(在 3D 中对顶点进行三角剖分)。

另一种选择是将点云存储为类似 .ply 的格式。 您可以在 this answer

中的 Processing 中找到有关写入 .ply 文件的更多信息

就数据流而言,这会很复杂:

  • 如果您流式传输所有顶点,那么数据量很大:最多 921600 个浮点数 ((640 x 480 = 307200) * 3)
  • 如果您流式传输深度(11 位 640x480)和 RGB(8 位 640x480)图像,那将是更多数据。 一种选择可能是仅发送具有深度和整体跳跃点的顶点(例如,每第 3 个点发送一次)。在发送数据方面,您可以尝试 OSC

在 Unity 中获得积分后,您应该能够 render a point cloud in Unity

就网络性能而言,理想的是用于深度数据的编解码器 (compressor/decompressor)。到目前为止,我还没有使用过,但快速浏览了一下,我发现有 this one(非常新)之类的选项。 您需要做一些研究,看看那里已经有哪些 kinect v1 深度流媒体库,测试并查看最适合您的场景的库。 理想情况下,如果该库是用 C# 编写的,您就有机会使用它来解码在 Unity 中接收到的数据。