0

我正在尝试编辑默认的 oculus 相机脚本,以在一段时间内停止响应跟踪传感器,然后从相机停止跟随跟踪传感器时所指向的位置恢复正常移动。

我能够阻止相机响应跟踪传感器,但现在当它恢复工作时,它会“捕捉”到如果传感器未停用,相机将处于的位置。但是,我希望它只是“无缝”恢复跟踪。所以我想我还必须在那段时间停止一些变量的更新。

到目前为止,这是我的代码,它位于函数 SetCameraOrientation 的 OVRCamera 脚本中:

if (Time.realtimeSinceStartup >= 11f && Time.realtimeSinceStartup <= 17f)
{
    camera.transform.rotation = lastRotation;
}
else
{
    camera.transform.rotation = q;
    lastRotation = q;
}

这是我的新变量的变量声明:

private Quaternion          lastRotation        = new Quaternion();

如果有人可以帮助我,我将不胜感激。

谢谢。

4

1 回答 1

0

如果您想从中断的地方继续跟踪,那么当您恢复时,您需要记录当前方向之间的增量,lastRotation以便您可以从那时起应用增量逆......

我不知道 Unity 四元数的确切语法,但你想要这样的东西:

if (Time.realtimeSinceStartup >= 11f && Time.realtimeSinceStartup <= 17f)
{
    camera.transform.rotation = lastRotation;
    deltaRotation = q * lastRotation.inverse();
}
else
{
    lastRotation = q * deltaRotation.inverse();
    camera.transform.rotation = lastRotation;
}
于 2014-05-19T19:34:44.607 回答