Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Jarda9
Založen: 15. 12. 2013 Příspěvky: 2
|
Zaslal: 15. prosinec 2013, 20:46:07 Předmět: OpenGL - třídění poloprůhledných ploch |
|
|
hledam nejaky algoritmus na trideni ploch pro spravne zobrazeni polopruhlednych ploch. Plochy jsou ctyruhelniky a neprotinaji se. Stacilo by mi, jak rozhodnout zda je jedna plocha pred druhou
Diky
http://www.uppic.com/do.php?img=105610
Naposledy upravil Jarda9 dne 16. prosinec 2013, 07:03:14, celkově upraveno 2 krát |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 16. prosinec 2013, 00:27:54 Předmět: |
|
|
Spočti vzdálenost mezi nejvzdálenějším bodem čtyřúhelníku od kamery, ke kameře. Pak proveď sort (např. quicksort) a je hotovo.
Dnes jsou však lepší způsoby na Order-Independent-Transparency. _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
Jarda9
Založen: 15. 12. 2013 Příspěvky: 2
|
Zaslal: 16. prosinec 2013, 03:22:34 Předmět: |
|
|
Toto nefunguje, je potreba vice sofistikovany algoritmus. Toto by fungovalo, jen kdyby byly plochy rovnobezne, ale ony nejsou |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 16. prosinec 2013, 09:32:29 Předmět: |
|
|
Urcite to vyriesis pomocou http://en.wikipedia.org/wiki/Binary_space_partitioning. Ale mozno je to prilis komplikovane?
Postup, ktory navrhol Vilem, vskutku nebude fungovat
Kontrapriklad:
kód: |
A /
| / Cam
| /
/ |
/ |
/ C
B
|
Obdlzniky A i C maju vsetky body menej vzdialene od kamery nez najvzdialenejsi bod obdlznika B. Nijak si si nepomohol. _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 16. prosinec 2013, 10:35:31 Předmět: |
|
|
Ráno mi to pak došlo že toto nebude obecně fungovat, a bez řezání to nepůjde...
Mimochodem, za odkazem máš tečku tak to nevede nikam - fixed link je http://en.wikipedia.org/wiki/Binary_space_partitioning _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 18. prosinec 2013, 09:38:19 Předmět: |
|
|
U BSP si musíš uvědomit, že budeš muset nakonec řešit T-junctions, je dobré zvolit rozumnou heuristiku (velké polygony nejdřív; nejen minimalizovat řezy, ale také balancovat,
aby ti to doběhlo v rozumné době).
Taky budeš muset použít epsilon, aby se ti to nezackyklilo kvůli roundoff chybám.
Nemusíš řezat jenom rovinami, které tvoří polygony. Já řežu i rovinami xy, xz, yz na pár bodech zhruba uprostřed aktuální množiny v krajových bodech polygonů, pokud po řezu zůstanou polygony na obou stranách.
Zadruhé bude to fungovat jen pro statické objekty (Unreal 1 myslím updatoval BSP dynamicky pro pohyblivé objekty (výtahy, dveře), ale to byly hodně lowpoly brushe a bylo to hlavně kvůli optimalizaci viditelnosti, protože používal scanline visibility)
Mimochodem painter's algorithm je IMHO nejméně zajímavá vlastnost BSP stromů.
EDIT: pokud se rozhodneš pro preprocessing pomocí BSP, bylo by dobré mít při řezání vertex hash, tzn. něco, co vrací nearest neighbor pro každý nový vertex. Pokud budou do nějakého minimálního epsilon, použij bod z hashe, jinak přidej nový. |
|
Návrat nahoru |
|
 |
|