Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: .Obj exporttaus: polygonit kolmioiksi

kayttaja-3842 [21.05.2008 22:38:22]

#

Joo elikkäs, olen tehnyt nytten oman modelli formaatin, joka tukee tosin tällä hetkellä vain piirron. Eli siis vertexien sijainnit ja sitten kolmiot ja kolmioihin määritettyt vertexit. Eli pelkän datan jota objektin renderöimiseen nyt tarvitaan.

Eli nytten se on valmis, mutta en ole vielä tehnyt mitään erikoista editoria sille, joten olisi kiva jos esim. jostain helposta muusta modelli formaatista voisi exportata minun modelli fromaattiin sopivat modellit.

Noh ajattelin, että helppo ja sopiva formaatti voisi olla .obj. Noh tein exportterin ja aloin exporratin ekan yksinkertasen .obj. Noh exporttaus toimi loistavasti. Sitten otin toisen filun ja koitin exportata, mutta huomasinkin että .obj ei sisälläkkään pelkästään triangle(kolmio) piirtoja. Vaan siellä voi olla tyyliin

f 1 2 3 4
f 1 2 3 4 5
f 3 4 1 3 6 3

...eli ongelmahan on, että jos piirto ei tapahdu pelkästään kolmioina niin, exporttaus ei onnistu. :(
Eli mikä avuksi? Olisiko esim. olemassa ohjelmaa joka muuttaa .obj kaikki f määritteet pelkästään kolmioiksi. Eli jos sielä nytten on esim. niitä neliö piirtoja niin se softa osais kääntää ne kolmio piirroiksi ja kirjottaisi uuden obj.

Koittakaa saada selkoo... :D

Kiitosta.

Metabolix [22.05.2008 02:26:32]

#

Ehkä suositeltavin ratkaisu olisi tehdä muunnos jo mallinnusohjelman puolella, useimmat osaavat nimittäin tuon tehdä (etsi sanaa triangulize tms.).

Jos haluat tehdä muunnoksen omassa ohjelmassasi, suhteellisen helppoja algoritmeja on kyllä. Jos polygonit ovat varmasti kuperia (eli kaikki kulmat ovat alle 180 astetta), polygonin 123456 voi jakaa suoraan järjestyksessä kolmioiksi, joilla on yhteinen kärki: 123, 134, 145, 156. Voit todeta tämän paperilla.

Koverat kulmat mutkistavat asioita. On kuitenkin aina selvää, että polygonissa on myös kuperia kulmia (tylppiä tai teräviä), ja tämän nojalla voidaan esittää seuraava algoritmi: kun kulmia > 3, etsitään kolmesta peräkkäisestä kulmapisteestä muodostuva kulma BAC, jolle (AB × AC) · n > 0, lisätään kolmiolistaan ABC ja poistetaan polygonista kulma A. Tässä × tarkoittaa ristituloa, · pistetuloa ja n polygonin normaalia (jonka voi aluksi määrittää vaikkapa parin mielivaltaisen verteksin mukaan ristitulon avulla). Kulmassa on luonnollisesti keskimmäisenä kulman kärki, ensimmäisenä oikea kylki ja toisena vasen kylki. Jokaisella kierroksella polygonista vähenee yksi kulma, kunnes jäljellä on vain kolmioita.

kayttaja-3842 [25.05.2008 00:34:00]

#

Hmm, joo tuon ekan helpon 123, 134, 145... jne jne jutun sain tehtyä, mutta tuo koverien kulmien laskeminen ei ihan kolahda kaaliin. :S

Vastaus

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

Tietoa sivustosta