Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 停止和恢复眼球运动_C#_Unity3d_Oculus - Fatal编程技术网

C# 停止和恢复眼球运动

C# 停止和恢复眼球运动,c#,unity3d,oculus,C#,Unity3d,Oculus,我试图编辑默认的oculus摄像机脚本,使其在一段时间内停止对跟踪传感器的响应,然后从摄像机停止跟踪跟踪传感器时所指向的位置恢复正常移动 我能够阻止相机响应跟踪传感器,但现在当它恢复工作时,它会“捕捉”到相机在传感器未停用时的位置。一、 然而,我们希望它只是“无缝地”恢复跟踪。所以我想我也必须在这段时间内停止一些变量的更新 这是我到目前为止的代码,它位于函数SetCameraOrientation中的OVRCamera脚本中: if (Time.realtimeSinceStartup >

我试图编辑默认的oculus摄像机脚本,使其在一段时间内停止对跟踪传感器的响应,然后从摄像机停止跟踪跟踪传感器时所指向的位置恢复正常移动

我能够阻止相机响应跟踪传感器,但现在当它恢复工作时,它会“捕捉”到相机在传感器未停用时的位置。一、 然而,我们希望它只是“无缝地”恢复跟踪。所以我想我也必须在这段时间内停止一些变量的更新

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

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;
}