10

custom animatable properties in Core Animation을 만들 수는 있지만 OS X 10.8의 SceneKit 프레임 워크는 어떤가요? SCNAnimatableCALayer과 같은 API를 공개하지 않는 것으로 보이며 속성을 애니메이션화 할 수 있습니다.SceneKit의 사용자 정의 애니메이션 속성

내 응용 프로그램에서는 서브 클래스가 Starfield이고 SCNNodeRendererDelegate을 사용하여 이전 OpenGL 응용 프로그램에서 이식했습니다. Starfields는 GLfloat 속성이 warpFactor라는 노출 :

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

@property(nonatomic) GLfloat warpFactor; 
@end 

을하지만과 같이, 여기에 애니메이션을 추가 할 때 :

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

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

을 나는 콘솔에서 다음을 얻을

나는 SceneKit가 아주 새로운 것을 알고 있지만 누구도이 작업을 수행하는 방법을 알고 있습니까?

+1

통해 다른 애니메이션 사용자 정의 속성의 애니메이션을 동기화 할 수 있습니다. –

답변

0

SceneKit 사용자 지정 애니메이션 키 패스를 지원하지 않습니다

+0

분명히 그럴듯하게 보이지만, 포기하기 전에, 내가하고 싶은 일이 실제로 불가능하다는 것을 확인하고 싶습니다. 이 점을 확인하는 문서 나 다른 점을 가르쳐 주시겠습니까? –

+0

SceneKit 용 문서는 매우 희소합니다. 나는보고 아무것도 찾지 못했습니다. 오류 메시지가 가장 좋을 수도 있습니다. – jblocksom

+0

그래, 나는 다른 사람이 다른 대답으로 뛰어들 수 있기를 바랬지 만, 애플이 더 좋은 문서를 발표 할 때까지는 적어도 우리가 생각할 수있는 최상의 것 같습니다. 수락. –

3

해결 방법/해킹 :

  • 는 기하학없는 노드를 생성하고 불투명도를 예를 들어, 해당 노드에서
  • 사용을 일부 애니메이션 속성에 애니메이션 SCNSceneRendererDelegate을 사용하여 렌더링 프로세스의 적절한 단계에 연결하고 기하 도형 노드의 애니메이션 속성 값으로 사용자 정의 속성을 수동으로 업데이트하십시오 (노드의 presentationNode에서 애니메이션 속성을 읽어야합니다)

이 솔루션은 추한이지만, 당신은 내가이 SceneKit 여기에 대해 질문 한 첫 번째 질문의 사람인지 진정으로 놀랍군요 SCNTransaction 또는 CAAnimationGroup

+0

재미있는 아이디어, 감사합니다! –

+0

필자는이 작업을 수행 한 "보간 노드"를 만들었습니다. CIFilter 속성과 같은 애니메이션을 적용하고 필요한 모든 작업을 수행 할 때마다 모든 프레임의 프레젠테이션 값을 평가했습니다. 그것은 꽤 잘 작동했습니다. – LucasTizma