Kinect+Unity3D 体感游戏开发 — 采用PrimeSense的开源封装

本篇基于最新的wrapper v0.9.7.4(该版本已经不需要做校准姿势)介绍怎么从零开始把自己的人物模型驱动起来,目的是给读者一个能运行的示例,在这过程中不会对概念做过多的解释,详细请参照wrapper的帮助文档。

系统需求:

硬件:华硕的Xtion Pro或者微软的Kinect for Windows

软件:OpenNI(如果硬件选择的是Kinect for Windows,则驱动必须按照SensorKinect,而不是PrimeSense的)

 

1. 安装Unity3.5

2. 到OpenNI官网下载v0.9.7.4的wrapper

3. 打开Unity创建一个空的工程

4. 导入OpenNI_Unity_Toolkit-0.9.7.4.unitypackage

  • 按默认的,导入全部文件
  • 导入后看到如下图所示文件结构

5. 导入你自己的人物模型,这里以asset store上的战士模型为例

  • 进入asset store(Unity里Ctril+9),当然前提是你注册了账户(免费)
  • Asset Store页面的Categories里选择3D Models–>Characters–>Humanoids–>Humans,然后在左侧的列表里选择Soldier Character Pack(免费的)
  • 导入Soldier Character Pack
  • 导入后看到多了如下文件

6. 加入人物模型

  • 将上图文件目录里的soldier直接拖到Hierarchy窗口
  • 这时在scene窗口看不到战士模型,先在Hierarchy窗口选中soldier,然后将鼠标移到Scene窗口,按F键,便可看到。
  • 这时如果运行游戏,看到的只是静止的战士,摄像头也不会亮(注: Unity3.5运行时会出现2个函数obsolete的错误,直接将这2个函数注释掉即可)

7. 驱动3D摄像头(Kinect或ASUS Xtion Pro,看你用的是什么设备)

  • 将Project窗口的OpenNI–>OpenNISettings(如下左图)拖动到Hierarchy窗口(如下右图)
  •   
  • 这时运行游戏,你会看到3D摄像头亮了,说明设备已经驱动起来了(当然,这一步你必须先插好3D摄像头)
  • 为了对设备运行状态有个更直观的认识,这里加入一些辅助的东西
    • 将Project窗口的NIIDepthViewer和NIRadarViewer拖到Hierarchy窗口
    •  
    • 运行游戏,会看到窗口的左上角和右上角分别多了一个小窗
    •   
    • 左边的是NIRadarViewer,显示的是当前是否有人进入摄像头的视野并被识别出来;右边的是NIDepthViewer,显示的是摄像头看到的实际场景。这时如果你站在摄像头的视野范围内稍微动一下,就可以被识别出来,同时在Users Radar上面多了一个红色的小方格,方格里面显示数字1. 小方格显示红色表示用户仅仅是被识别出来了,但还没有开始骨架跟踪;而数字1表示当前用户的ID。当你走动的时候,红色方格也会相应地动。
    •  
    • 那怎样开始骨架跟踪呢?
      • 创建一个空的game object(Unity的菜单GameObject–>Create Empty),然后在Inspector窗口将其重命名为player manager。
      • 然后将脚本NIPlayerManagerCOMSelection拖到player manager
      • 在Inspector窗口将Max allowed players改成1
      • 这时运行游戏,当你站在摄像头的视野范围内稍微走动的时候,就可以看到Users Radar窗口的小方格是绿色的,这表明算法已经开始跟踪你的骨架了因为这个版本的wrapper封装了比较新的OpenNI,所以这里你不再需要做校准姿势就可以自动跟踪骨架

8. 一切准备工作做好了,现在可以开始驱动人物模型了

  • 在Hierarchy窗口选中soldier,将Project窗口的脚本NISkeletonController拖到Inspector
  • 拖动过去后会看到弹出一个提示,选continue。
  • 这时Inspector窗口是这样的
  • 现在开始骨架匹配
    • 在Inspector(如上图)的“Joints to control”里选择Head,然后点击最右边的小圆圈,在弹出的“Select Transform”对话框里选择“Head”
    • 选好后的情形如下
    • 这时点击,会在Hierarchy窗口看到其所在的位置
    • 这样战士模型的头就和OpenNI算法识别出来的玩家骨架的头匹配起来了,其它骨架的匹配方法类同,下面是全部匹配好的“Joints to control”截图,可对照其骨架的名字一一匹配。
    • 这里要说明的是,不同的人物模型对骨架各关节的命名可能不一样,怎么命名无所谓,关键是要找对关节。以这个战士模型为例,见下面两张图,第一张是Left Shoulder的位置,第二张是Left Arm的位置,很明显,我们必须选择的肩关节应该是Left Arm而不是Left Shoulder。
  • 骨架匹配好了,现在运行游戏,你会看到在初始状态战士的双手是举起来的
  • 这时如果你出现在摄像头的可见范围内,你会发现战士模型的手脚会跟着你的手脚在动,你转身,战士模型也会转身。这时,你的人物模型已经驱动起来了!
  • 此时你可能会发现一个问题:你走动的时候战士模型并没有跟着移动,请在soldier的Inspector窗口将Update Root Position?勾上,再运行游戏,这时战士模型就会跟着你走动了

9. 现在模型已经完全驱动起来了,为了好看,你可以加入灯光,同时把战士模型放大

建议初学者对本篇的每一步为什么能工作思考一下,然后从文档OpenNIPackageDocumentation中找答案。

 

http://www.kinectutorial.com/%E6%B8%B8%E6%88%8F/openniunity3d-%E4%BD%93%E6%84%9F%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91-%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E9%A9%B1%E5%8A%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E4%BA%BA%E7%89%A9%E6%A8%A1%E5%9E%8B/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值