2012-07-31 18 views
10

custom animatable properties in Core Animationを作成することはできますが、OS X 10.8のSceneKitフレームワークはどうでしょうか? SCNAnimatableは、プロパティをアニメーション可能にするためにCALayerと同じAPIを公開していないようです。SceneKitのカスタムアニメーション可能なプロパティ

私のアプリケーションでは、StarfieldというSCNNodeというサブクラスがあります。これは、古いOpenGLアプリケーションからSCNNodeRendererDelegateを使って移植しました。 StarfieldsはwarpFactor呼ばGLfloat財産公開:

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

@property(nonatomic) GLfloat warpFactor; 
@end 

をしかし、私はそうのように、それにアニメーションを追加しようとすると:

CABasicAnimation *warp = [CABasicAnimation animationWithKeyPath:@"warpFactor"]; 
warp.toValue = @1.0; 
warp.duration = 5.0; 
[starfield addAnimation:warp forKey:@"warp"]; 

私は、コンソールに次のように取得する:

[SCNKit ERROR] warpFactor is not an animatable path (from <unnamed SCNNode 0x1016473c0, no children>) 

私はSceneKitがまったく新しいことを知っていますが、この作業を行う方法を知っている人は誰ですか?

+1

を介して他のアニメーションでカスタムプロパティのアニメーションを同期させることができます。 –

答えて

0

SceneKitは、カスタムアニメーション可能キーパスをサポートしていません

+0

それは確かに妥当と思われますが、あきらめる前に、私がしたいことは実際には不可能であることを確認したいと思います。これを確認するドキュメントやその他のものを私に指摘できますか? –

+0

SceneKitのドキュメントはかなり疎です。私は見て何も見つかりませんでした。エラーメッセージが表示される場合があります。 – jblocksom

+0

ええ、私は他の人が別の答えでジャンプできることを期待していましたが、Appleがより良い文書をリリースするまで、これがおそらく最高のものだと思われます。受諾する。 –

3

回避策/ハック:

  • は、ジオメトリレスノードを作成し、不透明度に、たとえば、そのノード上
  • 使用をいくつかのアニメーション化プロパティをアニメーション化SCNSceneRendererDelegateをレンダリングプロセスの適切なステージにフックし、カスタムレスポンスをジオメトリレスノードのアニメーションプロパティの値で手動で更新します(ノードのpresentationNodeのアニメーションプロパティを必ず読み込んでください)

このソリューションは醜いですが、それは、私は、これは誰かがSceneKitについてはこちらを尋ねた最初の質問であることを本当に驚いているあなたはSCNTransactionCAAnimationGroup

+0

面白いアイデア、ありがとう! –

+0

私はCIFilterのようなものをアニメーション化し、必要なことをするためにフレームごとにプレゼンテーション値を評価しました。それはかなりうまくいった。 – LucasTizma

関連する問題