|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: 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 ) 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? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: 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ī? ) |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Sun Nov 15, 2009 5:53 pm Post subject: |
|
Nav nemaz tik vāja tā ierīce, Quake 3 bez problēmām pavelk
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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: 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 |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: 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
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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Fri Jan 01, 2010 4:09 pm Post subject: |
|
Paldies, izmēģināšu un redzēs kā būs
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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
|
|
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
|