Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.01.2011, 14:18

das richtige Keyframe finden

Hallo,

ich versuche gerade zu verstehen wie ich bei einer Animation das richtige Keyframe herausfinden kann.
Nach dem laden der Modeldatei (md5) habe ich ja die Framerate woraus ich bestimmen kann zu welchem Zeitpunkt welches Keyframe kommen muss, aber wie wende ich diese Information richtig an? Wenn ich ganz simpel eine Abfrage mache ob der Zeitpunkt des Keyframes überschritten ist weiß ich ja nicht an welcher Stelle ich bei der Interpolation bin [0 ,1]. Ich hoffe man versteht was ich meine 8)

Berechnet man das ganze eigendlich am besten auf der cpu oder gpu? Verwende imo dx9, weiss aber noch nicht ob ich auf dx11 umstellen soll.

danke schonmal Ludwig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

17.01.2011, 19:24

Du brauchst zum interpolieren ja zwei Keyframes, nämlich den letzten dessen Zeit <= der aktuellen ist und dessen Nachfolger. Oder anders rum den ersten dessen Zeit >= der aktuellen ist und dessen Vorgänger. Den Interpolationsfaktor bekommst du dann einfach so:
§ \frac{t - t_1}{t_2 - t_1} §
wobei §t_1§ und §t_2§ die Zeiten des ersten und zweiten Keyframe und §t§ die aktuelle Zeit sind.

Die Animation an sich (Interpolation der Keyframes, etc.) berechnet man normal auf der CPU (wäre natürlich möglich das auf der GPU zu berechnen, wird nur nicht immer sinnvoll sein). Das Skinning, also das eigentliche "bewegen" des Modells, macht man dann aber über einen entsprechenden VertexShader auf der GPU.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (17.01.2011, 19:48)