Funderingar kring skeletal animations (MD5Mesh) & Light Pre-Pass. (Programmering)
Suttit och småpysslat på ett spel på fritiden i ungefär 1-2 år nu (i C++, med OpenGL), och precis slängt in stöd för skeletal animations samt MD5mesh-modellformatet (det Quake4 och Doom3 använder). Det funkar skitbra och så, men har en del funderingar över det; I skeletal animations så bestämmer ju mer animationen (och mindre gamelogic) positionering av modellen i sig, i och med att rootnode flyttas i "walk"-animationer osv. Detta till skillnad från det jag är van med (2D-sprites och "vanliga" 3danimationer), där man helt enkelt spelar animationen och separat flyttar på entityn/modellen/gubben i gamelogic.
Så nu måste jag alltså implementera något system för detta, något sånt här hade jag tänkt mig:
AssetManagern håller hand om alla Modeller, modellerna i sin hand håller hand om sina animationer (som laddas in från start via min resourceloading i assetmanagern). För att sedan rendera modellerna så har jag en Entity (har redan en scenegraph implementerat) som heter typ "MeshRenderer" eller något, som jag fäster på en node i min scen, denna meshrenderer håller alltså i en pekare till modellen i assetmanagern, och lite logic/info för att updatea & interpolera animationer separat ifrån varandra. Sen, för att låta Entityn styra Noden's position, så är frågan; Gör jag detta varje frame, eller på slutet av varje animation? Vad är bättre egentligen?
Gör jag det varje frame måste jag ju "interpolera" positionen varje frame, och när man släpper knappen och slutar röra gubben så kommer ju animationen bara barskt avbrytas..
Gör jag det efter varje animation måste jag på något sätt separera och hålla koll på både Node's position och Animationens RootJoint-position som verkar lite krångligt (i och med rotations i samband med collisions osv), men jag kan välja att få mycket mjukare "tweenade" animationer genom att spela upp en karaktär genom flera olika animationer där han tar ett steg i taget, så han alltid "tar klart" sitt steg när man släpper.
Vad tycker ni är bäst lösning på detta?
Nästa fråga;
Har börjat planera (och lägga grunden för) att implementera någon typ av Light Pre-Pass, men då jag är väldigt amatör inom både deferred lighting samt MD5-formatet så vill jag bara klargöra om kombinationen av dessa kommer krocka? Vet att det är rätt annorlunda maps osv i deferred lighting, och jag vill ju gärna ha kvar friheten man får av att jobba med material i deferred, så tänkte bara eftersom MD5-formatet har sina speciella "shader"-entries så undrar jag helt enkelt om nån kunnig kan svara på om ni ser något problem såhär på rak arm?
Tack på förhand! Hoppas min post inte blev helt för luddig Jobbat hela dagen med att få MD5 att funka så är smått slutkörd i huvudet just nu. Och hoppas inte detta blev överkurs för SweC, märkt att programmeringsdelen på detta forum oftast har rätt låg nivå (i termer av erfarenhet/kunskap, inte etik eller så).