Kinect项目经验笔记

网上关于Kinect使用的文章不少,我也不是大神,还是写写关于Kinect项目开发的整体流程经验吧,也好让后来者少懵逼地看着框架和demo去把整个框架翻个遍,然后还像我一样因为项目进度慢被老大叼,说一句怼一句的那种叼。

 

1.理好思路,确定项目需要哪些功能,用到哪些框架脚本
    KinectManager  插件的主管理脚本,统筹管理数据和封装调用函数

    KinectInterop    感应器数据相关的脚本

    PortraitBackground  追踪摄像背景的脚本

    FacetrackingManager   面部追踪相关的脚本

    AvatarController    人物阿凡达控制脚本

    CubemanController  自己用基础物体堆砌的人形无阿凡达对象的控制脚本

    KinectGestures    手势的封装脚本,赋给场景对象后还要自己写监听脚本去监听,插件有示范

    InteractionManager   手部交互的封装脚本
 

2.获取并锁定玩家的Id,避免多人进入相机视野时分不清那个是当前玩家,因为遮挡时相机获取不到人背后的人的数据,所以有人在玩家前面走过的时候还是会出现玩家丢失和Id混乱,物理事件,避免不了

3.定义手势,根据理解,有三种写法。不过首先得做的是开个继承MonoBehavior和KinectGestures.GestureListenerInterface接口的GestureListener脚本。
第一种是:在框架的KinectGestures脚本的Gesture枚举里添加自己的手势,然后再在下面的CheckForGesture函数里添加case去定义,框架的KinectManager脚本会自动调用,只要在GestureListener脚本的GestureCompleted函数里定义好手势成功时触发的事件就行了。
第二种是:通过Kinect Studio和Gesture Builder去录制自己的手势,然后再接合进项目,具体参考文章:https://blog.csdn.net/nijiayy/article/details/68926979

第三种是:直接连手势都不定义,不用框架的手势系统,用KinectManager脚本的GetJointPosition获取骨骼点的位置,在Update函数里去判断,不过获取之前要用KinectManager的IsJointTracked函数去判断骨骼点是否识别再获取,免得骨骼点没识别又强制获取导致报错。

4.交互,根据策划去做画面,没什么好说的,相应的事件触发和调用通过GestureListener脚本的GestureCompleted函数、GestureListener的GestureInProgress函数又或者是Update函数去接合就行了。

 

补充:现在国内也开始有很多Kinect体感换装的需求了,可是Kinect原插件的匹配算法很粗糙,匹配不够精准,如果有能力优化匹配算法的大神可以修改算法的还好,不然接这种项目得慎重考虑客户的要求有多高。

 

你可能感兴趣的:(Kinect)