HTML

gondolataim elsősorban játékfejlesztésről

Elsősorban játékfejlesztés magyarul: az enginem fejlesztése során felmerülő problémák, ötletek, tévutak stb dokumentálása, amely számomra és talán mások számára is hasznos lehet később Másodsorban gondolatok szavakban...

Kapcsolat:
aalberik 'at' gmail 'dot' com

Haletető

Galéria

Címkék

Összes

Linkblog

Naptár

november 2024
Hét Ked Sze Csü Pén Szo Vas
<<  < Archív
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

Csontanim 2

2010.03.07. 15:38 :: syam

Ismét elérkezett az idő, hogy foglalkozzam a csontanimmal. Szerencsére a formátumom még mindig megállja a helyét, a kódom 90%-ban újrahasznosítható volt tehát a md5mesh/md5anim importáló gyorsan a rendelkezésemre állt.

Első dilemma

Azt mindenki tudja, hogy adott frame-hez tároljuk a csontok térbeli pozícióját és orientációját. Ennek azonban két változata lehetséges: mátrix alapú (későbbiekben M) ill. kvaternió + pozíció (későbbiekben QP) alapú. Az előbbi 12 floatot jelent az utóbbi 7 floatot. Interpoláláskor jelentkeznek a jelentős különbségek: M esetben egyszerű lineárisan interpolálni viszont az eredményt újranormalizálni kell. QP esetben - ami az ajánlott eset is - 3 floatot kell lineárisan interpolálni, a kvaterniót azonban szférikus-lineárisan kell interpolálni (avagy SLERP). A SLERP az első kritikus rész az animációban vagyis érdemes a SLERP implementációjára egy gyors megoldást keresni.

Második dilemma

Második kritikus rész a csont-vertex transzformálás. Ennek központi eleme, amikor adott vertexre alkalmazzuk a rá ható csontok QP-ját. Itt is két módszer lehetséges: közvetlenül a QP-t alkalmazzuk a vertexre vagy előbb a QP-t átalakítjuk mátrixszá. Tapasztalataim szerint az utóbbi a hatékonyabb. Megfigyelhető, hogy általánosságban gyakori az az eset amikor egy vertexre csak egy-kettő-három csont hat. Ezeket az eseteket külön érdemes kezelni, mert ez is sebesség kritikus rész.

Harmadik dilemma

A harmadikus kritikus rész már a rendereléshez tartozik. Tapasztalom szerint a vbo dupla bufferelése az esetek többségében nem kifizetődő - csak akkor mértem sebesség növekedést, ha legalább 4x rendereltem ugyanazt a modellt.

Konklúzió

Célszerű megoldani, hogy az adott animációs fázisban lévő modellt újrahasznosítsuk: rengeteg számolást spórolhatunk valamint nagyobb eséllyel kihasználhatjuk a dupla bufferelt vbo előnyeit is.

 

Szólj hozzá!

Címkék: csontváz

A bejegyzés trackback címe:

https://sakura7.blog.hu/api/trackback/id/tr211816349

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása