Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Manox

Založen: 30. 07. 2007 Příspěvky: 140 Bydliště: Brno
|
Zaslal: 22. září 2011, 15:57:17 Předmět: Animace postav pomoci textury |
|
|
Ahoj,
upravuju teď animační systém a přemýšlím, že bych jej předělal celý. Programuju v c# a XNA a rád bych, aby hra běžela i na Xboxu360. Tam je ale omezení na počet maticí, které se dají poslat do shaderu a to asi přibližně na 50. Naše modely ale mají kostí asi 70, musí se dělit do dvou meshu. Doteď jsem to tak měl, ale předělal jsem to trochu a vyhovovalo by mě, mít to vše při sobě. Našel jsem návod na webu NVidia jak se to dá udělat pomocí textury. Vypadá to docela dobře a teď váhám jestli to předělat na ten systém. Nemáte s tím někdo zkušenosti ? Nějaké výhody/nevýhody ?
http://http.developer.nvidia.com/GPUGems3/gpugems3_ch02.html
Pokud jsem to pochopil, jede to asi až od SM 3.0 což by pořád nemuselo až tak vadit, na Xboxu to jde. |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 22. září 2011, 20:42:53 Předmět: |
|
|
hm a taka vec ako uniform buffer object pod XNA nie je? i ked je mozne ze na to je treba SM4 _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Manox

Založen: 30. 07. 2007 Příspěvky: 140 Bydliště: Brno
|
Zaslal: 22. září 2011, 20:44:50 Předmět: |
|
|
Obavam se prave, ze uniform buffer neni na Xboxu a nejsem si jisty, jestli je vubec ve SM 3.0 co vyuziva posledni XNA |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
|
Návrat nahoru |
|
 |
Manox

Založen: 30. 07. 2007 Příspěvky: 140 Bydliště: Brno
|
Zaslal: 22. září 2011, 21:20:23 Předmět: |
|
|
Jenze to neni XNA, ktere je vazane na Xbox (a nove i Windows Phone 7) a tudiz DX 10 ani lepsi nepodporuje. A shadery ma max 3.0 a nejake rozsireni na Xbox |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 23. září 2011, 09:06:27 Předmět: |
|
|
No a aky je teda zasadny rozdiel medzi posielanim tych matic cez nejake konstanty alebo v texture? Teda okrem toho, ze do toho prveho sa nezmestis a to druhe vyzera fpoho?  _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
Manox

Založen: 30. 07. 2007 Příspěvky: 140 Bydliště: Brno
|
Zaslal: 23. září 2011, 11:02:32 Předmět: |
|
|
Textura projde, protoze neni v uniform, ktere jsou omezene. Nicmene tady je to mysleno jinak. Ta animace je ulozena v texture pred spustenim renderovaci smycky a pak jen rikas jaky snimek pouzit. Nevytvari se v kazdem kroku. Aspon tak to chapu, takze nemusis nic updatovat na CPU, zadne matice, jen ktery snimek pouzit.
Nakonec to ale asi poresim jinak. Zkousim podle navodu predelat system, kdy se neposilaji matice, ale dualquaternion coz je 2x4 float misto 4x4 float matice. Tim se posune i omezeni na priblizne 100 kosti, coz uz mi nevadi a hrave se do toho vlezou i nase postavy  |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 23. září 2011, 16:42:25 Předmět: |
|
|
Quaternion jsem jednou kodoval i do čtyřech bajtů (každý byl signed normalized, takže R8G8B8A8_SNORM). Trochu to skákalo, ale použít se to dalo. Když byl objekt na obrazovce dostatečně malý, nešlo to poznat. Důvod? Instancing: mohl jsem do kostantní paměti narvat opravdu velké množství transformací. To byl DX9 hw, takže tam jiná možnost asi ani nebyla.
Dneska bych použil nějaké chytřejší pakování. R11G11B10_SNORM by bylo lepší. Do toho se krásně uloží normalizovanej quaternion Q=(x,y,z,w) jako RGB=Q.xyz. Q.w se dá dopočítat z Q.xyz. Pokud by Q.w mělo být záporné, pošlu do shaderu -Q, tím si zajistím, že Q.w bude vždy kladné (jinak by to z Q.xyz nešlo spočítat). _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
|