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

Index Bufferis krustinju gridam

 
dev.gamez.lv Forum Index -> Matemātika un fizika
View previous topic :: View next topic  
Author Message
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Fri Aug 10, 2007 10:58 am    Post subject: Index Bufferis krustinju gridam

Vai uz aatro kaads nezin visparpielietotu algoritmu shada tipa (bilde) http://img262.imageshack.us/my.php?image=gridkrustinjuav9.png
grida index buffera genereeshanai? Ar triangle list. Paldies.
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Aug 10, 2007 11:10 am    Post subject:

Kas tur jāzin? Vienkāršs dubults cikls - tb divi cikli viens iekš otra (vienu par X, otru pa Y asi), kurā iekšā ģenerē indeksa bufera daļu priekš vienas mazās šūnas.
A kā precīzi to uzģenerēt var pateikt tikai tad, kad zin kādā kārtībā tev virsotnes ir saliktas vertex bufferī.

Vispārīgā gadījumā:
vertex buferis:
Code:
D E
 C
A B

index buferis:
Code:
ABC BEC EDC DAC
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Fri Aug 10, 2007 11:34 am    Post subject:

Tur taa probleema kaa dabuut rokaa pareizo vertexi. Man vertex buferii ir visas rindas peec kaartas.
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Aug 10, 2007 12:13 pm    Post subject:

Nu ja A vertexim ir pozīcija X vertex bufferī, un vienā rindā ir W vertexi, un rindas iet no apakšas uz augšu, tad jau elementāri:
B verteksis = X + 1
C vertexis = X + W
D vertexis = X + W + W-1
E vertexis = X + W + W-1 + 1

Parasti jau 2d masīvs tiek realizēts datorā kā 1d row-major masīvs: http://en.wikipedia.org/wiki/Array#Multi-dimensional_arrays
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Fri Aug 10, 2007 1:05 pm    Post subject:

Nu jaa, bet tas ko tu paraadi ir masiivam kam elementu skaits rindaa nemainaas. Krustinju gridam vinaa rindaa ir X elementi, otraa X-1 Smile Un, jaa, es lietoju 1D masiivu (bez shaubaam xD) Es meeginaasu kaut kaa sadabuut ciklaa to elementu skaita "switchosanos"...
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Aug 10, 2007 1:53 pm    Post subject:

Edit: ŠIS POSTS IR AR NEPAREIZĀM FORMULĀM. Pareizas ir nākamajā postā

Kāpēc W-1 nevis W/2. Jo es tagad tā padomāju, ka man bij nepareizi - arī kautkādu mistisku W-1 izraku. Pareizās formulas ir šādas:
B verteksis = X + 1
C vertexis = X + W
D vertexis = X + W + W/2
E vertexis = X + W + W/2 + 1

Skaties:
Piemēram - C verteksis ir nākamjā rindā no A verekša, un A rindā ir W elementi. Tāpēc C = A + W.
Taču D verteksis ir aiznākamjā rindā no A vertekša, tāpēc ir jāpieskaita A rindā esošie verekši - W, un aiznākamajā rindā esošie vertekši - W/2. Kopā: D = A + W + W/2.
utt..

Ja vēl joprojām netici. Tad paņem mazu piemēru:
Code:
6 7 8 9
 4   5
0 1 2 3

Tādā kārtībā tev tie vertekši ir vertex buferī, vai ne? Tātad W=4.
Tātad, lai uzzīmētu pirmo rūtiņu, pēc manām formulām iznāk:
A = 0
B = A+1 = 0+1 = 1
C = A+W = 0+4 = 4
D = A+W+W/2 = 0+4+2 = 6
E = A+W+W/2+1 = 0+4+2+1 = 7
Indeks buferis: ABC BEC EDC DAC = 014 174 764 604. Ir pareizi?


Last edited by bubu on Fri Aug 10, 2007 2:05 pm; edited 1 time in total
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 Aug 10, 2007 2:04 pm    Post subject:

Ai tas viss ir nepareizi. Tas strādā tikai pirmajai rūtiņai rindā..

Pavisam pareizās formulas ir šādas :)
A verteksis = Y + 2*X
B verteksis = Y + 2*X + 1
C vertexis = Y + W + X
D vertexis = Y + W + W/2 + 2*X
E vertexis = Y + W + W/2 + 2*X + 1

Kur Y un X ir rūtiņas numurs attiecīgi pa vertikāli un horizontāli.

Piemērs:
Code:
 9 10 11 12 13 14
  6     7     8
 0  1  2  3  4  5

W=6.

Tātad, lai uzzīmētu trešo rūtiņu, pēc manām formulām iznāk (X=2, Y=0):
A = Y+2*X=0+4=4
B = Y+2*X+1=0+4+1=5
C = Y+W+X=0+6+2=8
D = Y+W+W/2+2*X=0+6+3+4=13
E = Y+W+W/2+2*X+1=0+6+3+4+1=14

Galvenais ir ir izmantot faktu, ka pāra rindā (tur kur ir rūtiņas apakšējā mala ar A un B verteksu), nākamās rindas sākums ir +W, bet aiznākamās +W+W/2.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Fri Aug 10, 2007 4:27 pm    Post subject:

Paldies jau atkal visu varenajam bubu Very Happy Paldies ka ziedoji savu laiku Smile
Back to top
View user's profile
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Tue Aug 14, 2007 9:09 pm    Post subject:

Kaa pareizi vajadzeetu reekinaat normaaljus shaadam gridam? Ar vnk gridu man izdevaas uzrakstiit loti labu genereeshanas algoritmu, bet kkaa neizdodas piemerot vinju shaadam "variantam"...
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Aug 14, 2007 9:58 pm    Post subject:

Normāli tev jārēķina tieši tāpat kā jebkurai citai plankei: N = norm(A) x norm(B), kur A un B ir jebkuri divi nesakrītoši vektori dotajā plaknē, un x apzīmē vektoriālo reizinājumu, un norm(Y) atgriež normalizētu vektoru no Y vektora.

Tavā gadījumā pilnīgi pietiek par A paņemt vienu režģa malu, bet par B otru režģa malu.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Tue Aug 14, 2007 11:52 pm    Post subject:

patiesiibaa vins nav rezgis bet tur ir vesels grids ar rezgiem un turklaat ar height map'u (bildee tas nav iesleegts vnk) Razz
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Wed Aug 15, 2007 12:02 am    Post subject:

Tādas aizdomas man jau bij, par to height mapu. Pats nesen taisīju liela terraina renderēšanu no heightmapa. Un tavi jautājumi dikti līdzīgi izkalausījās tiem pašiem, par kuriem es biju jau domājis kādu laiciņu atpakaļ.

A par normālēm priekš heightmapa - ja tu negribi asas pārejas uz poligoniem, tad katrai virsotnei sasummē visas normāles kopā, kuras dod katrs trijstūris, kuram šī virsotne pieder. Un tad izdali rezultējošo vektoru ar summēto normāļu skaitu. Gan jau tu šo "fīču" zināji, bet nu gan kādam citam varbūt noderēs, lasot šo topiku.
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Matemātika un fizika All times are GMT + 2 Hours
Page 1 of 1

 
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