Core Animation을 사용하여 iPhone의 OpenGL 장면에서 맞춤 애니메이션을 구동하는 데 관심이 있습니다. NSObject의 keypath 또는 각 애니메이션 틱에 대한 대리자 메서드를 일반적으로 애니메이션으로 만들 수있는 메커니즘을 찾고 싶습니다. 내가 생각해 낸 것은 CALayer의 임의의 속성에 애니메이션을 적용하고 애니메이션의 진행을 결정하기 위해 OpenGL에서이를 폴링하는 것입니다. 그러나, 나는 그것을 할 수있는 더 좋은 방법이 있다고 확신합니다. 이 위대한 애니메이션 엔진을 활용하는 가장 깨끗하고 안전한 방법은 무엇입니까?OpenGL의 애니메이션 용 코어 애니메이션 활용
답변
보기 자체에 애니메이션을 적용하려면 iPhone UIView Animation Best Practice을 사용해보십시오. OpenGL보기 내부의 애니메이션의 경우 애니메이션 모델 또는 사용자 정의 코드를 사용하는 것이 좋지만 Core Animation은 사용하지 않는 것이 좋습니다.
Core Animation을 사용하여 원하는대로 움직일 수 있습니다. 나는 그것이 소리에도 사용될 수 있다고 확신한다! (CALayer의 약간의 하위 클래스가 주어짐). UIKit과 Core Animation은 약간의주의를 기울여 아주 자유롭게 혼합 될 수 있습니다. CAEAGLLayer도 같이 플레이 할 수 있습니다.
여기서 핵심은 - (id) presentationLayer 및 순수/유일한 OpenGL을 사용하는 - (id) modelLayer입니다. 물론 계층 구조조차도 OpenGL 씬에 사용할 수 있습니다. 그러나 렌더링을 위해 CALayer를 사용하면 "무료"로 더 많은 정보를 얻을 수 있습니다. 상황에 따라 가능하다면 (CATransformLayer도 참조하십시오), 이것이 원하는 것이면! =)
핵심 애니메이션에서 사용하는 여유 기능 만 실제로 원하는 것 같습니다. 이들은 약간의 인터넷 검색으로 쉽게 찾을 수 있습니다.
GLfloat bounceEaseOut(GLfloat ratio) {
if (ratio < 1.0f/2.75f) {
return 7.5625f*ratio*ratio;
} else if (ratio < 2.0f/2.75f) {
return 7.5625f*(ratio-=1.5f/2.75f)*ratio+0.75f;
} else if (ratio < 2.5f/2.75f) {
return 7.5625f*(ratio-=2.25f/2.75f)*ratio+0.9375f;
} else {
return 7.5625f*(ratio-=2.625f/2.75f)*ratio+0.984375f;
}
}
당신은 (elapsedTime/tweenDuration) 얼마나 멀리 당신의 트윈에 전달하고 당신을 알려줍니다이 트윈의 "타임 라인"을 통해 방법의 몇 퍼센트 당신이해야합니다 : 여기에 하나의 예입니다.
나는 비슷한 일을하려고했는데, CA 애니메이션 중에 부모에서 그 위치를 기반으로 gl보기를 업데이트했습니다. CA 애니메이션과 동기화되지 않은 고르지 못한 애니메이션이 비슷한 결과를 얻었습니다. 마침내 CA 사용을 중단하고 다른 보간 엔진을 사용하기로 결정했습니다. 이제 PRTween을 사용 중입니다. 잘 작동하고있어. 몇 가지 단점이있는 것으로 확신합니다 (애니메이션은 기본 스레드에서 실행 중이며 인터페이스는 CA만큼 좋지 않으며 약간 버그가 있습니다).하지만 애니메이션은 매끄럽게 실행됩니다.
- 1. OpenGL의 애니메이션
- 2. 코어 애니메이션 애니메이션 추적
- 3. 코어 애니메이션 - 애니메이션
- 4. 코어 애니메이션 애니메이션 연결
- 5. iPad 애니메이션 플립 - 코어 애니메이션
- 6. 코어 애니메이션 이미지 배열에 애니메이션 적용
- 7. 코어 애니메이션 CALayer 마스크 애니메이션 성능
- 8. 버튼의 가치 코어 애니메이션 블록의 애니메이션 제목
- 9. 코어 애니메이션 요구 사항
- 10. 코어 애니메이션 수식
- 11. iPhone의 코어 애니메이션 문제
- 12. 코어 애니메이션 콜백
- 13. 코어 애니메이션 또는 OpenGL?
- 14. 코어 애니메이션 클래스 오류
- 15. iPhone 애니메이션 코어 그래픽
- 16. 심플 코어 애니메이션 회전보기
- 17. 코어 애니메이션 앵커 포인트가 무시됩니까?
- 18. 코어 애니메이션 창 뒤집기 효과
- 19. 코어 애니메이션 회전을 부드럽게 멈추기
- 20. 코어 그래픽 애니메이션 드로잉 (iPhone)
- 21. 코어 애니메이션이있는 이미지 시퀀스 애니메이션
- 22. Mac에서 블록을 사용하는 코어 애니메이션?
- 23. 코어 애니메이션이 아닌 매끄러운 애니메이션
- 24. GUI 용 AVI 애니메이션
- 25. 애니메이션 버튼 용 AS3
- 26. 이미지 용 애니메이션 wpf
- 27. Android 용 애니메이션 오버레이
- 28. iOS 용 입자 애니메이션
- 29. 화면 보호기의 육포/떨림 (코어) 애니메이션?
- 30. 왼쪽에서 오른쪽으로 애니메이션 애니메이션
Core Animation을 간접적으로 사용하면 어떤 문제가 발생합니까? Core Animation과 OpenGL을 화면에 섞어 놓는 것에 대한 강한 충고를 알고 있지만, CALayer가 뷰에 추가되지 않는다면 어떨까요? –
어쩌면 내가 오해 할 수도 있지만, OpenGL ES로 장면을 렌더링 할 경우 Core Animation을 전혀 사용할 필요가 없습니다. 애플이 간단한 예제를 보자. http://developer.apple.com/iphone/library/samplecode/GLES2Sample/index.html 그들은 CALayer가없는 UIView를 가지고있다. – Pavel
Core Animation의 애니메이션 기능을 사용하여 OpenGL에서 애니메이션을 적용하는 방법에 대해 설명합니다. CALayer를 사용하면 화면에 나타나지 않습니다. 그 대신 애니메이션이되어서 애니메이션이 어디에 있어야하는지 (CALayer에 따라) 찾아 볼 수 있고 OpenGL 오브젝트를 화면에 그려 넣을 수 있습니다. 이 방법으로 나는 내 자신의 애니메이션 엔진을 작성하는 대신 많은 것을 무료로 얻을 수 있습니다. –