dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Nolasīt un parādīt obj failu bez ģeometrijas kļūdām
Goto page Previous  1, 2, 3, 4  Next
 
dev.gamez.lv Forum Index -> OpenGL
View previous topic :: View next topic  
Author Message
Vecis



Joined: 01 Jan 2007
Posts: 144

PostPosted: Sat Sep 12, 2009 2:29 pm    Post subject:

Atkal problēmas ar tekstūrām
Modeļi strādā

Bet texture mapping kā vienmēr kkas nav kā vajag


Nolasu listā visas tekstūru koordinātas (u, v, bet w ne, ja tas arī nepieciešams, ziņojiet Smile ) un listu lieku texture coords array'ā.

obj failam daļa ar tekstūru koordinātām un trijstūriem šeit:
Code:

vt 0.0000 0.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 0.0000 1.0000 0.0000
vt 1.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 0.0000 1.0000 0.0000
vt 1.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 0.0000 1.0000 0.0000
vt 1.0000 1.0000 0.0000
# 12 texture coords

g Box01
f 1/10 3/12 4/11
f 4/11 2/9 1/10
f 5/9 6/10 8/12
f 8/12 7/11 5/9
f 1/5 2/6 6/8
f 6/8 5/7 1/5
f 2/1 4/2 8/4
f 8/4 6/3 2/1
f 4/5 3/6 7/8
f 7/8 8/7 4/5
f 3/1 1/2 5/4
f 5/4 7/3 3/1
# 12 faces


Pēc tekstūru koordinātu ielādēšanas lists ko lieku klāt tex coords array izskatās tā:
Code:
list=[1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]


Code:
texcoords = array(GL_FLOAT, 2, list)


Itkā izkārtoju tekstūru koordinātas pēc kārtas attiecīgi cipariem pie trijstūriem (f vf/vt vf/vt vf/vt), bet varbūt tomēr kkas ir nepareizi? Confused
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Sep 12, 2009 3:34 pm    Post subject:

Nezinu to obj formātu, bet tekstūru koordinātes glTexCoordPointer tev jāpadod tādā pat secībā kā glVertexPointer fjai. Tb OpenGL's ņems no index bufera (to, ko padod glDrawElements fjai) skaitļus pēc kārtas, un, piemēram, ja tas ir 4, tad ņems ceturto komplektu no texcoord bufera (u/v) un vertex bufera (x/y/z).
Back to top
View user's profile Send e-mail
Vecis



Joined: 01 Jan 2007
Posts: 144

PostPosted: Sun Nov 15, 2009 5:07 pm    Post subject:

Atkal kkādas problēmas... Itkā modeļi ar nepārāk daudz trijstūriem parādās ok, bet pie 150+ (aptuveni) atkal modeļi čakarējas...
Vertex array ir GL_FLOAT
Triangle array ir GL_UNSIGNED_BYTE (Mēģināju šeit likt GL_UNSIGNED_SHORT un dažus citus, bet tad modelis neparādās vispār un python script shell rāda "type error, expected GL_UNSIGNED_BYTE", itkā tā arī varētu būt tā vaina, bet kā tad izmantot ko citu UNSIGNED_BYTE vietā, kāpēc tikai tādu ņem pretī? Confused )
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Nov 15, 2009 5:45 pm    Post subject:

Nu unsigned byte spēj norādīt tikai uz 256 vertex'iem. Un ja neko lielāku nevari attēlot, tad vai nu pārdomā, vai tev vajag mēģināt taisīt kaut kādu nextgenu uz tik nespējīgas ierīces vai arī zīmē un glabā to modeli pa daļām.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Vecis



Joined: 01 Jan 2007
Posts: 144

PostPosted: Sun Nov 15, 2009 5:53 pm    Post subject:

Nav nemaz tik vāja tā ierīce, Quake 3 bez problēmām pavelk Wink
Nu varētu pa daļām, bet neticās ka nu nekādi nevar izmantot ko citu UNSIGNED_BYTE vietā, varbūt vēl kkas cits kodā japamaina lai UNSIGNED_SHORT strādā, tikai nezinu kas...
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Nov 15, 2009 6:17 pm    Post subject:

Vecis wrote:
varbūt vēl kkas cits kodā japamaina lai UNSIGNED_SHORT strādā, tikai nezinu kas...

To ir viegli noskaidrot.
Edit->Find (un jāmeklē visu, kas apraksta vienu baitu OpenGLā, piemēram GL_UNSIGNED_BYTE vai ciparu 1)
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 15, 2009 8:16 pm    Post subject:

Varbūt attiecīgais sufikss zīmēšanas fjai. Piemēram, glDrawElementsub tas ir ub - unsigned byte.
Back to top
View user's profile Send e-mail
Vecis



Joined: 01 Jan 2007
Posts: 144

PostPosted: Mon Nov 16, 2009 8:13 pm    Post subject:

Milzīgs paldies, tikai nomainīju ub uz us un viss strādā!
Back to top
View user's profile Send e-mail
Vecis



Joined: 01 Jan 2007
Posts: 144

PostPosted: Fri Jan 01, 2010 2:44 pm    Post subject:

