.[ ČeskéHry.cz ].
3D Javascript promítání modelu a zvýšení rychlosti

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Web Development
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
1Pupik1989



Založen: 06. 02. 2013
Příspěvky: 58

PříspěvekZaslal: 14. březen 2013, 00:35:34    Předmět: 3D Javascript promítání modelu a zvýšení rychlosti Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1553

PříspěvekZaslal: 14. březen 2013, 10:07:56    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
michalferko



Založen: 29. 09. 2008
Příspěvky: 83

PříspěvekZaslal: 14. březen 2013, 11:42:23    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 602

PříspěvekZaslal: 14. březen 2013, 12:10:54    Předmět: Re: 3D Javascript promítání modelu a zvýšení rychlosti Odpovědět s citátem

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 Smile
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
Zobrazit informace o autorovi Odeslat soukromou zprávu
1Pupik1989



Založen: 06. 02. 2013
Příspěvky: 58

PříspěvekZaslal: 14. březen 2013, 12:12:35    Předmět: Odpovědět s citátem

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. Very Happy

//edit: abych nezapomněl, jak psal frca, tak jestli jsou NDC ve viditelném rozsahu kontroluji.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
1Pupik1989



Založen: 06. 02. 2013
Příspěvky: 58

PříspěvekZaslal: 8. únor 2014, 03:09:50    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1533
Bydliště: u Prahy

PříspěvekZaslal: 8. únor 2014, 15:26:57    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
1Pupik1989



Založen: 06. 02. 2013
Příspěvky: 58

PříspěvekZaslal: 8. únor 2014, 17:04:33    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Web Development Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna