在SceneKit中自定义可设置动画的属性

时间:2012-07-31 14:53:31

标签: objective-c macos core-animation osx-mountain-lion scenekit

我知道可以创建custom animatable properties in Core Animation,但在OS X 10.8的SceneKit框架中呢? SCNAnimatable似乎没有公开CALayer使属性设置为动画的相同API。

在我的应用程序中,我有一个名为SCNNode的{​​{1}}子类,我使用Starfield从旧的OpenGL应用程序移植了它。 Starfields公开名为SCNNodeRendererDelegate的{​​{1}}属性:

GLfloat

但是当我尝试添加动画时,就像这样:

warpFactor

我在控制台中收到以下内容:

@interface Starfield : SCNNode<SCNNodeRendererDelegate> {
    // other stuff that's not really important for this question
    GLfloat warpFactor;
}

@property(nonatomic) GLfloat warpFactor;
@end

我知道SceneKit是全新的,但有没有人碰巧知道如何使这个工作?

2 个答案:

答案 0 :(得分:4)

解决方法/黑客攻击:

  • 创建一个无几何体的节点,并在该节点上为某些可设置动画的属性设置动画,例如不透明度
  • 使用SCNSceneRendererDelegate挂钩到渲染过程的适当阶段,并使用无几何节点的动画属性的值手动更新自定义属性(确保从节点的{{读取动画属性) 1}})

此解决方案很难看,但它允许您通过SCNTransactionCAAnimationGroup

将自定义属性的动画与其他动画同步

答案 1 :(得分:0)

SceneKit不支持自定义动画关键路径