前言
最近有新成员加入本团队,为了方便其开发HoloLens1 / HoloLens2,将不定时更新HoloLens相关开发相关内容。
软件需求:
HoloLens 1:VS2017 + Unity2017;HoloLens 2:VS2019 + Unity2019;
1.安装VS2017 / VS2019,HoloLens 1安装Win10 SDK 17134或者17763,HoloLens2要求至少18362;相关安装与配置请参考博文.
2.Unity2017 / Unity2019,安装UWP平台;
注:如果使用的软件为VS2019和Unity2019来开发HoloLens1,可参考HoloLens2的开发过程,修改MRTK的配置文件为HoloLens1即可!可参考博文1,博文2.
Hololens 2自带手势识别的功能,且其识别精度、帧率相比HoloLens 1结合Leap Motion综合开发的方案效果更好,因此考虑调用HoloLens 2的传感器,直接获取并渲染手部位置,实现Leap Motion的追踪以及显示效果。
一、如何获取并渲染手部位置
HoloLens 2获取手部位置后分为面片模型显示/关节点模型显示,与Leap Motion相同,可以通过相关配置直接获取到相应关节点的位姿,然后实例化小球作为关节点数据,进行渲染,如下图:
1.如何配置文件
参考优质博主@biangbiang面不面的博客.
2.关节获取方法
使用GameObject.Find查找左手“Left_HandLeft(Clone)”或者右手“Right_HandRight(Clone)”
再根据Index获取其子物体,即可得到关节点的位姿.
3.重点强调(防踩坑)
PC端和HoloLens端的手部关节数量是不一致的,PC端单手Joint数量为24.
因此使用遍历方式获取关节点数据时,应注意关节点的数量区别.
二、如何实现Leap Motion的效果
为了实现Leap Motion的手部识别效果,还需要在关节点之间添加连接关节,因此就需要知道每个Index具体指的关节是哪一个.
Tips: 判断方法可通过对各个手指上不同关节设定相应的颜色进行快速判断.
笔者下边直接放出结果,感兴趣的小伙伴可以自行验证.
1.PC端与HoloLens端不同
如题,PC端与HoloLens端关节点的Index也是不同的,以右手为例,如下为结果:
2.实现Leap Motion效果
为了实现和Leap Motion的效果,需要对关节点进行处理,PC端去掉4/9/14三个关节,HoloLens端去掉8/13两个关节,其他各关节进行连接,最终实现效果如图.
具体实现方法,感兴趣的小伙伴可以按照以上进行尝试,代码因为种种原因就不贴出来了.
总结
以上为调用HoloLens 2传感器直接获取并渲染手部位置,实现Leap Motion的显示效果,欢迎批评指正!
你在山的那边我就看最美的山,你在海的那边我就看最美的海 .HDarker