Я заинтересован в использовании Core Animation для управления пользовательскими анимациями в моей OpenGL-сцене на iPhone. Я надеялся найти механизм, который позволил бы вам в общих чертах оживить путь ключа NSObject или метод делегата для каждого тика анимации. То, что я придумал, - это оживить произвольное свойство CALayer и опросить их из OpenGL, чтобы определить прогрессию анимации. Тем не менее, я убежден, что есть лучший способ сделать это. Какой самый чистый и безопасный способ использовать этот отличный движок анимации?Использование Core Animation для анимации в OpenGL
ответ
Если вы хотите анимировать просмотр, попробуйте прочитать iPhone UIView Animation Best Practice. Для анимации внутри OpenGL лучше использовать анимированные модели или собственный код, но не Core Animation.
Это возможно, чтобы использовать Core Animation для вождения, что бы вы ни пожелали. Я уверен, что он может быть использован и для звука! (Учитывая небольшое подклассов CALayer). UIKit и Core Animation можно смешивать довольно свободно, с небольшой осторожностью, так как для нас также есть CAEAGLLayer.
Ключ здесь - (id) presentationLayer и - (id) modelLayer для использования pure/only OpenGL; конечно, даже иерархия может быть использована и для вашей сцены 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), и он говорит вам, что процент пути через «сроки» твин Вам необходимо быть.
Я пытался что-то сделать, обновляю gl-взгляд на основе его положения в своем родителе во время анимации CA. Я получал похожие результаты, прерывистая анимация, которая не синхронизировалась с анимацией CA. Я, наконец, решил прекратить использование CA и полностью использовать другой механизм интерполяции. Теперь я использую PRTween. Он работает очень хорошо. Я уверен, что есть некоторые обратные спины (ваши анимации работают в основном потоке, интерфейс не так хорош, как CA, и он немного глючит), но мои анимации работают гладко.
- 1. Core Animation ... циклические анимации?
- 2. Core Animation или OpenGL ES?
- 3. анимации Glitch стиля с использованием Core Animation
- 4. UIView покадровой анимации с Core Animation
- 5. анимации UIView, используют ли они «Core Animation»
- 6. Как использовать пользовательские анимации для onOrderOut в Core Animation?
- 7. Core Animation или OpenGL для простой игры для iPhone
- 8. Core Animation speed
- 9. Использование Core Animation/CALayer для простой многослойной живописи
- 10. Objective-C Core Animation или OpenGL Draw Shadow at Angle
- 11. Invert Core Animation Direction
- 12. Core Animation + UIDynamics + arc4random()
- 13. Открыть документ анимации в прошивкой с помощью Core Animation
- 14. UIkit Animations и Core Animation
- 15. AVFoundation focus animation using Core Animation
- 16. iOS Core Animation Speed Up
- 17. Скриншот Core Animation на iPad
- 18. Любое предложение метода оптимизации для приложений Core Animation?
- 19. Изображение Изменение CALayer Core Animation
- 20. Core Animation - отдельные тайминги анимаций в группе
- 21. Core Animation, мой код не работает во второй анимации -iOS
- 22. Core Animation with contentsRect jerkiness
- 23. Сжатие немного больше производительности из Core Animation
- 24. Core Animation: Частота кадров
- 25. Какие части UIKit, Core Graphics, Core Animation, OpenGL разрешены для не основной темы?
- 26. Core Animation setFromValue
- 27. Советов для уменьшения использования памяти Core Animation
- 28. Core Animation and drawRect:
- 29. Core Animation Последовательность изображений
- 30. Core Animation и NSTimer
Что конкретно происходит при использовании Core Animation косвенно? Я знаю сильный совет против смешивания Core Animation и OpenGL на экране, но что делать, если CALayer никогда не добавляется в представление? – 2010-03-07 00:40:51
Возможно, я что-то неправильно понимаю, но если вы визуализируете свою сцену с помощью OpenGL ES, вам не нужно вообще использовать Core Animation. Посмотрите на этот простой пример от Apple: http://developer.apple.com/iphone/library/samplecode/GLES2Sample/index.html У них есть UIView без CALayer. – Pavel
Я говорю об использовании возможностей анимации Core Animation для анимации чего-либо в OpenGL. CALayer, который я использовал бы, не будет отображаться на экране. Вместо этого он будет анимирован, чтобы я мог посмотреть, где должна быть анимация (в соответствии с CALayer) и нарисовать объект OpenGL на экране. Таким образом, я получил бы много много бесплатно, вместо того, чтобы писать свой собственный движок анимации. – 2010-03-07 19:25:33