bubu wrote:
Nezinu to obj formātu, bet tekstūru koordinātes glTexCoordPointer tev jāpadod tādā pat secībā kā glVertexPointer fjai. Tb OpenGL's ņems no index bufera (to, ko padod glDrawElements fjai) skaitļus pēc kārtas, un, piemēram, ja tas ir 4, tad ņems ceturto komplektu no texcoord bufera (u/v) un vertex bufera (x/y/z).

Tā arī varētu būt tā problēma
Code:

f 1/3 2/4 3/7

Obj failos šķiet jāņem citi komplekti, piem. no vertices bufera pirmais, otrais un trešais, bet no texcoords - trešais, ceturtais un septītais komplekts.
Any ideas?
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Jan 01, 2010 3:48 pm    Post subject:

OpenGL'am un Direct3D indeks buferis var būt tikai viens vienīgs. Tev ir jāpārkārto virsotnes, lai tās izmantotu vienu un to pašu buferi. Pseidokodā:
Code:
vbuf = []
ibuf = []
for each vertex,normal,texcoord in faces:
  if (vertex,normal,texcoord) in vbuf:
    ibuf.append(vbuf.indexof((vertex,normal,texcoord)))
  else:
    ibuf.append(len(vbuf))
    vbuf.append((vertex, normal,texcoord))


Edit: typo ibuf->vbuf.


Last edited by bubu on Tue Jan 05, 2010 5:43 pm; edited 2 times in total
Back to top
View user's profile Send e-mail
Vecis



Joined: 01 Jan 2007
Posts: 144

PostPosted: Fri Jan 01, 2010 4:09 pm    Post subject:

Paldies, izmēģināšu un redzēs kā būs
Code:

f 1/10 3/12 4/11

Tas ir man desmitais komplekts no texcoords bufera jāpārkārto kā pirmais, divpadsmitais kā trešais un 11. kā 4. ja pareizi sapratu?
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Jan 01, 2010 4:50 pm    Post subject:

Es nezinu obj faila formātu.

Tev nav vienkāršāk paņemt kādu gatavu kodu/bibliotēku, kas to obj formātu māk ielādēt un izmantot to, vai vismaz izpētīt kā tā ielādē to obj failu?
Back to top
View user's profile Send e-mail
Vecis



Joined: 01 Jan 2007
Posts: 144

PostPosted: Tue Jan 05, 2010 3:25 pm    Post subject:

Atradu kādu loaderi bet nav īsti skaidrs kur un kā tur tiek pārkārtots...
Nu pieņemsim man ir šāds kubs no obj faila ielādēts

Code:

vertices=[[-10.0000 -10.0000 -10.0000],
[10.0000 -10.0000 -10.0000],
[-10.0000 10.0000 -10.0000],
[10.0000 10.0000 -10.0000],
[-10.0000 -10.0000 10.0000],
[10.0000 -10.0000 10.0000],
[-10.0000 10.0000 10.0000],
[10.0000 10.0000 10.0000]]
#astoņas virsotnes

texcoords=[[0.9995 0.0005 0.0005],
[0.0005 0.9995 0.9995],
[0.0005 0.9995 0.0005],
[0.0005 0.9995 0.9995],
[0.9995 0.0005 0.0005],
[0.9995 0.9995 0.0005],
[0.0005 0.9995 0.0005],
[0.0005 0.0005 0.0005],
[0.0005 0.0005 0.9995],
[0.9995 0.0005 0.9995],
[0.9995 0.9995 0.9995],
[0.0005 0.9995 0.9995],
[0.0005 0.0005 0.0005],
[0.9995 0.0005 0.0005],
[0.9995 0.9995 0.0005],
[0.0005 0.9995 0.0005],
[0.0005 0.0005 0.9995],
[0.9995 0.0005 0.9995],
[0.9995 0.9995 0.9995],
[0.0005 0.0005 0.9995],
[0.9995 0.0005 0.9995],
[0.9995 0.9995 0.9995],
[0.0005 0.0005 0.0005],
[0.9995 0.9995 0.0005]]
#24 tekstūru virsotnes

faces=[[4, 2, 1],
[1, 3, 4],
[8, 7, 5],
[5, 6, 8],
[6, 5, 1],
[1, 2, 6],
[8, 6, 2],
[2, 4, 8],
[7, 8, 4],
[4, 3, 7],
[5, 7, 3],
[3, 1, 5]]
#trijstūru "indices" (nezinu kā tulko)

texfaces=[[7, 8, 5],
[5, 6, 7],
[11, 12, 9],
[9, 10, 11],
[15, 16, 13],
[13, 14, 15],
[19, 2, 17],
[17, 18, 19],
[22, 4, 20],
[20, 21, 22],
[24, 3, 23],
[23, 1, 24]]
#tekstūru indices

Kā notiktu pārkārtošana šādā gadījumā?
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Tue Jan 05, 2010 5:30 pm    Post subject:

Quote:
Atradu kādu loaderi bet nav īsti skaidrs kur un kā tur tiek pārkārtots...

Tev tas nav vajadzīgs, kamēr tu esi apmierināts ar tā darbību.
Quote:
Kā notiktu pārkārtošana šādā gadījumā?

Ievadi datus un vai nu ej cauri debuggerī procesam, vai arī uz papīra izpildi vajadzīgās darbības.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Jan 05, 2010 5:43 pm    Post subject:

Es taču parādīju gandrīz gatavu pitona kodu, kas to dara. Ko tu no tā nesaprati?
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> OpenGL All times are GMT + 2 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 3 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group