我正在修复两年前的一个遗留项目。它使用Windows Unity主机来利用Leap Motion设备捕捉手的运动,并使用iPhone播放器(带纸板耳机)来控制视口如何在“游戏世界”中相对移动。
现在我发现只有当我的Leap Motion设备保持静止(e.x.被钉在我的胸口上),只有iPhone播放器随着我的头移动,我才能找到一切正常的东西。否则,当我在头上同时佩戴Leap Motion设备和iPhone时,手部模型会随着我头部的移动而摇摆。
我的结论是,Leap Motion设备捕获的手的位置被解释为相对于“世界坐标系”的位置,但实际上它应该是相对于我的耳机(即在我的windows主机上作为游戏对象产生的iPhone播放器摄像头)的本地位置。
我做了一个简单的场景来说明我的情况。未连接网络时的层次结构如下:
当Windows程序作为主机连接到自身时的层次结构:
如果还连接了iPhone End:
我试着给“手”下达命令,让它与“相机(克隆)/Head”一起旋转,但它不起作用。(在下图中,“克隆”和"CameraFacing“是让它与”相机(克隆)/Head“一起移动的不同试验。)
发布于 2019-07-01 12:20:19
听起来这个问题是由相机和Leap Motion具有不同的延迟和不同的帧频操作造成的,这可以用temporal warping解决。这已经由Leap Motion实现,如果您使用Leap XR Service Provider,则会自动完成。
将LeapXRServiceProvider
组件连接到您的主相机,并确保时间扭曲模式设置为“自动”。这将告诉Leap Motion代码来补偿手部跟踪帧和Unity帧之间的差异。
https://stackoverflow.com/questions/51117825
复制