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 に答える