Nutzung der Kernanimation für Animation in OpenGL

8

Ich bin daran interessiert, Core Animation zu verwenden, um benutzerdefinierte Animationen in meiner OpenGL-Szene auf dem iPhone zu steuern. Ich hatte gehofft, einen Mechanismus zu finden, mit dem Sie einen Keypath eines NSObject oder eine Delegate-Methode für jeden Animations-Tick generisch animieren können. Ich habe eine beliebige Eigenschaft eines CALayers animiert und von OpenGL abgefragt, um den Fortschritt der Animation zu bestimmen. Ich bin jedoch überzeugt, dass es einen besseren Weg dafür gibt. Was ist der sauberste und sicherste Weg, diese großartige Animations-Engine zu nutzen?

    
genpfault 06.03.2010, 02:18
quelle

4 Antworten

3

Ich vermute, was Sie wirklich wollen, sind nur die Beschleunigungsfunktionen, die von der Kernanimation verwendet werden. Diese sind leicht zu finden mit ein wenig googeln. Hier ist ein Beispiel:

%Vor%

Sie geben an, wie weit Sie in Ihrem Tween sind (elapsedTime / tweenDuration) und wie viel Prozent Sie durch die "Timeline" des Tweens erhalten sollten.

    
user360092 07.07.2010 14:30
quelle
1

Ich habe versucht, etwas Ähnliches zu tun. Ich aktualisiere eine Gl-Ansicht basierend auf ihrer Position in ihrem Elternteil während einer CA-Animation. Ich bekam ähnliche Ergebnisse, abgehackte Animationen, die nicht mit der CA-Animation synchron waren. Ich entschied mich schließlich, mit der Verwendung von CA aufzuhören und eine andere Interpolations-Engine zu verwenden. Jetzt verwende ich PRTween . Es funktioniert sehr gut. Ich bin mir sicher, dass es einige Nachteile gibt (Ihre Animationen laufen auf dem Hauptthread, das Interface ist nicht so schön wie CA und es ist ein kleiner Buggy), aber meine Animationen laufen reibungslos.

    
Tylerc230 12.07.2012 15:46
quelle
0

Wenn Sie die Ansicht selbst animieren möchten, lesen Sie iPhone UIView Animation Best Practice . Für Animationen innerhalb der OpenGL-Ansicht ist es besser, animierte Modelle oder benutzerdefinierten Code zu verwenden, nicht jedoch Core Animation.

    
Pavel 06.03.2010 08:31
quelle
0

Dies ist möglich, um Core Animation zu verwenden, um zu steuern, was immer Sie wünschen. Ich bin mir sicher, dass es auch für Sound verwendet werden kann! (Gegeben eine kleine Unterklasse von CALayer). UIKit und Core Animation lassen sich mit etwas Vorsicht ganz leicht mischen, da es auch CAEAGLLayer gibt, mit dem wir spielen können.

Der Schlüssel hier ist - (id) presentationLayer und - (id) modelLayer für die Verwendung von reinem / nur OpenGL; Natürlich kann auch die Hierarchie für Ihre OpenGL-Szene verwendet werden. Aber auch die Verwendung von CALayer für das Rendering wird noch "kostenlos", wenn dies für Ihre Umstände möglich ist (siehe auch CATransformLayer), wenn Sie das suchen! =)

    
humasect 28.06.2010 15:13
quelle