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
}
}