Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
tomkis
Založen: 06. 06. 2011 Příspěvky: 33
|
Zaslal: 22. leden 2012, 14:55:26 Předmět: Skinned modely |
|
|
Ahoj,
již nějakou dobu se snažím do svého enginu(XNA) dostat 3D modely podporujicí GPU skinning.
Začal jsem u collady, po dlouhodobém pročítání specifikace jsem zjistil, že to není zrovna úplně optimální formát(stejně bych musel udělat exporter do svého binárního formátu) protože je strašně komplexní.
Potom jsem prošel všechny ty prehistorické formáty typu MS3D, MD2 etc.. až jsem narazil na MD5 který se mi již opravdu zamlouval protože.
1) vypadal jednoduše
2) byl game engine "suitable" narozdíl např. od collady
Bohužel mě trošku mrzel jeho návrh který byl původně pro CPU skinning a po nějaké delší době implementace, kdy se mi opravdu povedlo naimportovat správně data se mi ho bohužel nepovedlo vyrendrovat(vert pozice se počítá pomocí vektoru pozice jointu, quaternionu jointu, pozice weightu a weight bias)... a tak po dlouhodobém hledání na internetu jsem ve skutečnosti došel k těmto třem bodům
1) Formát modelu je příliš komplexní a komplikovaný
2) Textový formát stejně bude pomalý
3) Neexistuje žádný open formát který by přesně padl na model "GPU skinningu"
Říkám si proto dost, proč nenapsat vlastní exporter. Bohužel se pro mě naskýtá pouze blender o kterém jsem zjistil, že jeho exportní pluginy jsou tak trochu "magic".
Moje představa o formátu je velmi jednoduchá.
1) Bude binární (není to podmínka)
2) Specifikace bude v tomto duchu
Hlavička, počet meshů, pro každý mesh každý vertex který bude obsahovat pozici, texcoord počet weights a jednotlivé weights pro daný joint.
Poté seznam jointu (hierarchie) s jejich bind pose maticemi.
A nakonec jednoduché animační data které budou za sebou. Ve tvaru
čas, id jointu, transformační matice.
Myslím, že takovýto formát by byl naprosto ideální a dostačující. Proto se Vás ptám, existuje něco takového? Příp. může někdo poskytnout článek (cokoliv) k vytvoření exporteru?
Díky. |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 22. leden 2012, 15:28:41 Předmět: |
|
|
Zkus tohle (MD5):
http://3dgep.com/?p=1356 _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 22. leden 2012, 16:04:44 Předmět: |
|
|
Collada je sice komplexní, ale celkem slušný import se dá napsat během týdne (bez podpory animací). Navíc Blender nebo Max exportují do collady pořád jedním způsobem, takže pokud se odladí tak pak načítá skoro všechny exportované modely v pohodě a bez chyb.
Rozhodně bych nepoužíval 3ds apod starší formáty.. Například 3ds trpěl zásadním problémem v pojmenovávání textur, kdy povoloval max. délku několik znaků a když se model editoval a exportoval tak se často zničil. _________________ Perry.cz |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 22. leden 2012, 16:53:42 Předmět: |
|
|
Ad MD5:
Proč by neměl být suitable pro GPU skinning, toto je věc jak si to interně rozvrhneš v paměti, jak napíšeš Skinning shader (nebo Skinning OpenCL program - který v tomto případě bude snazší, možná i rychlejší).
Psát vlastní exportér je velká ztráta času, můžeš použít Colladu nebo FBX - ty načítat do editoru (či si napsat klidně jednoduchý command line convertor) a z něj ukládat vše tak, jak to je uložené v paměti (rychle se to bude načítat, snadno se ti s tím bude pracovat). Note: Collada ani FBX nejsou určené do finálního produktu.
Nevím proč by měly být exportní pluginy pro Blender "magic", můžeš to napsat jak přes Python script (řeší se to myslím tady - http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Advanced_Tutorials/Python_Scripting/Export_scripts), nebo - Blender je Open source, tak si prostě vzít zdroják, dopsat si vlastní a zkompilovat. _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
igor

Založen: 28. 07. 2007 Příspěvky: 196
|
Zaslal: 22. leden 2012, 16:56:18 Předmět: |
|
|
Pokud si trochu rozumíš s C/C++, tak můžeš k importu/konverzi celkem pěkně využít Open Asset Import Library http://assimp.sourceforge.net/ Dokáže to načíst tunu formátů a má to celkem hodně featur, které se občas hodí (různé optimalizace meshů, převody mezi LHS/RHS, triangulace etc etc). Pokud se trochu pohrabeš v tom, jak je tam scéna ukládána do těch jejích struktur, tak napsat importer/konvertor modelů a animací je pak celkem hračka. |
|
Návrat nahoru |
|
 |
