Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Triangle stripin generointi

User137 [29.08.2007 01:04:12]

#

Lähtötilanne: annetaan parametrina kolmioista muodostuva 3D malli sillä ehdolla että jokainen kolmio jakaa sivun (edge) jonkun toisen kolmion kanssa. Muodostetaan triangle strip, eli jatkuva kolmiovana jostain pisteestä lähtien joka kattaa koko 3d-mallin.

Pystyykö tuota edes laskemaan kaikille malleille? Oma generaattori olis tekeillä parhaillaan... ei vaan ole mitään materiaalia apuna.

Ajattelin että kun lähtöpiste on valittu ei ole laskennassa edes rekursio tarpeen sillä 2 aiempaa verteksiä määrää aina mihin suuntaan kuljetaan.. "go with the flow".. Eli lähtöpiste olisi ainut jota kokeillaan eri arvoilla. Siksi vähän epäilyttääkin tuo ratkaisun mahdollisuus.

os [29.08.2007 11:28:58]

#

http://www.delphi3d.net/articles/viewarticle.php?article=tristrips.htm

Kaikille malleille ei pysty laskemaan yhtä yhtenäistä kolmiovanaa, varsinkaan helposti. Se, onko yhtenäistä vanaa ylipäätään olemassa, riippuu mallin rakenteesta. Tuo sivu ehdottaakin mallin jakamista suosiolla useammaksi vanaksi.

User137 kirjoitti:

Ajattelin että kun lähtöpiste on valittu ei ole laskennassa edes rekursio tarpeen sillä 2 aiempaa verteksiä määrää aina mihin suuntaan kuljetaan.. "go with the flow".. Eli lähtöpiste olisi ainut jota kokeillaan eri arvoilla. Siksi vähän epäilyttääkin tuo ratkaisun mahdollisuus.

Tämä ei pidä paikkansa. Vanan päässä olevissa kolmioissa on kaksi vapaata sivua, joten aina voi lähteä kahteen suuntaan.

Markus [29.08.2007 11:38:46]

#

Jos et saa koko mallia yhdeksi triangle stripiksi on saatava nopeusetu kyseenalainen.

Jos käytät kolmioita, voit piirtää koko mallin aina yhdellä piirtokäskyllä. Sen sijaan, jos se on jaettu N:ään triangle strippiin, tarvitset aina N piirtökäskyä.

Oikein monimutkaisissa malleissa saattaa käydä (teoriassa) pahimmillaan niin, että jokaisesta kolmiosta tulee oma triangle strip.

os [29.08.2007 11:48:36]

#

Olennaista ei varmaankaan ole piirtokäskyjen määrä, vaan kahteen kertaan käsiteltävien kolmioiden särmien/kärkien määrä. pahimmassa tapauksessa jokainen särmä käsitellään kahteen kertaan. Kolmiojonossa osa sivuista käsitellään vain kerran, joten tässä kai puhutaan parhaimmillaankin suoritusajan puolittamisesta.

Koko mielivaltaisen kolmioverkon kattavan polun löytäminen on sitäpaitsi NP-ongelma (http://en.wikipedia.org/wiki/Hamiltonian_path), joten tällaisen kolmiovanan etsimiseen ei välttämättä kannata kuluttaa aikaansa.

User137 [29.08.2007 16:31:36]

#

Kiitoksia vastauksista, huomasin vielä yhden seikan joka kaataa tämän idean kehittelyn; pinnat saattaa jakaa normaalit ja tekstuurikoordinaatit keskenään joka entisestään vaikeuttaisi generointia tai jättäisi roskaisen lopputuloksen. Lähti vaan liikkeelle kun opettelin opengl vertex arrayt ja tein matemaattisesti koko pallon yhdellä triangle stripillä... noh, aina ei voi voittaa :p

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta