2016-06-21 7 views
0

Ich möchte die Geschwindigkeit der Winkelverschiebung in meiner Google-Pappimplementierung auf Unity ändern. Das heißt, wenn ich etwa 40 Grad rotiere, dreht sich die gerenderte Ansicht zum Beispiel um 45 Grad (oder 35 Grad abhängig von einem Faktor, den ich zuweisen kann).So ändern Sie die Winkelgeschwindigkeit auf Karton VR

Ich glaube, ich muss hier mit var rot spielen. Kann mir jemand helfen, herauszufinden, wie man die Quaternion-Werte hier manipuliert - sagen wir für jede Euler-1-Grad-Kopfdrehung, dass das Rendering mit 1,25 Grad rotiert?

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

Antwort

0

Ich denke, nach 7 Monaten brauchen Sie das nicht mehr. Ich würde sagen, das sollte funktionieren.

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); 
    } 
Verwandte Themen