我希望能够将动画实时应用到 SCNNode。 基本上,我有一个节点,我想连续输入它的角度并让它近乎实时地产生动画。我尝试过 runActions:
var action1:SCNAction = SCNAction.rotateByX(CGFloat(45 / 180.0 * M_PI), y: 0.0, z: 0.0, duration: 0.5);
但 Action 的问题是,如果我在同一节点上有一系列 Action ,它只会对最新的 Action 进行动画处理,而不能让它对多个 Action 进行动画处理。然后我遇到了序列,但序列是静态数组,因此无法实时动态填充它们。
所以我的问题是,有谁知道如何使用流数据对 scnnode 进行动画处理。它不一定是实时的,但那就太好了
最佳答案
您是否尝试过简单地设置旋转?如果每帧有足够的数据,它应该尽可能平滑。这就是我在 VR 中使用的东西。
此外,您可以使用 Unity 中非常流行的 lerp()
函数来执行此操作。我不认为这是在 Scenekit 中内置的,但我们可以使用 GLKVector4Lerp 。这是一个 Objective-C 示例:
- (void)renderer:(id <SCNSceneRenderer>)aRenderer updateAtTime:(NSTimeInterval)time
{
yourNode.rotation = GLKVector4Lerp(yourNode.rotation, newRotation, (float)time);
}
这样就可以连续发送数据,节点会平滑跟随,不会跳转。
关于ios - 使用 SceneKit 进行实时连续动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29064217/