Heresy:在WIndows 上安装 Kinect(含 MMD 使用 Kinect 简易教学) [复制链接]

  来源: xbox360 kinect体感社区 KINECT知识分享/开发学习资料/KINECT API
       源文: http://kheresy.wordpress.com/2010/12/25/use_kinect_on_windows/

  
  以前介绍过微软的 Kinect这个新东西了~它的深度摄影机、以及他的衍伸应用,在最近也算是已经被发扬光大,应用非常多了。而这一篇呢,就来简单讲一下,要怎样才能把 Kinect 装到 PC 上,在 Windows 作业系统下使用吧~基本上, Kinect的讯号接头虽然是特殊的 XBox 360 AUX 接头,但是它实际上只是标准 USB 加上额外的电源而已;同时,在台湾买到的标准配件里,也有附上把 AUX 接头转为 USB + 电源的线,所以要把 Kinect 接到 PC 上,并不需要做任何硬件、线路上的修改。下方左图就是他的 AUX 接头,而下方右图就是官方附的转接线,可以把 AUX 接头转换成一个标准 USB 接头和一个电源插座。
  
      

      

      

  但是由於微软官方并没有提供给 Windows 用的驱动程序,所以直接接上去後,是没办法直接使用的。为了要让 Kinect 能让 Windows 上正常运作,就要有修改过、给 Kinect 用的驱动程序才行了~而这些驱动程序基本上都不是官方的,也不只一种;目前比较有名的,应该是 OpenKinect 的 libfreenect(网页)OpenNI(网页) 加上特制版的 SensorKinect(网页) 这样的架构。
  
  而 Heresy 这边是采用 OpenNI 这个架构来做的。使用这个架构的话,需要准备三样东西:
  
  1.OpenNI
  
  ■OpenNI 的基础 Framework。他基本上是一个跨平台的「自然互动」(Natural Interaction) 开放原始码架构(open source framework),提供了一组标准的 API 来针对不同的装置(目前应该也只有 Kinect)、中介软体来做操作。
  
  ■可以直接在 OpenNI 的官方网站下载。目前最新版本为 1.0.0.23(档名应该是「 OPENNI-Win32-1.0.0.23.exe」, 直接下载连结)。
  
  2.SensorKinect
  
  
  ■支持 OpenNI 的 Kinect 驱动程序,他是基於 PrimeSense 官方的版本、专门针对 Kinect 修改出来的;算是 OpenNI 的一部分,要先安装 OpenNI 後才可安装。
  
  ■可以在 SensorKinect的 github 页面下载( 直接下载连结),下载後只需要里面的「\bin\SensorKinect-Win32-5.0.0.exe」这个档案。
  
  3.NITE
  
  ■由 PrimeSense 提供的 OpenNI 的中介软体,负责分析 Kinect 抓到的资料,转换为人体骨架、手势等资料,如果只是想要读取 Kinect 的深度资讯和影像资讯的话,其实可以不用安装。
  
  ■可以在 PrimeSense的网页下载,最新版本为 1.3.0.17(档名应该是「 NITE-Win32-1.3.0.17.exe」,直接下载连结);安装时需要授权码,不过可以在 OpenNI 的网页找到一组免费的(0KOIk2JeIBYClPWVnMoRKn5cdY4=)。
  
  而当这些东西都准备好後,接下来就可以来安装了!不过这边要注意一下,这些软体目前都有比较新的 unstable 版,建议看完这篇文章後,再参考《 OpneNI + Kinect unstable 版安装更新(2011/01)》,下载新的 unstable 版来安装!
  
  不过,不要急着把 Kinect 连结到电脑上,因为在之前先安装软体,会比较方便。而安装的步骤,大致如下:
  
  1.安装 OpenNI
  
  ■只要执行 OpenNI 的安装档(OPENNI-Win32-1.0.0.23.exe),就可以完成安装了~
  
  ■预设安装位置会在「C:\Program Files\OpenNI」,里面包含了开发 OpenNI 程序所必须的档案、文件,也有一定数量的范例可以做测试。
  
  2.安装 SensorKinect
  
  ■刚刚下载的档案应该会是一个 ZIP 压缩档,解压缩後,可以找到「\bin\SensorKinect-Win32-5.0.0.exe」这个档案,点两下就可以进行安装了。
  
  ■预设的安装位置会是「C:\Program Files\Prime Sense\Sensor」,其中驱动程序就是在「\Driver」里。
  
  3.连接 Kinect 硬件
  
  ■这时候,可以把 Kinect 的 USB 线接到 PC 上了~
  
  ■Kinect 的硬件分为三个装置:Kinect Camera、Kinect Motor 和 XBox NUI Audio。其中 Kinect Camera 和 Kinect Motor 应该都可以直接找到驱动程序、并且自动完成安装;但是目前因为没有 XBox NUI Audio 的驱动程序,所以这样装置会无法正确安装,不过基本上不重要。
  
  ■下图为安装完成後,在装置管理员里看到的东西。

      
  
  ■如果没有自动找到驱动程序的话,请指定驱动程序路径到刚刚安装的 SensorKinect 的驱动程序所在路径,预设会是「C:\Program Files\Prime Sense\Sensor\Driver」。
  
  4.测试 Kinect 是否可以正常使用

  ■理论上,这个时候已经完成基本的安装,可以透过 OpenNI 来读取摄影机的资料了~而此时 Kinect 上应该会有一个黄色的灯号开始闪烁。
  
  ■要测试的话很简单,可以到 OpenNI 的安装路径下,找到「Samples\Bin\Release」这个资料夹(预设路径会是「C:\Program Files\OpenNI\Samples\Bin\Release」),里面有许多已经编译好的测试程序可以拿来做初步的测试。不过由於有些程序需要其他模组,所以可能无法正常运作,Heresy 建议在这边使用「NiViewer.exe」和「NiSimpleViewer.exe」这两只程序,来做初期的测试。
  
  ■理论上,执行 「NiViewer.exe」後,应该就会看到用黄色来表示的深度画面,以及彩色的摄影机画面了(如下图)~而如果有出现这样的画面,就代表 OpenNI 和 Kinect 基本上可以正常运作了。(NiViewer 则只会有深度画面,如图)

        
  
  ■另外要注意的是,OpenNI 程序的架构应该会呼叫一个 XnSensorServer 的程序,并且透过电脑内部的连线来取得装置的资料;所以如果有安装防火墙软体的话,可能要注意一下相关的设定,以避免因为连线被防火墙挡掉,而无法正常使用。
  
  5.安装 NITE
  
  ■在上面四个步骤都成功後,基本上已经可以使用 Kinect 和 OpenNI 的基本功能了。但是如果要能够透过 Kinect 分析场景、抓到人的骨架的话,则还需要额外安装 NITE 这个 Middleware。
  
  ■安装的话,只要执行他的安装档案(NITE-Win32-1.3.0.17.exe),并且输入 OpenNI 网页上提供的免费授权码(0KOIk2JeIBYClPWVnMoRKn5cdY4=)就可以了。
  
  ■另外要注意,由於 NITE 官方的范例是使用 320 x 240 的解析度,和 SensorKinect 预设的 640×480 不同,所以必须要修改设定档,让两者相同。修改方法是用 Sensor「\SampleXMLs\NITE\Data\」目录内的所有 XML 档案(三个),取代掉 NITE「\Data\」目录内的 XML 档。
  
  6.测试 NITE 是否可以正常使用
  
  ■此时 NITE 提供给 OpenNI 的各项功能应该都已经可以正常运作了~而要测试的话,可以执行 NITE 本身的范例(执行档位於 NITE 资料夹内的「\Samples\Bin\Release\」目录),或是 OpenNI 的范例程序。


  
  ■Heresy 个人是建议可以试试看 OpenNI 的 NiUserTracker.exe 这只程序(档案预设会在「C:\Program Files\OpenNI\Samples\Bin\Release\NiUserTracker.exe」),他的执行画面大致上会和下面的截图一样;他会用灰阶的画面来呈现深度资讯,同时会把画面里面有在动的物体抓出来,用不同的颜色来显示。


      
  
  ■另外,NITE 的范例 Sample-StickFigure.exe(预设档案位置:「C:\Program Files\Prime Sense\NITE\Samples\Bin\Release\Sample-StickFigure.exe」)也是值得跑来试试看的程序。

 
  这个范例程序是一个虚拟的 3D 场景,除了会去取出识别出来的区块(上图中不同的颜色就是不同的区块)外,针对他认为是人的物体,也会去找出他的人体骨架(下图橘色人形中的蓝线),并进行追踪。

      
  
  而在使用上要注意的是,要让 NITE 能抓到人的骨架,必须要先对着 Kinect 摆出 NITE 所定义的「校正姿势」、并维持一段时间;这个姿势基本上就是右图的样子(图片取自 NITE 文件)。理论上摆出这个姿势过一小段时间,NITE 就可以成功地找出骨架了;不过如果过了一段时间都还没有出现的话,建议可以试着先把手放下来、重新再摆这个姿势。

      
  
  OK,到这边为止如果都正确无误的话,基本上就是代表整个 Kinect + OpenNI 的环境都架设成功了!而接下来,理论上就可以透过 OpenNI 的提供的东西,来写自己要的程序了~
        --------------------------------------------------------------------------------
  
  接下来,来玩点比较有趣的吧!这边就以之前也有提到过的 Miku Miku Dance 来玩看看 Kinect 吧!
  
  Miku Miku Dance(简称 MMD, 英文官方网站维基百科介绍)这套软体是基於要制作 Vocaloid 的初音未来( 维基百科)的跳舞影片而发展出来的软体~而目前的最新版本,也已经可以支援使用 Kinect + OpenNI 来撷取、录制动作了!有兴趣的人,可以先参考官方的 YouTube 示范影片。
  
  要做到这件事,首先是要先按照上面的步骤,确定 Kinect 和 OpenNI 都可以正常运作。而接下来,则是到 官方网站下载「MikuMikuDance 7.24 (DirectX9 Ver.)」(直接下载连结)以及 DxOpenNI直接下载连结)。而在下载後,操作流程大致如下:
  
  1.将两者都解压缩。
  
  2.把 DxOpenNI 里的 DxOpenNI.dll 和 SamplesConfig.xml 这两个档案,放到 MikuMikuDance 的 Data 目录下。
  
  3.执行 MikuMikuDance.exe(Windows 7 的话,可能要按右键,选取「以系统管理者身分执行」),其主视窗画面如下:

        
  
  4.接下来,可以透过下方褐色的「model manipulation」区块里的「load」按钮(如图),开启位於「\UserFile\Model」目录下的模型档案。
  
  5.在读取模型之後,画面的显示区域就会显示出刚刚读取的模型的样子,以及他的关节了(如下图)。

        
  
  他预设会把模型的骨架、关节都显示出来,按下蓝色区块「bone manipulation」的「select」钮,可以取消选取,让这些骨架和关节消失。

  

  而其中,如果有读取多个模型的话,「model manipulation」区块的第一个下拉选单,也会有所有已经读取的模型,可以让使用者选择现在要针对哪麽模型做操作。
  
  6.而接下来,要使用 Kinect 来操作目前的脚色的话,请点选选单上「help」的「Kinect」;点下去後,MMD 会透过 DxOpenNI 来去呼叫 OpenNI、进一步读取 Kinect 的画面。这个可能要等一段时间,而等到抓到 Kinect 的画面後,在画面的右上方,就会出现不同颜色的区块,代表 OpenNI 抓到的东西了~而这个时候和之前测试 NITE 的 Sample-StickFigure.exe 时一样,请在 Kinect 能抓到整个人的情况下,摆出校正姿势(如上图),然後过一段时间,MMD 里的脚色就会和你的动作同步了~而接下来,就是随便动、随便跳了!

          
  7.MMD 是有提供头发和衣物等的物理模拟功能,不过预设是在拨放模式才会进行模拟。如果希望在使用 Kinect 操作时也有物理模拟的话,请选择选单「physical operation」里的「anytime」,让 MMD 在所有时间都会去计算物理效果。
  
  8.如果想要把动作记录下来的话,可以选择选单「help」的「capture」,这样就会把所有的活动过程都记录下来。而再点选一次,则就会停止纪录。而在撷取後要拨放的话,则是在画面右下角的灰色「play」区块,有一个「play」的按钮,按下去就会开始播放刚刚的动作了~而要输出结果的话,可以选则选单「file」的「render to AVI file」来做输出的动作。
  
  9.如果想看比较好的制作结果的话,可以透过选单的「file」-「open」,开启位於 MMD 下「User」目录里的范例档案(预设应该会有 sample.pmm 和 sample(AllStar)。pmm 两个),这是包含舞台、动作都编辑好的范例,按下「play」就可以看到别人做好的结果了~在 MMD 中使用 Kinect 的简易教学,大概就先讲到这里了。基本上,MMD 应该是目前对一般人来说,比较有趣、操作比较简单的 Kinect 互动程序了~也基於这个原因,Heresy 才拿它来做展示;但是实际上,Heresy 自己对於这个程序也是一整个不熟,所以这边的教学也仅只是纪录如何在 MMD 里使用 Kinect 而已。其他细部调整的部分,就请大家自己想办法找教学了。 ^^"而目前看来,要拿 Kinect 来做这类型的应用,可能还有几个问题要处理:
  
  1.OpenNI 目前能透过 NITE 抓到的人体骨架精细度有限。基本上,他能抓到就是单纯的人的四肢,但是对於四肢的方向(例如手心向上或向下,或是头面对的方向),就已经无能为力了,更别提手掌、手指的细部动作了。
  
  2.虽然 Kinect 能取得深度资讯,可以比纯粹使用 Webcam 抓到更好的人体骨架资讯,但是他同样有光学上的死角;例如当你的手在背後的时候,就没有办法抓到手的动作了。这个问题理论上可以透过多组不同视角的 Kinect 来解决,不过就是还要自行做这样的解决方案就是了。
  
  3.上面这两问题,或许有可能可以透过 OpenNI 的架构,写一个更进阶、计算复杂度更高的 middleware 来取代 NITE,但是这会是相当麻的一件事。
  
  4.MMD 目前没有处理碰撞的问题,所以目前取得的骨架资料,某些时候(比如说两手非常接近的时候)可能会让模型「打结」、甚至纠缠、交错在一起。
  
  简单来说,Heresy 个人会觉得,现阶段要用现成的东西、让 Kinect 变成便宜、穷人版的 motion captrue 设备不是不可行的,但是当然,後续的微调还是得要费上不少力;但是相对於完全没有 motion capture 来说,应该已经算是省掉许多工夫了~至少在大动作的部分,motion capture 是可以做到一定的水准,方便之後微调的;以 Heresy 非专业的眼光来看,这应该算是满有价值的了。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值