`
Xinaction
  • 浏览: 92059 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

OpenNI+Unity3D Kinect体感游戏开发(三)--- 从零开始驱动自己的人物模型

 
阅读更多

本文转载自:http://blog.csdn.net/coker/article/details/7281757

 

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

 

1. 安装Unity3.4

2. 下载v0.9.7.4的wrapper (解压得到的是一个文件:OpenNI_Unity_Toolkit-0.9.7.4.unitypackage)

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键,便可看到。

  • 这时如果运行游戏,看到的只是静止的战士,摄像头也不会亮

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中找答案。

 

本系列关于OpenNI的Unity wrapper就介绍到这里,近期不会再有更新。谢谢阅读。

分享到:
评论

相关推荐

    OpenNI_Unity_Toolkit-0.9.7.4.rar

    《OpenNI与Unity3D结合:开启Kinect体感游戏开发之旅》 OpenNI(Open Natural Interaction)是一个开源框架,旨在为开发人员提供一个统一的接口来与多种传感器交互,尤其是微软的Kinect设备。它提供了捕捉、处理和...

    Kinect v2 Unity 开发包

    《Kinect v2 Unity 开发包详解》 在数字化时代,体感技术为游戏和交互式应用带来了全新的体验。微软的Kinect设备,尤其是第二代(Kinect v2),凭借其高精度的骨骼追踪和深度感知能力,成为了开发者们的重要工具。...

    Unity3D脚本:Unity3D+Kinect OpenNI开发获取身高2

    Unity3D是一个流行的游戏引擎,Kinect OpenNI是一个开源的自然用户界面(NUI)开发工具包,两者结合可以实现许多有趣的应用场景,例如获取人的身高。下面将详细介绍如何使用Unity3D与Kinect OpenNI开发获取人的身高...

    Kinect 体感连线小游戏

    **Kinect 体感连线小游戏**是一款利用微软的Kinect传感器技术实现的人机交互游戏,旨在帮助用户通过手势识别进行游戏互动,为学习和理解Kinect体感技术提供了一个基础的入门实例。这款游戏展示了如何将Kinect传感器...

    kinect-mssdk-openni-bridge-v1.6.0.0-for-1.5.2.23.zip

    《Kinect MSSDK-OpenNI Bridge v1.6.0.0 for 1.5.2.23:实现深度感知与交互技术的融合》 在IT领域,尤其是在计算机视觉和人机交互方面,Kinect设备及其相关的开发工具包扮演着重要的角色。"kinect-mssdk-openni-...

    OpenNI_Unity_Toolkit-0.9.7.4.part1

    OpenNI_Unity_Toolkit-0.9.7.4.part1

    Kinect+OpenNI学习笔记

    Kinect+OpenNI学习笔记,系统的介绍了,如何在OpenNi下使用Kinect,对于基于Kinect的开发,很有帮助,能够帮助入门者学会如何使用Kinect,对于以后使用其他平台开发,也是大有裨益的。

    GestureDetect:使用 Kinect+OpenNI+Unity3D 进行手势检测

    它从 MS Kinect或类似的动作捕捉设备读取骨架数据。 为了获取骨架数据,我们使用OpenNI 1.5.4,因为它是一个开源库。 您可以将其更改为 OpenNI 2.x 或 MS Kinect SDK。 该程序的算法是一个简单的模板匹配算法。 它...

    使用OpenNI读取多个Kinect

    "使用OpenNI读取多个Kinect" OpenNI是一个开源的自然用户界面(NUI)软件开发工具包,提供了一个通用的框架来访问和处理自然用户界面设备的数据。Kinect是一种自然用户界面设备,由Microsoft公司开发,用于Xbox 360...

    openni+kinect 程序开发和标定部分

    可以实现多个kinect的标定问题,通过kinect采集点云,通过转换平移矩阵件点云信息实现重组。

    openni + sensor + nite (linux)

    标题中的"openni + sensor + nite (linux)"是指在Linux操作系统中,针对Kinect或Xtion传感器的一套软件开发工具包。OpenNI是开源自然交互接口(Open Natural Interaction),它提供了一个统一的编程接口,使得开发者...

    OpenNI_Unity_Toolkit-0.9.7.4.part5

    OpenNI_Unity_Toolkit-0.9.7.4.part5

    OpenNI_Unity_Toolkit-0.9.7.4.part3

    OpenNI_Unity_Toolkit-0.9.7.4.part3

    基于Kinect的openNI开发包

    **标题解析:** "基于Kinect的openNI开发包...综上所述,"基于Kinect的openNI开发包"是一个全面的开发工具,涵盖了从环境配置到应用开发的各个环节,对于希望利用Kinect进行创新开发的程序员来说,是一个宝贵的资源。

    openni+nite2

    《OpenNI + Nite2:构建3D感知与交互的基础》 OpenNI(Open Natural Interaction)和Nite2(Natural Interaction Tracking and Recognition Engine)是两个关键的开源框架,专为实现自然人机交互和3D感知而设计。...

    openni kinect开发

    OpenNI(Open Natural Interaction)是一种开源的开发框架,专门用于创建和实现计算机视觉技术,特别是与微软Kinect设备相关的体感交互应用。它为开发者提供了一个便捷的平台,使他们能够利用Kinect传感器进行3D图像...

    Kinect + openni+opencv 获取深度图

    本程序借助opencv与openni类库 实时提取kinect sensor探测到的数据,其中原始rgb彩色图像数据(24bit )接口已经标注明确.... 深度图与原始rgb彩色图像也已经标定完成,所以有兴趣做图像信息融合的朋友可以一试

    OpenNI_user_guide.rar_Openni_open_openni体感应用

    OpenNI的中文用户手册! OpenNI (Open Natural Interaction)是个多语言、跨平台的框架,定义了一组为开发使用Natural Interaction程序的API。OpenNI APIs有一组开发体感应用的接口。

    OpenNI-Linux-x64-2.3.zip

    OpenNI(Open Natural Interaction)是一个开源框架,专为自然人机交互设计,它为开发人员提供了与各种传感器交互的能力,包括3D深度摄像头,如奥比中光的产品。"OpenNI-Linux-x64-2.3.zip"是一个针对64位Linux系统...

Global site tag (gtag.js) - Google Analytics