Unity Kinect开发之竖屏的追踪坐标转换(1080*1920)

news/2024/10/17 18:19:28/

        我们做Unity的Kinect开发,其实好多情况下要用到竖屏这样的模式,然后你就会发现,怎么切换个竖屏,里面的追踪坐标怎么就不准了呢,这里面主要就是牵扯到坐标转换的问题。

        我先是参考的这个示例来进行的测试,在 1920*1080的分辨率下追踪还是十分准确的。

         但当分辨率前换成竖屏(1080*1920)后就会发现,追踪虽然依旧准确,但画面被压缩的不成样子了,这样的画面那肯定是不行的。

        查了查资料你会发现,勾上“BackgroundImage”上的“PortraitBackground”脚本后画面就变成正常比例了,但手部得追踪位置Y轴上还是准的,但X轴上出现了明显的偏移。

        通过上面两张图其实不难看出,虽然转换成了竖屏,但手部的追踪还是根据1920*1080的分辨率来计算的,所以才会出现了Y轴追踪正确,X轴发生偏移的现象,只要把两张图的缩放前后的比例代入到手部追踪的代码里去 ,追踪坐标就会正常显示了。

        找到脚本“HandColorOverlayer”里“OverlayJoint”这个方法就是坐标追踪的根源了。

        其中的第一句

Vector3 posJoint = manager.GetJointKinectPosition(userId, jointIndex);

就是我们需要修改的的地方了,确切的说是 posJoint的这个值的X轴的数据。

 

        上图只代表分辨率,不代表实际大小 ,可以看到Y轴上1080被拉到了1920的大小那么对应的X轴: 1080/X = 1920/1080  X = 607.5。

        所以这个坐标下加上这一句,没错这一句就是整篇文章的精华所在。

Vector3 posJoint = manager.GetJointKinectPosition(userId, jointIndex);
posJoint.x = (1920f / 607.5f) * posJoint.x;

        切换成竖屏后运行,发现追踪的位置基本差不大多了(有点偏左)

         对比1920*1080分辨率下的视野其实可以发现Y轴上也有些裁切,所以算出的比例才没那么精准,不过这个精度基本够我用了,要想算出精准比例怕是要扒一扒“PortraitBackground”这个脚本了,暂时比较忙,以后空闲了看看再细算吧······

        有大佬算出结果来的或者我的思路是错误的也可以发在评论里,大家一起进步,还能帮帮各位被Kinect折磨的道友~

        (悄悄说一句,在我加上了0.07的偏移后,追踪的位置基本定在手掌中心了)

         即:

posJoint.x = (1920f / 607.5f) * posJoint.x+0.07f;

        哈哈,有点投机取巧了,不过实在懒得扒代码了······


http://www.ppmy.cn/news/126451.html

相关文章

imx6q HDMI输出1920x720@60分辨率支持

这次要搞的是一个imx6q的HDMI输出,外接一个HDMI转LVDS转接板(由单片机bypass转图像信号),然后接一个1920x720分辨率的LVDS屏幕,这个分辨率在imx的HDMI驱动里面没有支持,只有我们自己添加了。 IMX6的HDMI分辨率的输出在驱动中有一个…

Ubuntu16.04设置分辨率1920*1080

现在大部分电脑通用的分辨率是1920*1080,但是在使用Ubuntu16.04的时候发现并不支持改分辨率,所以可以通过以下操作进行分辨率的修改。 一、打开Ubuntu终端:快捷键CtrlAltT 二、输入命令:cvt 1920 1080 返回结果: 1…

《树莓派入门 (九) HDMI设置特殊分辨率1920*1920/1024*310》

场景 在使用树莓派的时候,难免遇到使用的屏幕出现那种不规则的或者特殊的分辨率,这次以京东方的屏幕1920*1920的分辨率处理,树莓派的配置显示参数的接口存放在/boot/的config.txt,知道位置,修改就好处理了 一、先了解下树莓派各…

deepin/UOS没有1920*1080

不知道各位有没有遇到deepin/UOS没有1920*1080分辨率的问题只能用1024*768今天就交你解决 首先打开终端 逐行输入以下命令 cvt 1920 1080 xrandr --newmode "1920x1080_60.00" xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 …

android 1920*1080分辨率,安卓APP设计规范之1080*1920设计稿对应开发尺寸

目前市场上,只有Android系统的手机才有1080P全高清的产品。1080P是说手机屏幕的分辨率达到1920*1080像素。1080P的屏幕最直观的改变当然是屏幕精细度的巨大提升,就算是5寸的屏幕,精细度也可以达到441ppi的超高级别。相当于苹果手机的iphone6的分辨率。 安卓系统5.0的风格是:…

html页面宽度1920,网页banner尺寸1920

网页设计设计过程中,banner图是整个网页中,图片面积最大,位置最显眼的区域,甚至一个好看的网站就取决于banner的设计。 现主流banner的尺寸主要是分为这三种,(推荐学习:web前端视频教程) 1.显示位置是固定尺…

图片1920x1080分辨率怎么调 ?图片如何修改分辨率?

图片是我们日常生活中经常需要使用到的东西,但是在使用图片时我们会遇到需要调图片分辨率的情况,有很多小伙伴对于图片分辨率这个概念并不了解,今天就来为大家具体介绍一下图片1920x1080怎么调以及怎么给图片修改分辨率,下面一起来…

Windows 10 错误1920,未能启动服务:office software protection platform。

机器上的Office2010突然间不能用了,需要安装什么配置文件,但是在安装的过程中出现了该错误,大致查了查应该是权限的问题,其中这篇文章中介绍了Win7的解决办法:https://answers.microsoft.com/zh-hans/office/forum/off…