hololens setParent 位置改变相机镜头

hololens setParent position changes camera lens

我正在研究如何使用 Hololens Lens Toolkit Master。 问题是当你设置镜头相机的SetParent时,镜头的相机位置变得与父级的位置相同。

例如,如果A的位置是0,0,0,B的位置是0,0,4,那么A.SetParent(B.Transform)会使A的位置是0,0,-4。

在 Unity 编辑器上也是如此。

但是,如果你在 hololens 和 运行 A.SetParent(B.Transform) 上构建,A 的位置将为 0, 0, 4。

我不知道为什么会这样...

我要 0, 0, -4 !!

SetParent 函数有两个重载:

SetParent(Transform parent)

SetParent(Transform parent, bool worldPositionStays);

第一个参数默认使用true。使用第二个函数并将false传递给它以强制对象在设置其父对象时使用其位置。

A.SetParent(B.Transform, false);

一般来说主Camera的parent就是场景本身,不能再高了,所以parent就是camera,除非你的camera在另一个游戏对象里面。还要记住,对于 Hololens,相机是稳定的位置,其他一切都需要相对于相机移动,而不是相反。

更新:因此,hololens 应用程序中的主摄像头就像第一人称射击游戏中的角色摄像头,但它不是移动世界的摄像头,并且应用程序无法控制主摄像头,在 FPS 中,您可以使用控制器或键盘控制角色。这里的区别在于主相机由全息镜头控制,0,0,0,0 是固定的主相机点并且永远不会改变,发生的事情是全息镜头中的检测相机根据空间映射例程更新位置设备,因此更改主摄像头的位置会产生意想不到的结果。如果你想改变视角,我建议你创建一个新相机并将视图转移到新相机并移动那个相机,当你想将它切换回来时恢复到主相机。这个新相机不能是主相机的子相机。一个警告是我从来没有尝试过这个,并且作为一种可能的解决方案提供,我不知道它是否有效。