【问题标题】:hololens setParent position changes camera lenshololens setParent 位置改变相机镜头
【发布时间】:2017-10-17 05:57:13
【问题描述】:

我正在使用 Hololens Lens Toolkit Master。 问题是当你设置lens camera的SetParent时,lens的camera位置变成了parent的位置。

例如,如果 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 !!

【问题讨论】:

    标签: c# unity3d position hololens setparent


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。我没有把相机当成孩子,我创建了一个dummy,把dummy当成孩子,dummy作为相机位置的参考。
    • 但我还是不明白。这个逻辑是一样的,但是在华硕Zhenphone AR相机上可以正常工作,但是我不知道是什么原因导致它在hololens相机上不能正常工作。
    • Hololens 是一种完全不同的动物,因为您在使用时的视觉没有被遮挡,因此相机的工作方式是不同的。它基本上是相同的答案,主摄像机始终是 0,0,0,0,它是移动的世界,而不是摄像机。当你开始改变主摄像头的位置时,你实际上是在改变人的视点的位置,这是一个预期的空间固定点,你不想在使用全息透镜时移动它
    【解决方案2】:

    SetParent 函数有两个重载:

    SetParent(Transform parent)
    
    SetParent(Transform parent, bool worldPositionStays);
    

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

    A.SetParent(B.Transform, false);
    

    【讨论】:

    • 感谢您的回答。但是我照做了,结果还是一样。它已更改为与父级相同的位置。
    • 很遗憾我没有 hololens 并且无法复制这个问题。通常通过提供第二个参数来解决调用SetParent函数后的位置问题。使用不断变化的相机值的屏幕截图修改您的问题,也许有人可以找出问题所在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多