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

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 17. leden 2010, 11:58:30 Předmět: Pohyblivé modely |
|
|
Jak se řeší pohyblivé modely ve hrách ? Třeba točení kol u aut, vrtule u letadel apod.
Zatím to řeším tak, že pomocí transformační matice hýbu jenom určitou částí modelu (sub-chunkem), ale to mi nepřijde moc efektivní.
A za druhé, pokud mám model, který má hodně dílů (třeba 20) - tělo, okna, kola, dveře, detaily.... Jak se s takovýmto modelem pracuje ? Sloučí se všechno do jednoho dílu (ovšem jak pak přepínat textury / materiály / barvy) nebo se přistupuje k problému nějak jinak.
Nikde jsem moc práci s modely v DirectX scéně nenašel |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 18. leden 2010, 11:05:37 Předmět: |
|
|
K první otázce: Děláš to správně, ovládá se to transformační maticí. Pokud bys nechtěl mít model rozdělenej z nějakých důvodů na více submeshů, můžeš hýbat vybranýma vertexama ve vertex shaderu. Vybereš je nějakým dalším atributem vertexu (případně podle texturového coordinátu). Ale výkon bude stejnej a objem dat větší, jen ušetříš těch pár drawcallů (ale i to se může někdy hodit). Zůstaň u matice.
K tomu druhému: Je lepší mít seskupené vše co lze seskupit. Většinou se to dělá tak, že poučíš grafiky, co je dobré a co není. Dobré je používat co nejméně materiálů a tím pádem i co nejméně objektů. Tak třeba auto: jeden materiál na kastli, jeden na sklo, jeden na gumy. Samozřejmě například dveře nebudeš mít ve stejném meshi jako kastli, abys s nima mohl hýbat, ale můžou mít stejný materiál.
V enginu pak můžeš kreslit podle materiálu:
1) nahodíš materiál
2) vykreslíš všechy objekty v pohledu co ho používají (kastle, všechny dveře)
Osvícený grafik je půlka performance... _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 18. leden 2010, 15:17:43 Předmět: |
|
|
A k čemu se používá kostra modelu. Někdo mi radil, ať dělám pohyb pomocí kostry (kosti a tělo), ale na netu jsem nic pořádně nenašel a údajně je to nějaký složitější.
Btw. s modely mám problém, protože v ničem modelovat neumím. Mám modely stažené z webu, jenomže tam je pak problém, že jsem podřízen tomu, že mají extrémní množství detailů, hodně sub-chunků. Snažil jsem se to pospojovat v 3D Maxu, ale nějak bez výsledku :-/ |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 18. leden 2010, 15:48:43 Předmět: |
|
|
Kostra modelu: http://en.wikipedia.org/wiki/Skeletal_animation
Mesh je rozdělen na části, a ty mají vlastní transformační matice (bývají relativně vůdči rodičovské "kosti"). Tak můžeš třeba hýbat rukou postavy. Na netu pravděpodobně najdeš jen obecné povídání nebo konkrétní implementaci, která ti nemusí sedět.
S těmi modely z internetu není chyba na tvé straně, to je prostě daň za jejich používání. Třeba zjistíš, že je ve výsledku jednodušší se základní modelování naučit sám, i kdyby šlo o "ilustrační" modely o 20-100 polygonech, které pak případně vyměníš za hezčí od později získaného grafika (podle mě je rozdíl sehnat grafika na hru, ze které nic není, a na hru, která je plně funkční). _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 18. leden 2010, 16:36:13 Předmět: |
|
|
Kosti jsou vhodný na postavy a obecně modely, kde chceš měnit tvar (ohlá ruka, atp. ).
Pospojovat modely v maxu je snadný. Označíš jeden objekt, dáš ruhým tlačítkem Convert to Editable Poly (pokud už neni) a v modify panelu (viz help) zvolíš attach. Pak klikáš na to co chceš připojit. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 18. leden 2010, 19:52:35 Předmět: |
|
|
Díky... už se mi to podařilo spojit v tom Maxu... Výkon se zvednul
Ještě dotaz... dělá se transformační matice pro každý chunk ? Zatím to tak mám, ale nevím jestli je ideální pořád násobit matice (když zase udělám ovšem pro statické části jednu, tak pak začne být "bordel" v kódu a přestane být univerzální.. víceméně se mi vztahuje potom model renderer na jeden model, což i taky nepřijde ideální) |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 19. leden 2010, 11:13:45 Předmět: |
|
|
Pro každý ten chunk stejně zavádíš nějakou transformační matici, ne? Je jen Otázka kde je vezmeš a jak se počítají. Já tyhle výpočty do rendru zásadně netahám, renderovatelný objekty u mě mají jen nějakou funkci GetWorldMatrix(). Matice se reálně berou a počítají ve SceneTree. O tom tady už bylo jedno téma:
http://www.ceske-hry.cz/forum/viewtopic.php?t=1947&highlight=scene+graph _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
|