使用Kinect在Unity中生成实时3D(网格)模型

时间:2014-01-10 17:53:49

标签: unity3d kinect mesh

我目前正在开发一个应用程序,其初始目标是实时获取Kinect设备“看到”的环境的3D模型。此信息稍后将用于投影映射,但暂时不是问题。

要克服一些挑战,即Kinect将安装在移动平台(机器人)上,并且模型生成必须是实时的(或接近它)。

经过长时间的研究,我想出了几种可能的(?)架构:

1)使用从Kinect获得的深度数据,将其转换为点云(使用PCL执行此步骤),然后将其转换为网格,然后将其导出到Unity中以进行进一步的工作。

2)使用从Kinect获得的深度数据,将其转换为点云(使用PCL执行此步骤),将其导出到Unity中,然后将其转换为网格。

3)使用已经选择创建Mesh模型的KinectFusion,并(以某种方式)自动加载创建到Unity中的Mesh模型。

4)使用OpenNI + ZDK(+包装器)获取深度图并使用Unity生成网格。

老实说,我有点迷失在这里,我的主要问题是实时要求以及被迫集成多个软件组件使这成为一个棘手的问题。我不知道这些解决方案中是否存在哪些解决方案是可行的,而且关于这些问题的信息/教程并不完全丰富,例如,对于Skeleton跟踪而言。

非常感谢任何形式的帮助。

此致 努诺

2 个答案:

答案 0 :(得分:2)

很抱歉,我可能不会在Unity中提供实时网格创建的解决方案 - 但是这里的流程讨论非常有趣,我可以回复。

在硬脑科学小说“与玛雅的回忆”中 - 讨论了这样一个场景:

“”采取点,“他说。”所以...... Satish向我展示了Quad [Quad = Drone]获取实时深度和纹理贴图的演示。“

“没什么新鲜的,”我说。 “是的,但看看我们上方。” 我抬起头来。 Quad的粗糙形状进入了视野。

“Quad就在这里,但你看不到它,因为FishEye [Fisheye = Kinect 2]就在它的前方。”

“所以它将视频纹理映射到实时几何体上?很酷,“我说。

“是的,突破是我可以冻结一个框架......冻结现实生活,走出现场并研究它。”

“你所做的只是用交叉偏光镜阻挡现场?”

“是的,”他说。 “AYREE能够使用这些数据集是一件大事。”

“决议有所改善,”我说。

“很好的观察,”他说。 “范围感应也是如此。镜头光学系统也已升级。“

“我注意到,如果我转过身,我看不到现场直播,只看到空荡荡的街道,”我说。

“是的,当然,”他回答道。 “Quad正面临另一条道路。这就是我站在你面前的原因。然而,整条街是一个3D模型,通过从高塔顶部拍摄的标准激光扫描完成。“ 克里希指着街道尽头的一块积木。我再次回到实时3D视图。他走在我面前。

“这很酷。每个人看起来都很真实。“

“哈哈。你应该看到当你和Wizer在一起的时候有多酷,“他说。 “我在这里看着这些真实的人经过,只有他们自己的网格映射到他们身上。”

“啊!是“。

“是的,就像他们在他们身上涂上油漆一样。我想伸出手触摸,只是为了感受质感。“......


你正在考虑在这个领域做的工作,并且这种活动网格的使用远远超出了事件的投影映射 - 当然!

祝你在项目中做到最好,我会关注你的更新。 如果主题感兴趣,故事背后的一些科学内容可以在www.dirrogate.com上。 亲切的问候。

答案 1 :(得分:1)

我会使用Kinect Fusion,因为它有一个能够导出到.obj的样本,统一支持。您可以自动保存它,并将其导入到Unity以自动生成网格。特别是如果你有多个Kinects,那么微软甚至会有一个样本来展示带有多个Kinect的Kinect Fusion的基础知识。此外,由于Fusion已经预先编写,因此您无需编写太多代码。

以下是Fusion与一台摄像机的网格示例:

Kinect Fusion

我确实希望你注意到它有多少个顶点......这可能会在以后导致性能问题。

祝你好运!