meine neue Engine soll es ermöglichen, sämtliche Objekte und dessen Eigenschaften über eine globale Keyframe timeline zu animieren. Ich rede hierbei nicht von Skinned Meshes sondern von den Eigenschaften der Objekte selbst wie z.b. Position und Rotation. Nun frage ich mich wie man sowas am besten aufbaut. Für jede Property die über Keyframes animiert werden könnte brauch ich ja immer zwei Werte (Aktuell und Original).. Ich würde jetzt für jeden Werte Typ eine eigene Klasse z.b. KeyFrameAbleVector erstellen, welche diese beiden werte beinhaltet und später in jedem Keyframe einen clone speichern..
Gibts vielleicht einen besseren Ansatz oder irgendein Patentrezept?
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Ich habe es so gelöst: Eine Klasse Animationen erstellen. Jedes Animationsobjekt enthält ein array mit den keyframezeiten drin. Dann noch ein zweites array mit gleicher Länge dass die Positions und Rotationskoordinaten für den Keyframe enthält. Und du brauchst nur einen Wert: Aktuell! Die Ausgangs (Original)position sollte immer der erste Keyframe sein. Fals du genaueres brauchst ich erklärs gern exakter.
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Ich würde noch gar nicht so tief gehen an deiner Stelle. Du wirst den Prozess an mehren Stellen gebrauchen. Von daher solltest du hier so abstrakt wie möglich beginnen. Im Prinzip brauchst etwas ähnliches wie einen Iterator... nur halt für Uhrzeiten. Also zum Beispiel folgendes:
Code:
interface ITimeable<T> {
ITimer<T> GetTimer();
}
interface ITimer<T> {
T GetCurrent();
void Tick(Time t);
}
Wenn du also zum Beispiel ein Model nimmst dann erhälst:
Code:
class Model : ITimeable<Vertices>, ITimeable<Matrix> {
Nun so einfach ist es dann leider doch nicht Ich vergaß zu sagen, dass es nicht nur sachen wie Position oder Rotationen über Keyframes geändert werden sollten sondern einfach JEDE Eigenschaft eines Objektes. Das kann z.b. auch eine Visible eigenschaft oder der FOV eines Camera-Objektes sein. Alle "default" Werte in Key0 zu speichern macht auch keinen sinn, da man in meinem fall mehrere verschiedene Animationen für die gleiche Welt laden kann.
Mitglieder in diesem Forum: 0 Mitglieder und 56 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.