Kinect v1 with Processing to .obj to unity



我想创建一个全息影像,通过 kinect 导出到全息影像。但它非常慢。

我使用本教程收集点云数据,使用此库将数据导出为 .obj 格式的 3D 对象。导出 obj 的库不接受点,所以我不得不画小三角形。我将文件.obj .png和.mtl保存在我的本地xampp上。

接下来,我使用 Unity 脚本和 WWW 对象下载文件。我还使用 Unity 资源商店中的运行时 OBJ 导入器在运行时创建 3D 对象。

最后一部分是在全息上导出 unity 应用程序。(我接下来会这样做(。

但在此之前, 该过程正在工作,但非常缓慢。我希望全息影像是流畅的。浪费了很多时间:

  • 获取 Kinect 的深度和 RGB 数据
  • 将数据导出到 obj PNG 和 MTL 文件
  • 尽可能频繁地在 Unity 上下载文件
  • 渲染文件

我想到了流式处理,但 Unity 需要一个完整的 obj 文件来渲染吗?如果我将.png压缩到.jpg会获得一些时间吗?

你有一些指示可以帮助我吗?

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

您初次尝试使用的是处理。

在记录数据方面,我建议使用SimpleOpenNI库,它可以将深度和RGB数据记录到.oni文件中(请参阅RecorderPlay示例(。

录制后,您可以循环遍历每个帧,并为每个帧将顶点存储到文件中。

在保存到.obj方面,您需要将点云转换为网格(在3D中对顶点进行三角测量(。

另一种选择是将点云存储为.ply等格式。 您可以在此答案的处理中找到有关写入 .ply 文件的更多信息

在流式传输数据方面,这将很复杂:

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

在 Unity 中获得点后,您应该能够在 Unity 中渲染点云

就网络性能而言,理想的是深度数据的编解码器(压缩器/解压缩器(。到目前为止,我还没有使用过一个,但是快速操作我看到有这样的选项(非常日期(。 你需要做一些研究,看看已经有哪些 kinect v1 深度流式处理库,测试并看看什么最适合你的方案。 理想情况下,如果库是用 C# 编写的,则有机会使用它来解码 Unity 中接收到的内容。

最新更新