tomkis
Založen: 06. 06. 2011 Příspěvky: 33
|
Zaslal: 22. leden 2012, 19:18:05 Předmět: |
|
|
igor napsal: |
Pokud si trochu rozumíš s C/C++, tak můžeš k importu/konverzi celkem pěkně využít Open Asset Import Library http://assimp.sourceforge.net/ Dokáže to načíst tunu formátů a má to celkem hodně featur, které se občas hodí (různé optimalizace meshů, převody mezi LHS/RHS, triangulace etc etc). Pokud se trochu pohrabeš v tom, jak je tam scéna ukládána do těch jejích struktur, tak napsat importer/konvertor modelů a animací je pak celkem hračka. |
Díky tohjle mi hodně pomohlo, ta knihovna je perfektní + má skvělou dokumentaci. Přesně něco takového jsem potřeboval  |
|
Návrat nahoru |
|
 |
Manox

Založen: 30. 07. 2007 Příspěvky: 140 Bydliště: Brno
|
Zaslal: 23. leden 2012, 15:12:41 Předmět: |
|
|
Jen nechápu, proč jsi nepoužil formát .fbx, který je v XNA dobře podporovaný a přidat animace v kódu není moc problém, dokonce je na to návod i na App Hub. |
|
Návrat nahoru |
|
 |
tomkis
Založen: 06. 06. 2011 Příspěvky: 33
|
Zaslal: 23. leden 2012, 17:06:48 Předmět: |
|
|
Manox napsal: |
Jen nechápu, proč jsi nepoužil formát .fbx, který je v XNA dobře podporovaný a přidat animace v kódu není moc problém, dokonce je na to návod i na App Hub. |
Dobrá otázka.
1) Moc se mi nelíbí content pipeline v XNA
2) Je to dost uzavřené
3) Je mnohem lepší mít vlastní implementaci tak zásadní věci jako jsou modely, protože kdykoliv člověk potřebuje něco rozšířit, není ničím limitován. |
|
Návrat nahoru |
|
 |
Manox

Založen: 30. 07. 2007 Příspěvky: 140 Bydliště: Brno
|
Zaslal: 23. leden 2012, 18:28:35 Předmět: |
|
|
1) prvně jsem měl taky takový pocit, ale naopak je to docela dobrá věc
2) do content pipeline si můžeš udělat vlastní importéry, včetně fbx
3) mám celý svoji správu animovaného modelu, pomocí content a s využitím importéru z XNA a nenapadá mě co by mi chybělo |
|
Návrat nahoru |
|
 |
cooty125

Založen: 22. 11. 2011 Příspěvky: 40
|
Zaslal: 24. leden 2012, 10:35:25 Předmět: |
|
|
Manox napsal: |
1) prvně jsem měl taky takový pocit, ale naopak je to docela dobrá věc
2) do content pipeline si můžeš udělat vlastní importéry, včetně fbx
3) mám celý svoji správu animovaného modelu, pomocí content a s využitím importéru z XNA a nenapadá mě co by mi chybělo |
Souhlasím!
Jednoznačně jsem osobně zvolil cestu přez formát FBX 2008, (export z Autodesk 3d studio max verze 9). Vše funguje jak má, a v XNA si v contentu vytvoříš importery jak pro animace, tak pro textury čí normal mapy a specular mapy.
Co se týče flexibility, na tom formát FBX už lépe být ani nemůže. Při dobrém nastavení exportéru v 3ds maxu, se do formátu FBX2008 zapíše v podstatě vše. LSnadno se dají ze scény načíst i světla a další objekty. _________________ Programátor v C# XNA a 3D Grafik.
http://www.xna.mzf.cz/
http://www.czechcode.hu.cz/ |
|
Návrat nahoru |
|
 |
franz
Založen: 30. 07. 2007 Příspěvky: 1325
|
Zaslal: 24. leden 2012, 11:28:15 Předmět: |
|
|
zas tak slavné to není |
|
Návrat nahoru |
|
 |
cooty125

Založen: 22. 11. 2011 Příspěvky: 40
|
Zaslal: 24. leden 2012, 12:39:10 Předmět: |
|
|
franz napsal: |
zas tak slavné to není |
No nevím co víc od toho očekávat, takže pro mně je to více než dostačující.  _________________ Programátor v C# XNA a 3D Grafik.
http://www.xna.mzf.cz/
http://www.czechcode.hu.cz/ |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 24. leden 2012, 13:51:18 Předmět: |
|
|
mírný offtopic o Colladě:
perry napsal: |
Collada je sice komplexní, ale celkem slušný import se dá napsat během týdne (bez podpory animací). Navíc Blender nebo Max exportují do collady pořád jedním způsobem, takže pokud se odladí tak pak načítá skoro všechny exportované modely v pohodě a bez chyb. |
Tak to si dovoluji ostře nesouhlasit :-). XSD specifikace collady má přes 11000 řádků (1.4ka). Chápu, že stačí načíst jen něco, ale i tak je psaní importeru na colladu dost psycho. A už vůbec neni pravda, že by různé exportery ukládaly colladu stejně. Je to anarchie. Zkusil jsem SketchUp, Max (asi 3 exportery) a všechno bylo vyexportovaný totálně jinak. Specifikace je bohužel tak univerzální, až je nejednoznačná. Nemluvě o tom, jak jsou ty exportery (co jsem zkoušel) zabugovaný. Aby ne... _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
|