Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: .OBJ tiedoston kanssa ongelma

Sivun loppuun

tneva82 [16.02.2009 11:28:15]

#

Eli tein yksinkertaisen avaruusalus wannaben blenderillä ja exporttasin obj tiedostoksi saadakseni testimateriaalia .obj parserilleni. Lopussa oli kuiteskin kohta mistä en ymmärtänyt miten se pitäisi tulkita.

Eli alkuun tulee oikein v, vt, vn ja f v/vt/vn v/vt/vn /v/vt/vn rivit. Eli tähän tyyliin:

v 0.807430 -0.467906 -24.000000
v 4.000000 -0.999999 23.999998
v -4.000001 -0.999999 23.999994
vt 1.000000 1.000000
vt 0.140849 0.514534
vt 0.096747 0.509678
vn 0.943519 -0.330395 -0.024726
vn 0.934171 -0.187597 -0.303531
vn 0.943519 0.125651 -0.306568
f 355/1/9 350/2/9 339/3/9
f 350/1/10 355/2/10 354/3/10
f 340/1/11 354/2/11 355/3/11

So far so good. Mutta sitten:

f 103 133
f 103 104
f 104 105

Mitäs faceja nämä on? 3d malli jonka exporttauksessa valittiin että blender tekisi kaikista polygoneista kolmioita joten mitä nämä ovat? Jätin nuo pois ja laiva kyllä tulee esiin mutta toinen laita jotenkin välkkyy. Liekkö noiden puute(35 kipaletta) syy vaikko piirtorutiinissa jotain häikkää. Muut arvot näyttävät kyllä pelittävän.

pipo [16.02.2009 16:07:11]

#

Teikkö itte parserin? saako sitä kattoa?
Ootko varma ettei noi ole edgejä.

tneva82 [16.02.2009 21:19:06]

#

En tiedä mitä ne on. Sitähän minä tässä ihmettelen että mitä ne ovat ja miten niihin pitäisi reagoida. Tein siis mallin, exporttasin .obj tiedostoksi ja kas! Nuo f xxx xxx rivit olivat siellä viimeisinä. Ja nyt haluaisin tietää miten parserini pitäisi reagoida niihin.

(ja tuo välkkymisongelma ratkesi. Eli nyt kaipaisin lähinnä tietoa mitä nuo eri muodossa olevat f:t ovat. Ja miksei niille voitu keksiä omaa kirjainta :-/)

pipo [16.02.2009 23:16:06]

#

Edge eli reuna. Neliössä on neljä reunaa ja kuutiossa 12. Kokeile semmosta että teet blenderillä planen josta poistat kaksi verteksiä. Eksporttaat tämän 3d-mallin (joka siis sisältää 2 verteksiä ja yhden reunan niiden välissä) ja annat sen parserille. Tuleeko silloin pelkkä yksi face, jolla on kaksi indeksiä. Kokeile myös samaa tekemättä polygoneista kolmioita.

tneva82 [17.02.2009 06:47:56]

#

Hum. Niitähän ne näyttäisi olevan mutta miksi nuo olisi aluksen obj tiedostossa? Se kuiteskin koostuu kuutiosta jota olen vain levennellyt ja muokannu. Noh ei se ulkonäkö tunnu muuttuvan vaikka poistan mokomat häiritsemästä. Sekoittavat vain parserini jokatapauksessa.

pipo [17.02.2009 10:12:04]

#

Ehkä Bee ei löytänyt kyseisille kolmioille kolmatta pistettä. Miten kävi jos painaa Remove Doubles . Varmaan tiiätkin. Eivätpä noi mitään haittaa, kun kahdesta pisteestä koostuvassa facessa ei ole mitään rendattavaa. vissiin.

Metabolix [17.02.2009 10:34:56]

#

pipo kirjoitti:

Eivätpä noi mitään haittaa, kun kahdesta pisteestä koostuvassa facessa ei ole mitään rendattavaa. vissiin.

Voi ne piirtää viivoina (GL_LINE). Se on yksi (harvinainen) tapa toteuttaa vaikka rautalanka tai verkkoaita.

tneva82 [17.02.2009 13:22:44]

#

pipo kirjoitti:

Ehkä Bee ei löytänyt kyseisille kolmioille kolmatta pistettä. Miten kävi jos painaa Remove Doubles . Varmaan tiiätkin. Eivätpä noi mitään haittaa, kun kahdesta pisteestä koostuvassa facessa ei ole mitään rendattavaa. vissiin.

Noh ellen keksi miten parseroida ne hiiteen tai poista käsipelillä(ratkaisu johon itse päädyin) sekoittaisi parserin pahemman kerran joten on niistä hiukan haittaa ;-)

Mutta asiasta toiseen pystyykö openGL:ssä säätämään piirtosyvyyttä? Nyt näyttää vähän hassulta kun objekti joka on viellä selvästi näkyvissä koonsa puolesta katoaa mustuuteen. Hiukan häiritsevää :-(

Metabolix [17.02.2009 15:41:37]

#

Voithan parserissa todeta, että luvut loppuvat kesken, ja jättää sillä perusteella rivin huomioimatta. Tosin OBJ-formaatin kuvauksessa mainitaan, että tuollaisia rivejä ei saisi olla, joten kyseessä on ilmeisesti virhe käyttämässäsi ohjelmassa.

Varmaan jossain kohti OpenGL:llä asetat perspektiivin eli projektiomatriisin? Kannattaa tutustua asiaankuuluvien funktioiden (glOrtho, glFrustum tai gluPerspective) toimintaan vaikka manuaalin avustuksella. Piirtosyvyyden kasvattaminen heikentää luonnollisesti myös syvyystarkistuksen tarkkuutta, joten kannattaa kasvattaa varovasti.

User137 [17.02.2009 16:15:40]

#

Mallit voi myös skaalata siihen kokoon kun haluaa. Itse oletan että luku 1 vastaa reaalimaailmassa yhtä metriä. Avaruuspeleissä ehkä fiksumpaa laittaa se vastaamaan jopa kymmentä tai sataa... Sillä on suuri merkitys kuitenkin syvyyspuskurin kanssa. 2 pintaa kun leikkaa toisensa niin tapahtuu ns. aaltoilua, joka saattaa olla häiritsevämpää suurilla luvuilla. (ei niitä auta kun testata)

pipo [17.02.2009 17:16:20]

#

tneva82 kirjoitti:

on niistä hiukan haittaa ;-)

Avaa laiva blenderillä ja tarkastele jotain ongelmallista pistettä
esim "f 103 133" (View propertyt / 3D Cursor x: 103 y: 133 / jne). Jos ei näy virhettä tai mitään häiritsevää niin voit kokeilla Remove Doublesia. Mulla löytyy niitä vähän väliä. On ollu ylikin 35 kipaletta.


Sivun alkuun

Vastaus

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

Tietoa sivustosta