2016-06-30 19 views
0

加速度計データを使用してボディの向きをシミュレートしようとしていますが、滑らかなアニメーションを得るのが難しいです。OS XでSceneKitを使用したスムーズアニメーション

私は、加速度計データの大きなファイルを持っており、加速度計データから計算されたピッチとロールの値を使って向きをアニメートしたいと考えています。データは一定の時間間隔でサンプリングされ、80msと640msの間で変化する可能性のあるサンプル時間にduration =を設定することで、それを近似できるとわかりました。

以下のコードは機能していないように見えますが、再生時間を変更すると、新しい方向へのトランジションをアニメーション化するのに時間がかかりません。

身体の向きの変化をアニメーション化し、シミュレーション速度を実際の時間またはその倍数に近似するように調整することは正しいでしょうか? SceneKit暗黙的なアニメーションのため

func animate(scan: ScanData) { 

    if let accel = scan.next() { 
     let orientation = accel.orientation 
     let start = scan.startTimeString 
     let time = StringFromDate(scan.dateFromTime(orientation.ms)!)   

     let pitch = Double(DegreesToRadians(0.0)) 
     let yaw = Double(DegreesToRadians(CGFloat(orientation.roll))) 
     let roll = Double(DegreesToRadians(CGFloat(orientation.pitch))) 

     CATransaction.begin() 
      CATransaction.setCompletionBlock({ 
       animate(scan) 
      }) 

      bodyNode.eulerAngles = SCNVector3(pitch, yaw, roll) 

      CATransaction.setAnimationDuration(0.16) 
     CATransaction.commit() 

    } else { 
     print("No more data") 
     return 
    } 
} 

答えて

2

SCNTransaction(CATransactionない)を使用します。

関連する問題