C# 停止和恢复眼球运动
我试图编辑默认的oculus摄像机脚本,使其在一段时间内停止对跟踪传感器的响应,然后从摄像机停止跟踪跟踪传感器时所指向的位置恢复正常移动 我能够阻止相机响应跟踪传感器,但现在当它恢复工作时,它会“捕捉”到相机在传感器未停用时的位置。一、 然而,我们希望它只是“无缝地”恢复跟踪。所以我想我也必须在这段时间内停止一些变量的更新 这是我到目前为止的代码,它位于函数SetCameraOrientation中的OVRCamera脚本中:C# 停止和恢复眼球运动,c#,unity3d,oculus,C#,Unity3d,Oculus,我试图编辑默认的oculus摄像机脚本,使其在一段时间内停止对跟踪传感器的响应,然后从摄像机停止跟踪跟踪传感器时所指向的位置恢复正常移动 我能够阻止相机响应跟踪传感器,但现在当它恢复工作时,它会“捕捉”到相机在传感器未停用时的位置。一、 然而,我们希望它只是“无缝地”恢复跟踪。所以我想我也必须在这段时间内停止一些变量的更新 这是我到目前为止的代码,它位于函数SetCameraOrientation中的OVRCamera脚本中: if (Time.realtimeSinceStartup >
if (Time.realtimeSinceStartup >= 11f && Time.realtimeSinceStartup <= 17f)
{
camera.transform.rotation = lastRotation;
}
else
{
camera.transform.rotation = q;
lastRotation = q;
}
如果有人能帮我,我将不胜感激
谢谢。如果您想从上次停止的位置继续跟踪,那么当您继续跟踪时,您需要记录当前方向和上次旋转之间的增量,以便从那时起应用增量反转 我不知道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;
}
if(Time.realtimesincesttartup>=11f&&Time.realtimesincesttartup我明白你的意思,你的代码看起来很有前途。我稍后会试用并向你报告,但已经谢谢你了。你想实现什么?如果你冻结跟踪数据然后还原它,用户可能会向上看,现在他们会去其他地方看?或者你想知道吗ant是否仅在y轴周围冻结?需要记住的一点是,冻结/恢复头部跟踪会大大增加导致晕车的可能性。有关更多信息,请查看最佳做法文档:
if (Time.realtimeSinceStartup >= 11f && Time.realtimeSinceStartup <= 17f)
{
camera.transform.rotation = lastRotation;
deltaRotation = q * lastRotation.inverse();
}
else
{
lastRotation = q * deltaRotation.inverse();
camera.transform.rotation = lastRotation;
}