Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
1Pupik1989
Založen: 06. 02. 2013 Příspěvky: 58
|
Zaslal: 14. březen 2013, 00:35:34 Předmět: 3D Javascript promítání modelu a zvýšení rychlosti |
|
|
Zdravím všechny uživatele tohoto fóra.
Je to asi tři měsíce, co jsem se rozhodl opět pokračovat ve své hře. Píšu jí v javascriptu a zobrazuji v canvasu. Napsal jsem si základní objekty pro matice, vektory, kameru, scénu, render a další. Dokážu model promítnout do screen space, to už řešit netřeba. Můj problém je ale vědět co mám vykreslit. Respektive to co nebude viditelné (za nějakými polygony), tak to už vykreslovat nechci. Backface Culling mám, ten maká podle mě normálně, tak alespoň tam něco ušetřím.
No a moje otázka zní: "Neví někdo jak zjistit co nejméně náročným způsobem, který polygon se má vykreslit a který ne?" Případně pokud někdo ví o nějakém návodu, kde to berou od A do Z, tak bych byl rád.
Děkuji všem za odpovědi, kdyžtak otázku rozvinu nebo postnu obrázek, kde označím problém na Konvici z Utahu. |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 14. březen 2013, 10:07:56 Předmět: |
|
|
Asi tam máš nějakou obdobu normalized device coordinates. Souřadnice přepočítané do tohoto formátu je snadné otestovat, jestli leží ve viditelném rozsahu (-1, 1 v každém směru). Toto lze dál rozšiřovat o hierarchické ořezávání, např. pomocí quadtrees, octrees atd. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
|
michalferko
Založen: 29. 09. 2008 Příspěvky: 83
|
Zaslal: 14. březen 2013, 11:42:23 Předmět: |
|
|
Ja som to pochopil tak, ze ti tam chyba Z-buffer.
Dalej by to mozno chcelo na polygonoch robit orezavanie do okna, na to je kopa algoritmov. Napr. http://en.wikipedia.org/wiki/Sutherland?Hodgman_algorithm je vseobecny pre orezavanie polygonu polygonom. Tam treba riesit veci ako ked sa ti polygon rozbije na dva atd.
Ale podla mna teda chces ten Z-buffer, co by si do existujucej pipeline mal vediet zahrnut velmi jednoducho (ked uz robis projekcie do screen space). _________________ Moje minihry a ine projekty |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 14. březen 2013, 12:10:54 Předmět: Re: 3D Javascript promítání modelu a zvýšení rychlosti |
|
|
Souhlasím, že to, co asi chceš, je z-buffer. O obecném 2d ořezávání polygonu polygonem bych neuvažoval ani teoreticky
Pokud máš statickou scénu, nařež si ji do bsp, udělej si span buffer a kresli zepředu dozadu (painter), dokud nevyplníš obrazovku. Při té příležitosti můžeš dělat rychlý z-fill na spany.
A modely pak klasicky z-bufferem, pokud ti to JS utáhne.
Nejdřív bych si asi udělal frustum culling, pak low level clipping geometrie a až pak bych asi řešil něco dál (pokud to už takhle neděláš). |
|
Návrat nahoru |
|
|
1Pupik1989
Založen: 06. 02. 2013 Příspěvky: 58
|
Zaslal: 14. březen 2013, 12:12:35 Předmět: |
|
|
Ořezávání polygonů jsem zatím neřešil, na zkoušku promítám pořád jen do centra prostoru screen space. Z-buffer, ano to je přesně ono. Octrees ale vypadá co se týče náročnosti lépe, nahradil bych ho místo třídění. Teď to chybí jen celé napsat. Ve WebGL to mají vyřešené, tam už Z-Buffer i Backface-Culling je, bohužel u 2D plátna nemá proč být.
Zatím vlastně proženu souřadnice modelu maticí MVP, setřídím podle Z a pošlu do plátna, viz. obrázek.
Textury a světla mám vyplé, abych viděl tu zadní stranu.
Frustum Culling bude už jen třešnička na dortu, když se mi povede vyřešit tento problém.
//edit: abych nezapomněl, jak psal frca, tak jestli jsou NDC ve viditelném rozsahu kontroluji. |
|
Návrat nahoru |
|
|
1Pupik1989
Založen: 06. 02. 2013 Příspěvky: 58
|
Zaslal: 8. únor 2014, 03:09:50 Předmět: |
|
|
Tak to skončilo na 1500 polygonech při rozlišení 1280x1024 na opeře 12.15, což je jeden z nejpomalejších prohlížečů. Víc asi ani nejde. Kdyby mě někdo nějaký tip, jak tomu dát na frak, tak nejsem proti. Zítra aktualizuju repozitář a zedituju příspěvek, abych přidal odkaz.
//edit: zde |
|
Návrat nahoru |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1536 Bydliště: u Prahy
|
Zaslal: 8. únor 2014, 15:26:57 Předmět: |
|
|
No vzhledem k tomu, že WebGL je už i v IE (od verze 11, kterou mám i ve starých sedmičkách). _________________ Award-winning game developer |
|
Návrat nahoru |
|
|
1Pupik1989
Založen: 06. 02. 2013 Příspěvky: 58
|
Zaslal: 8. únor 2014, 17:04:33 Předmět: |
|
|
Tak to je jentak z nudy. Chtěl jsem jen pochopit 3D. Podporu WebGL mám skoro hotovou, akorát ještě pár dodělávek mi chybí. Tohle je spíš zobrazovač 3D modelů z Wavefront OBJ a 3DS souborů.
Já mám na Windows 7 IE 8. |
|
Návrat nahoru |
|
|
|