Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Filkon
Založen: 19. 11. 2007 Příspěvky: 15
|
Zaslal: 27. listopad 2007, 18:16:56 Předmět: Octtree, view frustum |
|
|
Zdravim. Scháním nějaký informace o octtree a view frustum culling - vykresluju krajinu a potřeboval bych to aplikovat... můžete mi poradit, kde seženu nějaký informace? Byl bych rád za jakejkoliv tutoriál nebo ukázku kódu pokud možno pro DirectX a C#. (zkoušel sem googlit, ale moc nevládnu angličtinou a OpenGL v kombinaci s C++ pro mě taky není moc názorný...) Díky za každej link nebo radu... |
|
Návrat nahoru |
|
|
juroo
Založen: 28. 07. 2007 Příspěvky: 28
|
Zaslal: 27. listopad 2007, 20:41:41 Předmět: |
|
|
zdarec. imho googlis slabo V tomto pripade sa nesmies limitovat tym, ze to musi byt pre DX a C#. Vyhovorka
citace: |
OpenGL v kombinaci s C++ pro mě taky není moc názorný... |
je fakt mimo. Ked tak si najdi vseobecny popis algoritmu. Podla mna to musis pochopit aj z toho ogl a c++ inak nemas velku sancu uspiet ako programator. Aby si si nemyslel, ze ta tu chcem len vozit, tak konkretne o tejto zalezitosti nieco viem a prakticky som ju pouzival preto ak budes mat specifickejsie otazky mozes sa mi kludne ozvat na ICQ. Najskor vsak navstiv a precitaj si odkaz v hornom menu tu na CH -> NeHe -> http://nehe.ceske-hry.cz/cl_gl_octree.php pekne vseobecne, v cestine, bez jedineho OpenGl / DX prikazu. |
|
Návrat nahoru |
|
|
Peto
Založen: 01. 08. 2007 Příspěvky: 206 Bydliště: Košice
|
Zaslal: 28. listopad 2007, 07:56:56 Předmět: |
|
|
No presne toto je jedna z tych veci co by si nemal len bezducho zkoprirovat ale trochu ju aj pochopit, jednak len tak to zkopirovat asi nepojde a tiez sa ti to urcite zijde tomu chapat .
Najprv sa zameraj na frustum culling, pochop ho skus po hopuzivat, vytvor si orezove roviny, a nejaku funckiu ktora ti zisti ze ci kocka popr gula je v dohlade kamery.
Potom si najdi nieco o rekurzivnych funkciach (su to funkcie ktore volaju samy seba, cize vo vnutri funkcie Skuska(), bude prikaz Skuska();, tiez ich pochop nauc sa pouzivat a potom mozes prejst na samotne octree, princip je pomerne jednoduchy, takze by to nemal byt problem
juroo > ja jeho vyhovorku chapem, ale to naznamena ze nema googlovat s nsnazit sa to pochopit aj s OGL ... Filkon pastnem ti tu neskor kod pre frustum culling v C++ a DX, je dost si myslim prehladne napisany, urcite pochopis .. ale ten octree tak to je viac ako na dve funkcie _________________ Code or die!
|
|
Návrat nahoru |
|
|
Filkon
Založen: 19. 11. 2007 Příspěvky: 15
|
Zaslal: 28. listopad 2007, 12:21:32 Předmět: |
|
|
Já to tam zapomněl napsat - čet sem o tom nějaký info, chápu co je frustum culling, vím jak to funguje, zrovna tak teoreticky vim, jak funguje octree. Ale ta praxe prostě chybí... nedovedu si představit, jak se octree vytváří apod... Je mi jasný, že nemůžu vzít kus kódu a jenom ho připlácnout do toho svýho... |
|
Návrat nahoru |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 28. listopad 2007, 16:21:40 Předmět: |
|
|
Pokud máš terén, který se skládá ze čtverců, pak je tvorba quadtree docela jednoduchá. Všechny uzly stromu kromě listů nemusí obsahovat žádnou geometrii, jen její ohraničující čtverec pro frustrum culling. Kořen stromu ohraničuje celý terén. Jeho 4 potomci ohraničují každý jednu ze čtvrtek terénu. A tak to jde dál, až v určité úrovni zastavíš, čímž vzniknou listy a ty už obsahují příslušné trojúhelníky.
Zkus se zeptat konkrétně co nechápeš. _________________ Mám strach |
|
Návrat nahoru |
|
|
krkovicka
Založen: 24. 11. 2007 Příspěvky: 14
|
Zaslal: 28. listopad 2007, 16:50:49 Předmět: |
|
|
a co kdyz budu chtit obdelnikovou mapu, a mit cvercove elementy, takze jejich pocet na sirku a vysku bude rozdilnej a nebude delitelnej ctyrma, napr. 3x6 bude pak muset bejt koren 8x8 bez kompletniho potomstva? nebo se to resi jinak |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 28. listopad 2007, 17:07:43 Předmět: |
|
|
Já myslím, že tak.
Ale mám jiný dotaz k této problematice. Je lepší rozříznout polygon, který leží na rozhraní dvou krychlí stromu? (Mám na mysli nějaký obecnější model, ne čtvercovou síť.) Anebo je lepší ho vykreslit 2x (nebo i víckrát, když leží hodně nešikovně na rozhraní více čtverců nebo je opravdu velký) přes sebe (přičemž je depth func GL_LESS, takže se vlastně vykreslí jenom poprvé?)? Zatím to mám řešené druhým způsobem, tak by mě zajímalo, co je lepší? A nebo je ještě jiný lepší způsob kromě těchto dvou?
Díky,
frca |
|
Návrat nahoru |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1536 Bydliště: u Prahy
|
Zaslal: 28. listopad 2007, 17:21:42 Předmět: |
|
|
Zvol si nejake pravidlo pro rozhodovani, kam patri, kdyz je na hranici mezi vicema. Napr. vzdy do krychle s mensi souradnici X/Y/Z (blize pocatku). Pak je nemusis rezat ani kreslit vicekrat, ale zas potrebujes vykreslit i krychle, ktere uz nejsou videt, ale muzou byt v nich polygony zobrazene i na krychly, ktera videt ma byt. V pripade polygonu nepresahujici 2 krychle tteda vykreslujes o 1 radu krychli navic. |
|
Návrat nahoru |
|
|
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 28. listopad 2007, 17:40:20 Předmět: |
|
|
My jsme toto resili urcitym parametrem overlap (presah). Pokud krychle jeste spadla do overlapu nemusela se rezat. Pokud byla pres tak se rezala. |
|
Návrat nahoru |
|
|
kerekes
Založen: 29. 07. 2007 Příspěvky: 57
|
Zaslal: 28. listopad 2007, 18:37:09 Předmět: |
|
|
Najprv podelit s tym, ze triangle na rozhrani dat tam, kde je jeho vacsia cast. Potom po podeleni urobit druhy prechod zospodu stromu a pozvecsovat boundingboxy (resp zistit nove boundingboxy). |
|
Návrat nahoru |
|
|
Filkon
Založen: 19. 11. 2007 Příspěvky: 15
|
Zaslal: 28. listopad 2007, 19:44:23 Předmět: |
|
|
Quiark: Mám terén, kterej je tvořenej trojúhelníkovou sítí. Je to jeden mesh, kterej tvoří tu krajinu. Nerozumim tomu, co mam do toho stromu vlastně vkládat a co potom vykreslovat - frustum culling mi zjistí, jestli tu část mam ve výhledu nebo ne. Ale jak to provedu technicky, když tam mam jenom jeden mesh? Mam ho nějak rozdělit, nebo co s nim vlastně provedu? |
|
Návrat nahoru |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 28. listopad 2007, 22:43:01 Předmět: |
|
|
Aha, takže problém je v tomhle. Bohužel já neznám odpověd Snad se najde někdo jiný _________________ Mám strach |
|
Návrat nahoru |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 28. listopad 2007, 23:00:48 Předmět: |
|
|
Mesh není prakticky nic jiného než sjednocení vertex bufferu a index bufferu. Takže to můžeš udělat třeba tak, že budeš mít všechny vertexy ve vertex bufferu a pro každý list octree budeš mít index buffer do toho velkýho vertex bufferu. A jak index buffery naplníš? Jednoduše Projdeš všechny trojúhelníky v původním meshi (buď přes index buffer nebo pokud ho mesh nemá, tak přes vertex buffer) a zjistíš, do kterýho listu ten trojúhelník bude patřit a do odpovídajícího index bufferu zapíšeš jeho indexy. Takže ve výsledku budeš mít jeden vertex buffer a hromadu index bufferů. Samozřejmě to není jediný řešení. Např. můžeš ve finále index buffery sloučit do jednoho velkýho index bufferu a u každýho listu si pak pamatovat první a poslední index z index bufferu. Jsem nějakej unavenej, tak snad jsem to napsal nějak srozumitelně a dobře |
|
Návrat nahoru |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
|
Návrat nahoru |
|
|
krkovicka
Založen: 24. 11. 2007 Příspěvky: 14
|
Zaslal: 18. prosinec 2007, 14:35:30 Předmět: problem s pointry v managed C# |
|
|
zdravim,
napsal jsem si tridu, reprezentujici uzel stromu a realizoval frustum culling. Problem je nasleduji, kdyz pouzivam velky teren, radove milion uzlu, tak je inicializace neunosne dlouha. Problem je v tom, ze nemam uzel jako strukturu, ale jako tridu a inicializace objektu je mnohonasobne delsi, nez ini struktury. Jenze struktura nemuzu ukazovat na sebe sama a musi se proto zavest pointry, bohuzel dal, nez k tomuto zjisteni jsem se nedostal. nemohl by mi sem nekdo poslat ukazku struktury, ktera ma tohle osetreny? Staci uzel spojaku se settrama a gettrama na potomka.
predem diky |
|
Návrat nahoru |
|
|
|