没用过unity3d
不过要控制鼠标的话,kinect的skeletal view程序里面会提供人的骨架 其中有左右手的深度信息,所以用这个就可以控制鼠标了。不过你要想精确控制,并且还识别手势什么的。。光靠这个肯定做不到。。。
使用 Azure Kinect 校准函数 | Microsoft Docs
使用校准函数可以转换 Azure Kinect 设备上每个传感器的坐标系之间的点。 需要转换整个图像的应用程序可以利用 转换函数 提供的加速 *** 作。
需要检索设备校准数据才能执行坐标系转换。 校准数据存储在 k4a_calibration_t 数据类型中。 该数据是通过 k4a_device_get_calibration() 函数从设备获取的。 校准数据不仅特定于每个设备,而且还特定于相机的工作模式。 因此, k4a_device_get_calibration() 需要使用 depth_mode 和 color_resolution 参数作为输入。
校准参数与 OpenCV 兼容。 有关各个相机校正参数的详细信息,另请参阅 OpenCV 文档 。 另请参阅 SDK 的 OpenCV 兼容性示例 ,其中演示了 k4a_calibration_t 类型与相应 OpenCV 数据结构之间的转换。
下图显示了 Azure Kinect 的不同坐标系,以及用于在这些坐标系之间转换的函数。 为了使插图显得简洁,我们省略了陀螺仪和加速度传感器的 3D 坐标系。
有关镜头失真的备注:2D 坐标始终引用 SDK 中失真的图像。 SDK 的 失真矫正示例 演示了图像失真矫正。 一般情况下,3D 点永远不会受到镜头失真的影响。
函数 k4a_calibration_3d_to_3d() 使用相机的外部校准将源坐标系的 3D 点转换为目标坐标系的 3D 点。 源和目标可设置为四个 3D 坐标系中的任何一个,即,彩色相机、深度相机、陀螺仪或加速度传感器。 如果源和目标相同,则返回未修改的输入 3D 点作为输出。
函数 k4a_calibration_3d_to_2d() 将源坐标系的 3D 点转换为目标相机的 2D 像素坐标。 此函数通常称为投影函数。 尽管源可以设置为四个 3D 坐标系中的任何一个,但目标必须是深度相机或彩色相机。 如果源和目标不同,则会使用 k4a_calibration_3d_to_3d() 将输入的 3D 点转换为目标相机的 3D 坐标系。 以目标相机坐标系表示 3D 点后,将使用目标相机的内部校准计算相应的 2D 像素坐标。 如果 3D 点超出了目标相机的可视区域,则有效值将设置为 0。
函数 k4a_calibration_2d_to_3d() 将源相机的 2D 像素坐标转换为目标相机坐标系的 3D 点。 源必须是彩色相机或深度相机。 目标可设置为四个 3D 坐标系中的任何一个。 除了 2D 像素坐标外,源相机图像中像素的深度值(以毫米为单位)也需要作为函数的输入,在彩色相机几何中推导出深度值的一种方法是使用函数 k4a_transformation_depth_image_to_color_camera() 。 该函数使用源相机的内部校准通过指定的像素坐标计算源相机焦点引出的 3D 射线。 然后,使用深度值查找此射线的确切 3D 点位置。 此 *** 作通常称为取消投影函数。 如果源和目标相机不同,该函数会通过 k4a_calibration_3d_to_3d() 将 3D 点转换为目标的坐标系。 如果 2D 像素坐标超出了源相机的可视区域,则有效值将设置为 0。
函数 k4a_calibration_2d_to_2d() 将源相机的 2D 像素坐标转换为目标相机的 2D 像素坐标。 源和目标必须设置为彩色相机或深度相机。 该函数需要将源相机图像中像素的深度值(以毫米为单位)作为输入,在彩色相机几何中推导出深度值的一种方法是使用函数 k4a_transformation_depth_image_to_color_camera() 。 它将调用 k4a_calibration_2d_to_3d() 转换为源相机系统的 3D 点。 然后,它将调用 k4a_calibration_3d_to_2d() 转换为目标相机图像的 2D 像素坐标。 如果 k4a_calibration_2d_to_3d() 或 k4a_calibration_3d_to_2d() 返回无效的结果,则有效值将设置为 0。
你可以使用以下文本来创建一个reg文件,再右击文件,导出这些设置:
Windows Registry Editor Version 500
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DriverFlighting\Partner]
“TargetRing”=”Drivers”
下一步,你需要使用设备管理器来使Kinect驱动程序和运行环境更新到预览版本:
>打开设备管理器(按下Windows键+X键,再按M键)
>打开“Kinect sensor devices”项目
>右击“WDF KinectSensor Interface 0”
>点击“更新驱动程序……”
>点击“自动搜索驱动更新程序”
>下载并安装最新的驱动程序
>重启
之后,设置好Windows Hello功能,你就能正常使用了。
不能说完全没有PC版的kinect体感游戏,但可能题主你会在近期内会失望,起码最近一两年不会有。
首先,微软现在开发的是kinect的SDK,不算严格意义上的驱动程序。微软的目的在于,让kinect在民间的智慧下发掘更多的利用空间,重点是开发游戏以外的用途,最终也是对微软最有利。
其次,kinect的官方支持平台还是XBOX360,起码微软没有打算把kinect上的“XBOX360”标志去掉。这样的话,各大游戏开发商,开发的游戏大作都只会在官方支持的平台上面运行,不会冒险去开发未得到官方支持的平台,如PC。
最后,微软推出了kinect,最终目的还是为了赚钱。如果让kinect的体感游戏独占在XBOX360上,微软赚的钱会多很多。因此,微软不会轻易将kinect的体感游戏移植到PC上。
不过,开放了SDK后,民间很多高手会开放好玩的小游戏。所以不一定没有PC版的体感游戏,只是及不上X360的体感游戏了。
1 如果一个非微软的Kinect驱动安装在你的Windows PC上,那么请卸载它,再安装
微软的Kinect驱动,否则可能Kinect不工作;
2 务必给Kinect连接外接电源—如果你想让Kinect全力工作的话;如果Kinect只依靠
通过USB端口提供的电源,那么它只能发挥最小限度的功能; 3 播放标准的音频和视频,不需要特定的软件;
4 如果你使用USB hub的话,那么Kinect将是接在USB hub上的唯一设备。如果你有
多个Kinect,请把它们连接到不同的USB Controllers。如果2台Kinect连接到了一个USB端口上,那么只有一个能正常工作; 5 Kinect内置了一个风扇来防止过热。风扇是由Kinect的固件控制的,一旦温度达到
90摄氏度,摄像头就会关闭。没有提供能控制风扇的API 6 合理的光照—不能太强也不能太弱,对于RGB摄像头是非常重要的。白炽光、荧光
灯和自然光照没有问题。切忌用强烈的光连续照射摄像头,这会“弄瞎”摄像头的。 7 深度传感器在普通和弱光下工作正常,只是在接近黑暗的光照下会增加信号中的噪声。
8 深度传感器是通过反射光来分析深度信息的。因此,强反射的(如镜子,打磨的金属)、强吸光的物体可能不会被识别的非常好。
加载完驱动后,现在开始设置你的开发环境。如果你使用的是Visual Studio,请阅读下面的开发环境设置知识来帮助你创建你的第一个C或C++应用程序。
首先,Natal这个名字是微软的一项技术代号,在E3上正式宣布。Natal是一个拉丁名称,事实上是巴西东北部的一个城市,在拉丁语中意味“初生”(To be born)。 Natal技术是微软公司基于高端研究得出来的一个产品。根据《大众科学》的说法,微软在依靠人工智能解决复杂问题的过程中,产生了一个副产品,这就是Natal的来历。 说到Natal的工作原理,摄像头起到了很大的作用,它负责捕捉人肢 Kinect
体的动作,然后微软的工程师就可以设计程序教它如何去识别、记忆、分析处理这些动作。因此从技术上来说,Natal比Wii的体感高级很多。 Natal不只是一个摄像头。虽然它一秒可以捕捉30次,但是这只是整个系统的一部分。除此之外,还有一个传感器负责探测力度和深度、四个麦克风负责采集声音。 Natal也不只是一个控制器。虽然微软公司的宣传标语说:“你的身体就是控制器”。但是Natal要比那复杂,他会将你所处的房间形成一个3D影像,然后分析你身体的运动,因此整个系统是着眼于你所处的全部游戏环境,并形成一个综合的控制系统。 Natal更不是一台新的XBOX360。微软表示XBOX360的周期应该在10年左右。而Natal就是延长XBOX360生命周期的重要手段。也就是说,不管你手中的XBOX360是什么时候买的,是哪个版本,Natal都可以与之兼容。
Natal中有一个功能强大的感觉阵列,对于新手来说,它拥有一个数字视频摄像头。能从事捕捉到识别颜色等多项工作。而Natal中的麦克风则可以在短时间内采集多次声音数据,以便把玩家和同处在一间房间中的其它人分开。 当然这些智能离不开软件的支持,而这方面是微软的强项。特制的软件已经把Natal训练得能成功识别人的脸部细节变化。而在识别人体动作的时候,精度可以达到4厘米。 09年微软收购了以色列公司3DV,让人们以为Natal的技术是源自3DV的ToF(time of flight)摄像头。3DV的感光芯片由于要测量光飞行时间,所以需要做到飞秒级的快门。据说他们在芯片中用到砷化镓,使其时钟频率提高到上百G。但这样做会使其成本升高,很难想象微软能把这样的技术做进游戏机这样的消费电子品里面。2010年1月,微软的开发人员明确表示:Natal并不是基于ToF的原理。2010年4月,另一家以色列公司(以色列人还真厉害)PrimeSense才确认为微软提供了其三维测量技术,并应用于Project Natal。 在PrimeSense公司的主页上提到其使用的是一种光编码(light coding)技术。不同于传统的ToF或者结构光测量技术,light coding使用的是连续的照明(而非脉冲),也不需要特制的感光芯片,而只需要普通的CMOS感光芯片,这让方案的成本大大降低。 Light coding,顾名思义就是用光源照明给需要测量的空间编上码,说到底还是结构光技术。但与传统的结构光方法不同的是,他的光源打出去的并不是一副周期性变化的二维的图像编码,而是一个具有三维纵深的“体编码”。这种光源叫做激光散斑(laser speckle),是当激光照射到粗糙物体或穿透毛玻璃后形成的随机衍射斑点。 这些散斑具有高度的随机性,而且会随着距离的不同变换图案。也 Kinect
就是说空间中任意两处的散斑图案都是不同的。只要在空间中打上这样的结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置了。当然,在这之前要把整个空间的散斑图案都记录下来,所以要先做一次光源的标定。在PrimeSense的专利上,标定的方法是这样的:每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下来。假设Natal规定的用户活动空间是距离电视机1米到4米的范围,每隔10cm取一个参考平面,那么标定下来我们就已经保存了30幅散斑图像。需要进行测量的时候,拍摄一副待测场景的散斑图像,将这幅图像和我们保存下来的30幅参考图像依次做互相关运算,这样我们会得到30幅相关度图像,而空间中有物体存在的位置,在相关度图像上就会显示出峰值。把这些峰值一层层叠在一起,再经过一些插值,就会得到整个场景的三维形状了
每个人都能享受到Natal带来的乐趣。从4、5岁的孩子到60岁的老人。小孩可以通过自己的蹦蹦跳跳玩一些体育健身的游戏,而年轻人可以通过自己灵活的动作来玩一些动作或者射击游戏。不要忘了,Milo(kinect宣传演示中的一个虚拟人物,一个小男孩儿)非常想和你交朋友,它的人工智能简直让人感觉在和一个真人在谈话
一般录制这类MR视频都需要用到绿幕,就像拍**那种绿幕,用来抠出人像方便制作特效,VR游戏录制MR视频也是这个原理,布景如下图:
不过对于一般个人玩家来讲,家里的环境很难允许放置一大坨绿布,别墅大佬除外 这就有了本文的主题,利用景深相机搭配Liv的相关软件来虚拟绿幕实现抠像最后混合VR画面实现MR视频。进入正题之前感谢D总的视频,感谢钦总(暗潮污水)给予的帮助,感谢Liv提供了这么优秀的软件,感谢Liv DiscordNo-green-screen频道玩家ragesaq提供的整套流程说明,后期Liv会提供整合好的无绿幕版专用软件会省掉不少工作,到时再提供方法。下面开始本次教程!
准备工作
一台kinect20以及适配器套件kinect20
可以是xbox one的,也可以是windows专用版,无所谓,不推荐kinect10也就是360带的那个,18年前的东西了性能不行。10和20比较,未来Liv提供的整合版会支持更多的景深摄像头,下图是适配器,记得别买成XBOX的电源适配器了。如果本身有X1,那可以直接把kinect拿出来用,只要再配个适配器,奶东大概350块左右可以买到,如果买kinect20 for windows全套某宝大概1300多可以买到。
高性能主机
因为过程中需要3款软件配合虚拟摄像并输出,对CPU压力非常大,楼主的i5 4570明显垮了,开启MR画面捕捉后CPU已经90%占用,玩游戏都很卡了,更别说再录制视频,所以一个高性能超线程CPU是必须的,推荐i7 4790起。至于显卡大家玩VR的想必都不差就不再多说了。
相关软件
连接与安装
把Kinect2按照适配器的说明书连接好PC,注意适配器需要机箱背面的USB30接口,前置的USB可能会导致画面捕获不稳定
安装OBS,然后再安装虚拟摄像头插件,都默认即可,安装完可以在工具菜单看到虚拟摄像头插件
解压Kinect2GreenScreenzip,CoordinateMappingBasics-WPFexe是我们制造绿幕的主程序
Steam安装liv和vivr,安装完Liv点右键属性,在测试里面选择公共测试版本,这对录制Beat Saver有帮助,对应的Beat Saver也选择beta版本
运行程序(重点来了)
首先把kinect2放在一个适合录制的位置和角度,要在vr定位器能够捕捉到的地方,打开KinectV2GreenScreen主程序,如kinect2连接没有问题,左下角能够看到Running,在摄像头面前晃悠下能够捕捉到你的人像并成功去背景。
运行OBS,左边如果没有场景就新建一个并改名成容易识别的名字,比如green。然后在来源里面点击+,选择窗口捕获。
在窗口中选择KinectV2GreenScreen的主程序。
添加好来源对捕获到的KinectV2GreenScreen窗口点右键,选择变换→编辑变换,在裁剪里面我们可以上下左右进行裁剪,把没用的白边去掉。
裁剪掉白边拉大窗口,应该差不多正好覆盖1920x1080的背景,不够就拉大一点。
接着新建一个场景,我这里命名为camera,来源选择视频捕获设备,设备里面选择kinect V2。
顶部工具条点开工具→VirtualCam,勾选自动开始,水平翻转(kinect默认捕获的画面是反的),然后点start,这就打开了虚拟摄像头,crop裁剪可以禁用。
以上就是关于unity3d+kinect怎么用手去控制鼠标全部的内容,包括:unity3d+kinect怎么用手去控制鼠标、使用 Azure Kinect 校准函数、如何使用Kinect和Windows Hello登陆Windows 10系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)