在OS X上使用SceneKit平滑动画



我正在尝试使用加速度计数据模拟物体的方向,并且很难获得平滑的动画。

我有一个大的加速度计数据文件,并希望使用从加速度计数据计算的俯仰和滚动值来动画方向。数据以恒定的时间间隔进行采样,我认为可以通过将持续时间=设置为采样时间(可以在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
    }
}

对于SceneKit隐式动画使用SCNTransaction(不是cattransaction)。

相关内容

  • 没有找到相关文章

最新更新