2016-06-21 7 views
0

ユニティのGoogleボール紙の実装で角速度を変更したいと思います。つまり、40度回転すると、レンダリングされたビューは45度(または割り当て可能な要素に応じて35度)になります。段ボールの角シフト速度を変更する方法VR

ここではvar rotと遊ぼうと思っています。誰も私がここで四元数の読みを操作する方法を理解するのを助けることができますか?すべてのオイラー1度の頭の回転について、レンダリングは1.25度回転します。

// Compute new head pose. 
private void UpdateHead() { 
    if (updated) { // Only one update per frame, please. 
     return; 
    } 
    updated = true; 
    GvrViewer.Instance.UpdateState(); 

    if (trackRotation) { 
     var rot = GvrViewer.Instance.HeadPose.Orientation ; 
     if (target == null) { 
     transform.localRotation = rot; 
     } else { 
     transform.rotation = target.rotation * rot; 
     } 
    } 

    if (trackPosition) { 
     Vector3 pos = GvrViewer.Instance.HeadPose.Position; 
     if (target == null) { 
     transform.localPosition = pos; 
     } else { 
     transform.position = target.position + target.rotation * pos; 
     } 
    } 

    if (OnHeadUpdated != null) { 
     OnHeadUpdated(gameObject); 
    } 
    } 
} 

答えて

0

これはもう必要ないかもしれません。 これはうまくいくはずです。

private void UpdateHead() { 
    if (updated) { // Only one update per frame, please. 
     return; 
    } 
    updated = true; 
    GvrViewer.Instance.UpdateState(); 

    if (trackRotation) { 
     var rot = GvrViewer.Instance.HeadPose.Orientation ; 


     var rotx = rot.x; 
     var roty = rot.y; 
     var rotz = rot.z; 
     var rotFinal = Quaternion.Euler(rotx*1.15f, roty*1.15f, rotz*1.15f); 


     if (target == null) { 
     transform.localRotation = rotFinal; 
     } else { 
     transform.rotation = target.rotation * rotFinal; 
     } 
    } 

    if (trackPosition) { 
     Vector3 pos = GvrViewer.Instance.HeadPose.Position; 
     if (target == null) { 
     transform.localPosition = pos; 
     } else { 
     transform.position = target.position + target.rotation * pos; 
     } 
    } 

    if (OnHeadUpdated != null) { 
     OnHeadUpdated(gameObject); 
    } 
関連する問題