.[ ČeskéHry.cz ].
OpenGL - třídění poloprůhledných ploch

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Jarda9



Založen: 15. 12. 2013
Příspěvky: 2

PříspěvekZaslal: 15. prosinec 2013, 20:46:07    Předmět: OpenGL - třídění poloprůhledných ploch Odpovědět s citátem

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



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 16. prosinec 2013, 00:27:54    Předmět: Odpovědět s citátem

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



Založen: 15. 12. 2013
Příspěvky: 2

PříspěvekZaslal: 16. prosinec 2013, 03:22:34    Předmět: Odpovědět s citátem

Toto nefunguje, je potreba vice sofistikovany algoritmus. Toto by fungovalo, jen kdyby byly plochy rovnobezne, ale ony nejsou
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



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

PříspěvekZaslal: 16. prosinec 2013, 09:32:29    Předmět: Odpovědět s citátem

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 Sad

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



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 16. prosinec 2013, 10:35:31    Předmět: Odpovědět s citátem

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



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

PříspěvekZaslal: 18. prosinec 2013, 09:38:19    Předmět: Odpovědět s citátem

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
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 -> 3D API / 3D Enginy Č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