Hallo....
ich habe es vor ca. einer Woche hinbekommen, dass ich 2 Objekte in meine Anwendung lade und dazwischen morphe. So weit so gut!
Jetzt würde ich das gerne auf Key-Frames erweitern. Ich habe gelesen, dass das X-Format angeblich kein Morphing unterstützt? Ich habe jetzt aber in D3s Max ein Objekt erstellt und darauf den Morpher Modifier angewendet und das ganze in 3 Key Frames animiert.
Hier ein Ausschnitt aus der X-Datei:
AnimationSet Anim-1 {
Animation Anim-Box01 {
{ Box01 }
AnimationKey {
0;
2;
0;4;-1.000000,0.000000,0.000000,0.000000;;,
2400;4;-1.000000,0.000000,0.000000,0.000000;;;
}
AnimationKey {
1;
4;
0;3;1.000000,1.000000,1.000000;;,
160;3;1.000000,1.000000,1.000000;;,
1600;3;1.000000,1.000000,1.000000;;,
2400;3;1.000000,1.000000,1.000000;;;
}
AnimationKey {
2;
4;
0;3;-1.484612,0.000000,23.107712;;,
160;3;-1.484612,0.000000,23.107712;;,
1600;3;-1.484612,0.000000,23.107712;;,
2400;3;-1.484612,0.000000,23.107712;;;
}
}
Animation Anim-Box02 {
{ Box02 }
AnimationKey {
0;
2;
0;4;0.000000,-1.000000,0.000000,0.000000;;,
2400;4;0.000000,-1.000000,0.000000,0.000000;;;
}
AnimationKey {
1;
2;
0;3;1.000000,1.000000,1.000000;;,
2400;3;1.000000,1.000000,1.000000;;;
}
AnimationKey {
2;
2;
0;3;24.855389,0.000000,23.107712;;,
2400;3;24.855389,0.000000,23.107712;;;
}
}
Animation Anim-Box03 {
{ Box03 }
AnimationKey {
0;
2;
0;4;0.000000,-1.000000,0.000000,0.000000;;,
2400;4;0.000000,-1.000000,0.000000,0.000000;;;
}
AnimationKey {
1;
2;
0;3;1.000000,1.000000,1.000000;;,
2400;3;1.000000,1.000000,1.000000;;;
}
AnimationKey {
2;
2;
0;3;50.805386,0.000000,23.107712;;,
2400;3;50.805386,0.000000,23.107712;;;
}
}
}
Bei diesem Beispiel handelt es sich einfach um eine Box, die verschieden verformt wird.
Nun zu DirectX. Ich stelle mir das ganze so vor, ich lade das Objekt mit der Funktion D3DXLoadMeshHierarchyFromX. Danach habe ich ja die Frames... also die 3 Boxen. So, angenommen es sind nicht einfach nur 3 Boxen sondern komplexere Sachen und mehrere Animationen, dann kann ich nicht einfach zwischen allen Boxen morphen. Also wenn Animation 1 von KeyFrame 0 bis 20 geht und Anmation 2 von 21 bis 50 usw.
Dafür gibt es ja den AnimationController, der mir den Zugriff auf die einzelnen Animationen erlaubt.
Daher nun meine Frage...
Funktioniert das überhaupt so, wie ich es mir bisher denke? Hat jemand soetwas schon gemacht und kann mir ein Beispielprogramm zeigen?
Der AnimationController hat ja eine Methode AdvanceTime... funktioniert diese mit Morphing? Ich habe nur das Beispiel mit Skinning gesehen, was beim SDK dabei ist. So wie ich es sehe, wird es nicht gehen? Was aber doch dann gehen müsste, ist das manuelle Auslesen der AnimationKeys.
Mich würden einfach mal Tipps interessieren wie ihr das machen würdet.
Danke!