如何使用SceneKit独立控制多个骨骼动画?

时间:2019-01-17 10:48:55

标签: ios swift scenekit

我试图用多个输入同时控制多个骨骼动画,每个输入都指向一个动画的不同帧。想象一下用setWeight(_:forTargetAt:)为变形器设置权重的方式,但是将输入作为帧,我希望动画处于这种状态。

我通过做类似的事情就只用了一个动画就实现了

@IBOutlet weak var sceneView: SCNView!

var animationPlayer: SCNAnimationPlayer! = nil

override func viewDidLoad() {
    super.viewDidLoad()   

    //add a node on the scene and give animationPlayer the node's animation player

    animationPlayer.animation.usesSceneTimeBase = true
}

@IBAction func sliderChanged(_ sender: UISlider) {
    sceneView.sceneTime = Double(sender.value) * animationPlayer.animation.duration
}

放置滑块以更改sceneTime中的sceneView。仅当节点只有一个动画时,这才起作用。

但是我要实现的是异步控制所有动画,但是在一个节点上。我不能简单地使用sceneTime播放,因为这将导致所有动画在相同的时间基准上同步播放。

有没有办法以不同的输入时间或以任何值作为指向动画特定帧的指针的方式播放所有动画? (例如,在某个时间点,第一个动画播放第5帧,而第二个动画播放第8帧。在渲染的下一帧,第一个动画播放第4帧,第二个动画播放第12帧。)

谢谢。

0 个答案:

没有答案