2016-06-30 6 views
0

나는 가속도계 데이터를 사용하여 몸체의 방향을 시뮬레이션하려고하는데 부드러운 애니메이션을 얻는데 어려움이 있습니다.OSK에서 SceneKit으로 부드러운 애니메이션

대용량 가속도 데이터 파일이 있으며 가속도계 데이터에서 계산 된 피치 및 롤 값을 사용하여 방향을 애니메이션으로 지정하려고합니다. 데이터는 일정한 시간 간격으로 샘플링되며 나는 duration =을 80ms와 640ms 사이의 샘플 시간으로 설정함으로써 근사치를 계산할 수 있다고 생각했습니다.

아래 코드는 작동하지 않는 것으로 보입니다. 지속 시간을 변경하면 전환에 새로운 방향으로 애니메이션을 적용하는 데 아무런 영향을 미치지 않는 것으로 보입니다.

몸의 방향 변경을 애니메이션으로 적용하고 시뮬레이션 속도를 실제 시간 또는 그 배수와 비슷하게 조정할 수있는 올바른 방법은 무엇입니까?

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

SceneKit 암묵적 애니메이션 SCNTransaction (되지 CATransaction)를 사용한다.

관련 문제