Eure Erfahrungen mit skeletaler Animation?
Verfasst: 07.03.2011, 12:59
Hallo Leute,
ich habe eine Frage:
Wie sind eure Erfahrungen bezüglich skeletaler Animation (bones updaten + skinning)?
Ich habe ein System, welches - momentan nur - Doom3 DM5-Modelle laden kann und diese animiert darstellt. Dabei kann es mehrere Animationen zusammenmischen.
Das Berechnen des „aktuellen“ Skelettes für einen Charakter geschieht komplett auf der CPU. Das Skinning im Anschluss auch. Geschichten wie inverse Kinematik sind nicht vorgesehen.
Nun ist das Ganze ja doch ein ziemlicher Aufwand. Um das Ganze etwas zu beschleunigen, habe ich weiterhin etwas mit Multithreading experimentiert und diese Updates() vom Show() abgekoppelt (2 Puffer).
Das Ganze läuft ganz gut, auch in einer Szene, in der 4-5 Charaktere gleichzeitig zu sehen sind + (statische Weltgeometrie). Ich denke, auf meinem aktuellen System 3GHz Core2Quad (2 Threads fürs Animieren und Skinnen) machts den Kohl auch nicht fett, wenn noch ne handvoll Charaktere dazu kommen, aber ich habe Bedenken, was größere Ansammlungen von Charakteren angeht.
Sicher kann man das Updateintervall z.B. in Abhängigkeit von der Entfernung zur Kamera etwas heruntersetzen, aber „richtig Punkte“ bringt das auch nicht.
Ich möchte diesen Prozess aus verschiedenen Gründen auch gern auf der CPU behalten und nicht auf die GPU schieben. Dies geschieht zu einen, da ich mit stencil shadows experimentiert habe und ich mit weiterhin nicht sicher bin, ob es sinnvoll ist, in einem Szenario mit möglichst vielen verschiedenen Charakteren die ganzen Geometrie-Daten auf die GPU zu schieben.
Einen genauen Benchmark muss ich noch vorbereiten, dann kann ich genauer sagen, viel Updates pro Sekunde bei welchen und wie vielen Charakteren ich schaffe.
Wie macht Ihr das? Wie löst Ihr das Problem „Monsterhorden stürmen auf euch zu“? Doch GPU? :?:
Wie gesagt, mein Problem ist nicht akut und eigentlich auch kein „Problem“, aber ich wäre für Denkanstöße dankbar. Ich bin einfach mal neugierig...
Beste Grüße
ich habe eine Frage:
Wie sind eure Erfahrungen bezüglich skeletaler Animation (bones updaten + skinning)?
Ich habe ein System, welches - momentan nur - Doom3 DM5-Modelle laden kann und diese animiert darstellt. Dabei kann es mehrere Animationen zusammenmischen.
Das Berechnen des „aktuellen“ Skelettes für einen Charakter geschieht komplett auf der CPU. Das Skinning im Anschluss auch. Geschichten wie inverse Kinematik sind nicht vorgesehen.
Nun ist das Ganze ja doch ein ziemlicher Aufwand. Um das Ganze etwas zu beschleunigen, habe ich weiterhin etwas mit Multithreading experimentiert und diese Updates() vom Show() abgekoppelt (2 Puffer).
Das Ganze läuft ganz gut, auch in einer Szene, in der 4-5 Charaktere gleichzeitig zu sehen sind + (statische Weltgeometrie). Ich denke, auf meinem aktuellen System 3GHz Core2Quad (2 Threads fürs Animieren und Skinnen) machts den Kohl auch nicht fett, wenn noch ne handvoll Charaktere dazu kommen, aber ich habe Bedenken, was größere Ansammlungen von Charakteren angeht.
Sicher kann man das Updateintervall z.B. in Abhängigkeit von der Entfernung zur Kamera etwas heruntersetzen, aber „richtig Punkte“ bringt das auch nicht.
Ich möchte diesen Prozess aus verschiedenen Gründen auch gern auf der CPU behalten und nicht auf die GPU schieben. Dies geschieht zu einen, da ich mit stencil shadows experimentiert habe und ich mit weiterhin nicht sicher bin, ob es sinnvoll ist, in einem Szenario mit möglichst vielen verschiedenen Charakteren die ganzen Geometrie-Daten auf die GPU zu schieben.
Einen genauen Benchmark muss ich noch vorbereiten, dann kann ich genauer sagen, viel Updates pro Sekunde bei welchen und wie vielen Charakteren ich schaffe.
Wie macht Ihr das? Wie löst Ihr das Problem „Monsterhorden stürmen auf euch zu“? Doch GPU? :?:
Wie gesagt, mein Problem ist nicht akut und eigentlich auch kein „Problem“, aber ich wäre für Denkanstöße dankbar. Ich bin einfach mal neugierig...
Beste Grüße