2016-05-03 10 views
0

Ich verwende Unity 5.3.4 und Oculus VR und implementiere eine Anwendung in der VR-Umgebung.Quaternion, Wie Objekt langsam rotieren?

Ich möchte ein Objekt langsam mit Quaternion drehen. Wenn ich zum Beispiel meinen Kopf um 180 Grad nach rechts drehe, dreht sich die MainCamera um 90 Grad.

In Unity wird der verfolgte Eingang von Oculus-VR automatisch berechnet und an Quaternion Daten zurückgegeben.

void Update() 
{ 
    transform.localRotation = UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.CenterEye);; 
} 

Also werde ich Kamera mit dieser Quaternion drehen. Aber ich kann nicht langsam rotieren.

Ich versuchte, arithmetische Operation zu berechnen, z. Multiplikation, Division, zu Quaternion. Aber es funktioniert nicht

Wie berechnet man Quaternion?

+0

in Theorie (meine Köpfe Theorie) sollten Sie das archieve der Lage sein, durch die quaternion zwischen alter Rotation lerping und die neu eine empfangen, mit t = 0,5 – yes

Antwort

0

Verwenden Sie einfach:

transform.localRotation =Quaternion.Lerp(transform.localRotation, UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.CenterEye), Time.deltaTime); 
0

testen Werden
Quaternion euler = new Quaternion(); euler.eulerAngles = new Vector3(0,HeadRotation,0); Camera.main.transform.Rotate(euler.eulerAngles);

+0

nur um einen sauberen Weg zu zeigen. nichts anderes. – LumbusterTick

+1

Ich denke, der Punkt, der ja hatte war, dass es * noch sauberer * wäre, wenn Sie einfach den Vektor3 direkt in 'Camera.main.transform.rotate' verwenden würden. Auch "Head Rotation" als Ausdruck ist nicht gültig C#. –

+0

@SamWalls stelle ich auch in Frage, dass seine effizienten, theres Berechnungen sowohl in der Schaffung der Quaternion von Euler-Winkel und die Wiederherstellung von ihnen beteiligt sind. – yes