2014-07-03 30 views
1

我試圖得到的lookAt功能的工作,我已經取得了一些成功:處理四元數「注視」功能 - 保持直立字符

public virtual void LookAt(Vector3 point) 
    { 
     Vector3 fw = Forward; 
     Vector3 delta = (point - Position).Normalized(); 
     if (delta.LengthSquared > 0) 
     { 
      Vector3 axis = Vector3.Cross(delta, fw); 
      float angle = Vector3.CalculateAngle(delta, fw); 
      if (angle > 0) 
      { 
       angle *= -Math.Sign(Vector3.Dot(Vector3.Cross(axis, fw), delta)); 
       Rotation *= Quaternion.FromAxisAngle(axis.Normalized(), angle); 
      } 
     } 
    } 

這工作,但不能拿考慮到我不想要任何滾動。所以方向是正確的,但我需要修理我的相機卷。現在,我知道我可以通過從AxisAngle創建一個四元數來旋轉它,但我不知道如何獲得當前位置和直立位置之間的角度!?

編輯:現在使用matrix.lookAt並轉換爲四元數。

回答