首页 文章

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

提问于
浏览
6

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

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

经过对该主题的长期研究,我想出了几种可能的(?)架构:

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

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

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

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

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

任何形式的帮助将不胜感激 .

此致,努诺

2 回答

  • 2

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

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

    Kinect Fusion

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

    祝好运!

  • 1

    对不起,我可能没有为Unity中的实时网格创建提供解决方案 - 但是这里的流程讨论对我来说很有意思回复 .

    在硬科学小说Memories with Maya中 - 讨论了这样一个场景:

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

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

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

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

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

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

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

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

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

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

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

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

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

    “啊!是 . ”

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


    您正在考虑在这个领域进行的工作,以及对活动网格的使用远远超出了事件的投影映射 - 当然!

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

相关问题