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

        我们做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;

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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值