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: 2. říjen 2010, 09:24:36 Předmět: |
|
|
No.. ono to teoreticky je dobře. Vertexy jsou sice stejné pozice, ale každý vertex má jinou normálu. Když načtu krychli, tak má 8 vertexů, ale už nemá 8 normál. Takže mi to skončí u toho, že mi to vertexy naduplikuje, ale pokaždé s jinou normálou / texCoordem apod.
Do IB je pak musím naházet ale oba, protože se kromě pozice liší. A separované VB pro normály a vertexy asi nejdou... nebo mi něco uniklo ?
Ten IB je tam vlastně zbytečný, protože při loadu z toho udělám pouze TriangleList do VB. Ale nějak mě nenapadá, jak to udělat s IB. Pokud bych uvažoval jenom vertexy, tak by to bylo OK.. ale jak poznám že vertex s normálou už je mezi vertexy.. to bych musel pořád všechno procházet a tím by stoupl load-time.
Např:
kód: |
...
<p>4 30 0 31 3 32</p>
..
|
Jedna stěna krychle. Vertexy jsou z pozic 4,0,3 - kdyby nebyly nastaveny normály, hodil bych do IB 4,0,3.. takhle ale mám dvojici 4-30, která tvoří vertex a na to abych zjistil, že už jsem ho jednou mezi vertexy přidal, bych musel projít celé akt. pole načtených. A to mi přijde dělat při každém vertexu jako sebevražda a load time bude x-násobně větší. Nebo je nějaké elegantní řešení ?
Nějak mi nenapadá jak elegantně (bez Brutal Force) collada soubory načítat a ukládat do IB, pokud mají nastaveny něco více než pozici... _________________ Perry.cz |
|
Návrat nahoru |
|
 |
pet
Založen: 11. 08. 2010 Příspěvky: 10
|
Zaslal: 2. říjen 2010, 13:12:58 Předmět: |
|
|
To je sice pravda, ale jen u ostrych hran, kterych obecne v modelech nebude mnoho. Pro hladky povrch budou mit vrcholy normalu shodnou. Vyuziti dobreho index bufferu umozni podstatne urychleni vykreslovani, protoze se bude na kartu posilat podstatne mene dat. Otazka nahravaciho casu by sla urcite vyresit tim, ze by se data neexportovala primo, ale jeste se prohnala utilitou, ktera by to optimalizovala, pri nahravani do hry by byl pouzit tento optimalni dataset. |
|
Návrat nahoru |
|
 |
Augi

Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 2. říjen 2010, 14:00:21 Předmět: |
|
|
Jak říká pet, v reálném modelu nebude ostrých hran (kde jsou vertexy se stejnými pozicemi a různými normálami) mnoho (jestli nějaké). Dokonalá krychle je opravdu extrémní případ.
Skupinám trianglů, které neobsahují ostré hrany, se říká "smoothing groups". |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 2. říjen 2010, 15:31:11 Předmět: |
|
|
Na doplnění: Blender nepoužívá smoothing groups, ale sharp edges, které má víc možností (například přechod mezi ostrostí a neostrostí hrany). Podle mě je to i intuitivnější.
 _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 2. říjen 2010, 15:55:12 Předmět: |
|
|
V debug verzi jsem nechtěl psát vlastní formát modelu, abych ho nemusel pořád předělávat, když přidám podporu něčeho nového (animace apod). Nicméně zatím obětuji load time.
Díky za rady. _________________ Perry.cz |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 17. říjen 2010, 16:48:55 Předmět: |
|
|
Tak jsem to přepsal na korektní IB / VB. Nicméně to letadélko je vážně tak "pokažené, že má velikost IB = velikost VB
Load Time se snížil v řádech ms, takže je to OK
Testovací Ferrari F40 (modrá barva není sice pro F40 typická, ale je zábava hrát si na modelu s barvičkama ) - volant je za tím pro mě ze záhadného důvodu vpravo místo vlevo.. resp. celé auto je zrcadlové otočené
Model dae size: 4MB
Number of textures: 21
Loading Time (dae structure): 800ms (bez použití IB byl čas něco málo přes 730ms)
Vertices: 60.000
Indices: 160.000 (3 indice = 1 triangle)
SubMeshes: 35
FPS: 550 (GF7900GTX, Core 2 Duo E6400 2.14Ghz, 5GB RAM) _________________ Perry.cz |
|
Návrat nahoru |
|
 |
|